//********************************************************************************************************************** vector<string> RareFactCommand::parseSharedFile(string filename, map<string, set<int> >& label2Ends) { try { vector<string> filenames; map<string, ofstream*> filehandles; map<string, ofstream*>::iterator it3; input = new InputData(filename, "sharedfile"); vector<SharedRAbundVector*> lookup = input->getSharedRAbundVectors(); string sharedFileRoot = m->getRootName(filename); //clears file before we start to write to it below for (int i=0; i<lookup.size(); i++) { m->mothurRemove((sharedFileRoot + lookup[i]->getGroup() + ".rabund")); filenames.push_back((sharedFileRoot + lookup[i]->getGroup() + ".rabund")); } ofstream* temp; for (int i=0; i<lookup.size(); i++) { temp = new ofstream; filehandles[lookup[i]->getGroup()] = temp; groups.push_back(lookup[i]->getGroup()); } while(lookup[0] != NULL) { for (int i = 0; i < lookup.size(); i++) { RAbundVector rav = lookup[i]->getRAbundVector(); 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]; } lookup = input->getSharedRAbundVectors(); } //free memory for (it3 = filehandles.begin(); it3 != filehandles.end(); it3++) { delete it3->second; } delete input; m->clearGroups(); return filenames; } catch(exception& e) { m->errorOut(e, "RareFactCommand", "parseSharedFile"); exit(1); } }
TEST(Test_Container_SharedRabundVector, GetRabundVector) { vector<int> abunds(10, 10); SharedRAbundVector temp(abunds); EXPECT_EQ(temp.getNumBins(), 10); EXPECT_EQ(temp.getNumSeqs(), 100); EXPECT_EQ(temp.getMaxRank(), 10); RAbundVector rabund = temp.getRAbundVector(); EXPECT_EQ(rabund.getNumBins(), 10); EXPECT_EQ(rabund.getNumSeqs(), 100); EXPECT_EQ(rabund.getMaxRank(), 10); }