X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=parsimonycommand.cpp;h=554d24bd93f76c94a223d33ce24159babd0f3e78;hb=d97b619c4297b1274c754d73a64792ba656b0a79;hp=534ff0b1ab940a4b9398cc457a3f03a5d1381384;hpb=692e0c1f69a78b568dc85cbdcea9fb6c189e2e6c;p=mothur.git diff --git a/parsimonycommand.cpp b/parsimonycommand.cpp index 534ff0b..554d24b 100644 --- a/parsimonycommand.cpp +++ b/parsimonycommand.cpp @@ -27,31 +27,8 @@ ParsimonyCommand::ParsimonyCommand() { openOutputFile(sumFile, outSum); distFile = globaldata->getTreeFile() + ".pdistrib"; openOutputFile(distFile, outDist); - - //if the user has not entered specific groups to analyze then do them all - if (globaldata->Groups.size() != 0) { - //check that groups are valid - for (int i = 0; i < globaldata->Groups.size(); i++) { - if (tmap->isValidGroup(globaldata->Groups[i]) != true) { - cout << globaldata->Groups[i] << " is not a valid group, and will be disregarded." << endl; - // erase the invalid group from globaldata->Groups - globaldata->Groups.erase (globaldata->Groups.begin()+i); - } - } - - //if the user only entered invalid groups - if (globaldata->Groups.size() == 0) { - cout << "When using the groups parameter you must have at least 1 valid group. I will run the command using all the groups in your groupfile." << endl; - for (int i = 0; i < tmap->namesOfGroups.size(); i++) { - globaldata->Groups.push_back(tmap->namesOfGroups[i]); - } - } - }else { - for (int i = 0; i < tmap->namesOfGroups.size(); i++) { - globaldata->Groups.push_back(tmap->namesOfGroups[i]); - } - } - + //set users groups to analyze + setGroups(); }else { //user wants random distribution savetmap = globaldata->gTreemap; getUserInput(); @@ -89,6 +66,7 @@ int ParsimonyCommand::execute() { for (int i = 0; i < T.size(); i++) { cout << "Processing tree " << i+1 << endl; userData = pars->getValues(T[i]); //userData[0] = pscore + cout << "Tree " << i+1 << " parsimony score = " << userData[0] << endl; //update uscoreFreq it = uscoreFreq.find(userData[0]); if (it == uscoreFreq.end()) {//new score @@ -312,3 +290,43 @@ void ParsimonyCommand::getUserInput() { } /***********************************************************/ +void ParsimonyCommand::setGroups() { + try { + //if the user has not entered specific groups to analyze then do them all + if (globaldata->Groups.size() != 0) { + //check that groups are valid + for (int i = 0; i < globaldata->Groups.size(); i++) { + if (tmap->isValidGroup(globaldata->Groups[i]) != true) { + cout << globaldata->Groups[i] << " is not a valid group, and will be disregarded." << endl; + // erase the invalid group from globaldata->Groups + globaldata->Groups.erase (globaldata->Groups.begin()+i); + } + } + + //if the user only entered invalid groups + if (globaldata->Groups.size() == 0) { + cout << "When using the groups parameter you must have at least 1 valid group. I will run the command using all the groups in your groupfile." << endl; + for (int i = 0; i < tmap->namesOfGroups.size(); i++) { + globaldata->Groups.push_back(tmap->namesOfGroups[i]); + } + } + + }else { + for (int i = 0; i < tmap->namesOfGroups.size(); i++) { + globaldata->Groups.push_back(tmap->namesOfGroups[i]); + } + } + } + catch(exception& e) { + cout << "Standard Error: " << e.what() << " has occurred in the ParsimonyCommand class Function setGroups. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + exit(1); + } + catch(...) { + cout << "An unknown error has occurred in the ParsimonyCommand class function setGroups. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + exit(1); + } + +} +/*****************************************************************/ + +