]> git.donarmstrong.com Git - mothur.git/blobdiff - phylodiversitycommand.cpp
working on pca
[mothur.git] / phylodiversitycommand.cpp
index 1c90eca1180acc6287b0530e9c9d3e84fbea120d..a987594815b00a2e2aa40e177a794a99014bbe33 100644 (file)
@@ -24,7 +24,7 @@ vector<string> PhyloDiversityCommand::getValidParameters(){
 //**********************************************************************************************************************
 PhyloDiversityCommand::PhyloDiversityCommand(){        
        try {
-               //initialize outputTypes
+               abort = true; calledHelp = true; 
                vector<string> tempOutNames;
                outputTypes["phylodiv"] = tempOutNames;
                outputTypes["rarefy"] = tempOutNames;
@@ -62,10 +62,10 @@ vector<string> PhyloDiversityCommand::getRequiredFiles(){
 PhyloDiversityCommand::PhyloDiversityCommand(string option)  {
        try {
                globaldata = GlobalData::getInstance();
-               abort = false;
+               abort = false; calledHelp = false;   
                
                //allow user to run help
-               if(option == "help") { help(); abort = true; }
+               if(option == "help") { help(); abort = true; calledHelp = true; }
                
                else {
                        //valid paramters for this command
@@ -168,7 +168,7 @@ PhyloDiversityCommand::~PhyloDiversityCommand(){}
 int PhyloDiversityCommand::execute(){
        try {
                
-               if (abort == true) { return 0; }
+               if (abort == true) { if (calledHelp) { return 0; }  return 2;   }
                
                //incase the user had some mismatches between the tree and group files we don't want group xxx to be analyzed
                for (int i = 0; i < globaldata->Groups.size(); i++) { if (globaldata->Groups[i] == "xxx") { globaldata->Groups.erase(globaldata->Groups.begin()+i);  break; }  }
@@ -289,7 +289,7 @@ int PhyloDiversityCommand::createProcesses(vector<int>& procIters, Tree* t, map<
        try {
                #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)
                int process = 1;
-               int num = 0;
+               
                vector<int> processIDS;
                map< string, vector<float> >::iterator itSum;
                
@@ -321,7 +321,11 @@ int PhyloDiversityCommand::createProcesses(vector<int>& procIters, Tree* t, map<
                                out.close();
                                
                                exit(0);
-                       }else { m->mothurOut("unable to spawn the necessary processes."); m->mothurOutEndLine(); exit(0); }
+                       }else { 
+                               m->mothurOut("[ERROR]: unable to spawn the necessary processes."); m->mothurOutEndLine(); 
+                               for (int i = 0; i < processIDS.size(); i++) { kill (processIDS[i], SIGINT); }
+                               exit(0);
+                       }
                }
                
                driver(t, div, sumDiv, procIters[0], increment, randomLeaf, numSampledList, outCollect, outSum, true);
@@ -590,4 +594,7 @@ vector<float> PhyloDiversityCommand::calcBranchLength(Tree* t, int leaf, map< st
                exit(1);
        }
 }
-//**********************************************************************************************************************
\ No newline at end of file
+//**********************************************************************************************************************
+
+
+