X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=sharedcommand.cpp;h=26ba2211906fa025e3807aedf8c13ef3d913e413;hb=28d65de5f06f5b033109a3b8bbb6d3c4060914d3;hp=439cdf13101b183aebd2cb6e112e1b92ace9ee74;hpb=301b61cb98aaa4641f8701f43cf830c0fa44fac1;p=mothur.git diff --git a/sharedcommand.cpp b/sharedcommand.cpp index 439cdf1..26ba221 100644 --- a/sharedcommand.cpp +++ b/sharedcommand.cpp @@ -20,23 +20,36 @@ SharedCommand::SharedCommand(){ filename = getRootName(filename); filename = filename + "shared"; openOutputFile(filename, out); + + groupMap = globaldata->gGroupmap; + + //fill filehandles with neccessary ofstreams + int i; + ofstream* temp; + for (i=0; igetNumGroups(); i++) { + temp = new ofstream; + filehandles[groupMap->namesOfGroups[i]] = temp; + } + + //set fileroot + fileroot = getRootName(globaldata->getListFile()); + + //clears file before we start to write to it below + for (int i=0; igetNumGroups(); i++) { + remove((fileroot + groupMap->namesOfGroups[i] + ".rabund").c_str()); + } + } catch(exception& e) { - cout << "Standard Error: " << e.what() << " has occurred in the SharedCommand class Function SharedCommand. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } - catch(...) { - cout << "An unknown error has occurred in the SharedCommand class function SharedCommand. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + errorOut(e, "SharedCommand", "SharedCommand"); exit(1); } - } //********************************************************************************************************************** int SharedCommand::execute(){ try { - cout << "creating sharedfile..."; //lookup.clear(); int count = 1; string errorOff = "no error"; @@ -47,7 +60,7 @@ int SharedCommand::execute(){ input = globaldata->ginput; SharedList = globaldata->gSharedList; - SharedListVector* lastList = SharedList; + string lastLabel = SharedList->getLabel(); vector lookup; //if the users enters label "0.06" and there is no "0.06" in their file use the next lowest label. @@ -60,7 +73,10 @@ int SharedCommand::execute(){ if(globaldata->allLines == 1 || globaldata->lines.count(count) == 1 || globaldata->labels.count(SharedList->getLabel()) == 1){ + lookup = SharedList->getSharedRAbundVector(); + mothurOut(lookup[0]->getLabel() + "\t" + toString(count)); mothurOutEndLine(); + printSharedData(lookup); //prints info to the .shared file for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; } @@ -69,18 +85,24 @@ int SharedCommand::execute(){ userLines.erase(count); } - if ((anyLabelsToProcess(SharedList->getLabel(), userLabels, errorOff) == true) && (processedLabels.count(lastList->getLabel()) != 1)) { - lookup = lastList->getSharedRAbundVector(); + if ((anyLabelsToProcess(SharedList->getLabel(), userLabels, errorOff) == true) && (processedLabels.count(lastLabel) != 1)) { + delete SharedList; + SharedList = input->getSharedListVector(lastLabel); //get new list vector to process + + lookup = SharedList->getSharedRAbundVector(); + mothurOut(lookup[0]->getLabel() + "\t" + toString(count)); mothurOutEndLine(); + printSharedData(lookup); //prints info to the .shared file for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; } - processedLabels.insert(lastList->getLabel()); - userLabels.erase(lastList->getLabel()); + processedLabels.insert(SharedList->getLabel()); + userLabels.erase(SharedList->getLabel()); } - if (count != 1) { delete lastList; } - lastList = SharedList; - + + lastLabel = SharedList->getLabel(); + + delete SharedList; SharedList = input->getSharedListVector(); //get new list vector to process count++; @@ -90,40 +112,40 @@ int SharedCommand::execute(){ set::iterator it; bool needToRun = false; for (it = userLabels.begin(); it != userLabels.end(); it++) { - //cout << "Your file does not include the label "<< *it; - if (processedLabels.count(lastList->getLabel()) != 1) { - //cout << ". I will use " << lastList->getLabel() << "." << endl; + if (processedLabels.count(lastLabel) != 1) { needToRun = true; - }else { - //cout << ". Please refer to " << lastList->getLabel() << "." << endl; } } //run last line if you need to if (needToRun == true) { - lookup = lastList->getSharedRAbundVector(); + delete SharedList; + SharedList = input->getSharedListVector(lastLabel); //get new list vector to process + + lookup = SharedList->getSharedRAbundVector(); + mothurOut(lookup[0]->getLabel() + "\t" + toString(count)); mothurOutEndLine(); + printSharedData(lookup); //prints info to the .shared file for (int i = 0; i < lookup.size(); i++) { delete lookup[i]; } - + delete SharedList; } - delete lastList; globaldata->gSharedList = NULL; + globaldata->gSharedList = NULL; delete read; out.close(); - cout << "complete." << endl; + for (it3 = filehandles.begin(); it3 != filehandles.end(); it3++) { + delete it3->second; + } + + return 0; } catch(exception& e) { - cout << "Standard Error: " << e.what() << " has occurred in the SharedCommand class Function execute. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } - catch(...) { - cout << "An unknown error has occurred in the SharedCommand class function execute. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + errorOut(e, "SharedCommand", "execute"); exit(1); } - } //********************************************************************************************************************** void SharedCommand::printSharedData(vector thislookup) { @@ -133,18 +155,18 @@ void SharedCommand::printSharedData(vector thislookup) { for (int i = 0; i < thislookup.size(); i++) { out << thislookup[i]->getLabel() << '\t' << thislookup[i]->getGroup() << '\t'; thislookup[i]->print(out); + + openOutputFileAppend(fileroot + thislookup[i]->getGroup() + ".rabund", *(filehandles[thislookup[i]->getGroup()])); + (*filehandles[thislookup[i]->getGroup()]) << thislookup[i]->getLabel() << '\t' << thislookup[i]->getGroup() << '\t'; + thislookup[i]->print(*(filehandles[thislookup[i]->getGroup()])); + (*(filehandles[thislookup[i]->getGroup()])).close(); } } catch(exception& e) { - cout << "Standard Error: " << e.what() << " has occurred in the SharedCommand class Function printSharedData. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } - catch(...) { - cout << "An unknown error has occurred in the SharedCommand class function printSharedData. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + errorOut(e, "SharedCommand", "printSharedData"); exit(1); } - } //**********************************************************************************************************************