if (abort == true) { if (calledHelp) { return 0; } return 2; }
+ map<string, set<int> > 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<int, string> file2Group; //index in outputNames[i] -> group
for (int p = 0; p < inputFileNames.size(); p++) {
if(allLines == 1 || labels.count(order->getLabel()) == 1){
m->mothurOut(order->getLabel()); m->mothurOutEndLine();
- rCurve = new Rarefact(order, rDisplays, processors);
+ map<string, set<int> >::iterator itEndings = labelToEnds.find(order->getLabel());
+ set<int> ends;
+ if (itEndings != labelToEnds.end()) { ends = itEndings->second; }
+ rCurve = new Rarefact(order, rDisplays, processors, ends);
rCurve->getCurve(freq, nIters);
delete rCurve;
order = (input->getOrderVector(lastLabel));
m->mothurOut(order->getLabel()); m->mothurOutEndLine();
- rCurve = new Rarefact(order, rDisplays, processors);
+ map<string, set<int> >::iterator itEndings = labelToEnds.find(order->getLabel());
+ set<int> ends;
+ if (itEndings != labelToEnds.end()) { ends = itEndings->second; }
+ rCurve = new Rarefact(order, rDisplays, processors, ends);
+
rCurve->getCurve(freq, nIters);
delete rCurve;
order = (input->getOrderVector(lastLabel));
m->mothurOut(order->getLabel()); m->mothurOutEndLine();
- rCurve = new Rarefact(order, rDisplays, processors);
+ map<string, set<int> >::iterator itEndings = labelToEnds.find(order->getLabel());
+ set<int> ends;
+ if (itEndings != labelToEnds.end()) { ends = itEndings->second; }
+ rCurve = new Rarefact(order, rDisplays, processors, ends);
+
rCurve->getCurve(freq, nIters);
delete rCurve;
}
}
//**********************************************************************************************************************
-vector<string> RareFactCommand::parseSharedFile(string filename) {
+vector<string> RareFactCommand::parseSharedFile(string filename, map<string, set<int> >& label2Ends) {
try {
vector<string> filenames;
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]; }