]> git.donarmstrong.com Git - mothur.git/blobdiff - parsimonycommand.cpp
Added get.line command.
[mothur.git] / parsimonycommand.cpp
index 989ea120447540884daac7f4f5e5496946b86d52..fe5a1dd251899818715cb52c14ac7c73a40630b2 100644 (file)
@@ -27,6 +27,30 @@ 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]);
+                               }
+                       }
 
                }else { //user wants random distribution
                        savetmap = globaldata->gTreemap;
@@ -65,6 +89,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
@@ -164,6 +189,8 @@ int ParsimonyCommand::execute() {
                
                //reset randomTree parameter to ""
                globaldata->setRandomTree("");
+               //reset groups parameter
+               globaldata->Groups.clear();
                
                return 0;