]> git.donarmstrong.com Git - mothur.git/blobdiff - rarefactsharedcommand.cpp
modified freq parameter be a percentage of numSeqs, added catchall command - not...
[mothur.git] / rarefactsharedcommand.cpp
index b53e87dceb21cb87ec26e88828479808feddb69a..357bc8708289e37063d731315b7411c715a05f1a 100644 (file)
@@ -28,7 +28,7 @@ RareFactSharedCommand::RareFactSharedCommand(string option)  {
                
                else {
                        //valid paramters for this command
-                       string Array[] =  {"iters","label","calc","groups", "jumble","outputdir","inputdir"};
+                       string Array[] =  {"iters","freq","label","calc","groups", "jumble","outputdir","inputdir"};
                        vector<string> myArray (Array, Array+(sizeof(Array)/sizeof(string)));
                        
                        OptionParser parser(option);
@@ -84,6 +84,9 @@ RareFactSharedCommand::RareFactSharedCommand(string option)  {
                        globaldata->Groups = Groups;
                        
                        string temp;
+                       temp = validParameter.validFile(parameters, "freq", false);                     if (temp == "not found") { temp = "0.10"; }
+                       convert(temp, freq); 
+                       
                        temp = validParameter.validFile(parameters, "iters", false);                    if (temp == "not found") { temp = "1000"; }
                        convert(temp, nIters); 
                        
@@ -130,6 +133,7 @@ void RareFactSharedCommand::help(){
                m->mothurOut("The rarefaction.shared command parameters are label, iters, groups, jumble and calc.  No parameters are required.\n");
                m->mothurOut("The rarefaction command should be in the following format: \n");
                m->mothurOut("rarefaction.shared(label=yourLabel, iters=yourIters, calc=yourEstimators, jumble=yourJumble, groups=yourGroups).\n");
+               m->mothurOut("The freq parameter is used indicate when to output your data.  It is a percentage of the number of sequences.  By default it is set to 0.10, meaning 10%. \n");
                m->mothurOut("Example rarefaction.shared(label=unique-0.01-0.03,  iters=10000, groups=B-C, jumble=T, calc=sharedobserved).\n");
                m->mothurOut("The default values for iters is 1000, freq is 100, and calc is sharedobserved which calculates the shared rarefaction curve for the observed richness.\n");
                m->mothurOut("The default value for groups is all the groups in your groupfile, and jumble is true.\n");
@@ -170,6 +174,15 @@ int RareFactSharedCommand::execute(){
                input = globaldata->ginput;
                lookup = input->getSharedRAbundVectors();
                string lastLabel = lookup[0]->getLabel();
+               
+               if (m->control_pressed) { 
+                       globaldata->Groups.clear(); 
+                       for(int i=0;i<rDisplays.size();i++){    delete rDisplays[i];    }
+                       for (int i = 0; i < outputNames.size(); i++) {  remove(outputNames[i].c_str());         }
+                       for (int i = 0; i < lookup.size(); i++) {  delete lookup[i];  } 
+                       return 0;
+               }
+
 
                if (lookup.size() < 2) { 
                        m->mothurOut("I cannot run the command without at least 2 valid groups."); 
@@ -183,14 +196,20 @@ int RareFactSharedCommand::execute(){
        
                //as long as you are not at the end of the file or done wih the lines you want
                while((lookup[0] != NULL) && ((allLines == 1) || (userLabels.size() != 0))) {
+                       if (m->control_pressed) { 
+                               globaldata->Groups.clear(); 
+                               for(int i=0;i<rDisplays.size();i++){    delete rDisplays[i];    }
+                               for (int i = 0; i < outputNames.size(); i++) {  remove(outputNames[i].c_str());         }
+                               for (int i = 0; i < lookup.size(); i++) {  delete lookup[i];  } 
+                               return 0;
+                       }
                        
                        if(allLines == 1 || labels.count(lookup[0]->getLabel()) == 1){
-                               
+                               m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
                                rCurve = new Rarefact(lookup, rDisplays);
                                rCurve->getSharedCurve(freq, nIters);
                                delete rCurve;
                        
-                               m->mothurOut(lookup[0]->getLabel()); m->mothurOutEndLine();
                                processedLabels.insert(lookup[0]->getLabel());
                                userLabels.erase(lookup[0]->getLabel());
                        }
@@ -221,6 +240,13 @@ int RareFactSharedCommand::execute(){
                        lookup = input->getSharedRAbundVectors();
                }
                
+               if (m->control_pressed) { 
+                               globaldata->Groups.clear(); 
+                               for(int i=0;i<rDisplays.size();i++){    delete rDisplays[i];    }
+                               for (int i = 0; i < outputNames.size(); i++) {  remove(outputNames[i].c_str());         }
+                               return 0;
+               }
+               
                //output error messages about any remaining user labels
                set<string>::iterator it;
                bool needToRun = false;
@@ -234,6 +260,13 @@ int RareFactSharedCommand::execute(){
                        }
                }
                
+               if (m->control_pressed) { 
+                               globaldata->Groups.clear(); 
+                               for(int i=0;i<rDisplays.size();i++){    delete rDisplays[i];    }
+                               for (int i = 0; i < outputNames.size(); i++) {  remove(outputNames[i].c_str());         }
+                               return 0;
+               }
+               
                //run last label if you need to
                if (needToRun == true)  {
                        for (int i = 0; i < lookup.size(); i++) {  if (lookup[i] != NULL) {     delete lookup[i]; }  } 
@@ -251,6 +284,11 @@ int RareFactSharedCommand::execute(){
                //reset groups parameter
                globaldata->Groups.clear();  
                
+               if (m->control_pressed) { 
+                               for (int i = 0; i < outputNames.size(); i++) {  remove(outputNames[i].c_str());         }
+                               return 0;
+               }
+               
                m->mothurOutEndLine();
                m->mothurOut("Output File Names: "); m->mothurOutEndLine();
                for (int i = 0; i < outputNames.size(); i++) {  m->mothurOut(outputNames[i]); m->mothurOutEndLine();    }