X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=rarefactcommand.cpp;h=0fdd0798e2cdda014a6cc568d3a1c895362c3158;hb=e0ce7cbc93d7d2fbb753ca694182db092a0ea0e7;hp=b3d359ca53aa31fa10fe209cf0cd52946c2fd79b;hpb=a5d3e10e24e503483d8e85b54f0fd34b9308d31b;p=mothur.git diff --git a/rarefactcommand.cpp b/rarefactcommand.cpp index b3d359c..0fdd079 100644 --- a/rarefactcommand.cpp +++ b/rarefactcommand.cpp @@ -282,10 +282,11 @@ int RareFactCommand::execute(){ if (abort == true) { if (calledHelp) { return 0; } return 2; } + map > labelToEnds; if ((format != "sharedfile")) { inputFileNames.push_back(inputfile); } - else { inputFileNames = parseSharedFile(sharedfile); format = "rabund"; } - - if (m->control_pressed) { return 0; } + else { inputFileNames = parseSharedFile(sharedfile, labelToEnds); format = "rabund"; } + + if (m->control_pressed) { return 0; } map file2Group; //index in outputNames[i] -> group for (int p = 0; p < inputFileNames.size(); p++) { @@ -378,7 +379,10 @@ int RareFactCommand::execute(){ if(allLines == 1 || labels.count(order->getLabel()) == 1){ m->mothurOut(order->getLabel()); m->mothurOutEndLine(); - rCurve = new Rarefact(order, rDisplays, processors); + map >::iterator itEndings = labelToEnds.find(order->getLabel()); + set ends; + if (itEndings != labelToEnds.end()) { ends = itEndings->second; } + rCurve = new Rarefact(order, rDisplays, processors, ends); rCurve->getCurve(freq, nIters); delete rCurve; @@ -393,7 +397,11 @@ int RareFactCommand::execute(){ order = (input->getOrderVector(lastLabel)); m->mothurOut(order->getLabel()); m->mothurOutEndLine(); - rCurve = new Rarefact(order, rDisplays, processors); + map >::iterator itEndings = labelToEnds.find(order->getLabel()); + set ends; + if (itEndings != labelToEnds.end()) { ends = itEndings->second; } + rCurve = new Rarefact(order, rDisplays, processors, ends); + rCurve->getCurve(freq, nIters); delete rCurve; @@ -433,7 +441,11 @@ int RareFactCommand::execute(){ order = (input->getOrderVector(lastLabel)); m->mothurOut(order->getLabel()); m->mothurOutEndLine(); - rCurve = new Rarefact(order, rDisplays, processors); + map >::iterator itEndings = labelToEnds.find(order->getLabel()); + set ends; + if (itEndings != labelToEnds.end()) { ends = itEndings->second; } + rCurve = new Rarefact(order, rDisplays, processors, ends); + rCurve->getCurve(freq, nIters); delete rCurve; @@ -625,7 +637,7 @@ vector RareFactCommand::createGroupFile(vector& outputNames, map } } //********************************************************************************************************************** -vector RareFactCommand::parseSharedFile(string filename) { +vector RareFactCommand::parseSharedFile(string filename, map >& label2Ends) { try { vector filenames; @@ -657,6 +669,7 @@ vector RareFactCommand::parseSharedFile(string filename) { m->openOutputFileAppend(sharedFileRoot + lookup[i]->getGroup() + ".rabund", *(filehandles[lookup[i]->getGroup()])); rav.print(*(filehandles[lookup[i]->getGroup()])); (*(filehandles[lookup[i]->getGroup()])).close(); + label2Ends[lookup[i]->getLabel()].insert(rav.getNumSeqs()); } for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; }