]> git.donarmstrong.com Git - mothur.git/blobdiff - venncommand.cpp
sffinfo bug with flow grams right index when clipQualRight=0
[mothur.git] / venncommand.cpp
index fb0560b38d6c5659fc7ae8b88af2160e6b479191..98796b3466fcc344b5e4c990015316a5ae2a0582 100644 (file)
 //**********************************************************************************************************************
 vector<string> VennCommand::setParameters(){   
        try {
-               CommandParameter plist("list", "InputTypes", "", "", "LRSS", "LRSS", "none",false,false); parameters.push_back(plist);
-               CommandParameter pshared("shared", "InputTypes", "", "", "LRSS", "LRSS", "none",false,false); parameters.push_back(pshared);    
-               CommandParameter pgroups("groups", "String", "", "", "", "", "",false,false); parameters.push_back(pgroups);
-               CommandParameter plabel("label", "String", "", "", "", "", "",false,false); parameters.push_back(plabel);
-               CommandParameter pcalc("calc", "String", "", "", "", "", "",false,false); parameters.push_back(pcalc);
-               CommandParameter pabund("abund", "Number", "", "10", "", "", "",false,false); parameters.push_back(pabund);
-               CommandParameter pnseqs("nseqs", "Boolean", "", "F", "", "", "",false,false); parameters.push_back(pnseqs);
-               CommandParameter ppermute("permute", "Boolean", "", "F", "", "", "",false,false); parameters.push_back(ppermute);
-               CommandParameter pinputdir("inputdir", "String", "", "", "", "", "",false,false); parameters.push_back(pinputdir);
-               CommandParameter poutputdir("outputdir", "String", "", "", "", "", "",false,false); parameters.push_back(poutputdir);
+               CommandParameter plist("list", "InputTypes", "", "", "LRSS", "LRSS", "none","svg",false,false,true); parameters.push_back(plist);
+               CommandParameter pshared("shared", "InputTypes", "", "", "LRSS", "LRSS", "none","svg",false,false,true); parameters.push_back(pshared); 
+               CommandParameter pgroups("groups", "String", "", "", "", "", "","",false,false); parameters.push_back(pgroups);
+               CommandParameter plabel("label", "String", "", "", "", "", "","",false,false); parameters.push_back(plabel);
+               CommandParameter pcalc("calc", "String", "", "", "", "", "","",false,false); parameters.push_back(pcalc);
+               CommandParameter pabund("abund", "Number", "", "10", "", "", "","",false,false); parameters.push_back(pabund);
+               CommandParameter pnseqs("nseqs", "Boolean", "", "F", "", "", "","",false,false); parameters.push_back(pnseqs);
+        CommandParameter psharedotus("sharedotus", "Boolean", "", "t", "", "", "","",false,false); parameters.push_back(psharedotus);
+               CommandParameter pfontsize("fontsize", "Number", "", "24", "", "", "","",false,false); parameters.push_back(pfontsize);
+               CommandParameter ppermute("permute", "Boolean", "", "F", "", "", "","",false,false); parameters.push_back(ppermute);
+               CommandParameter pinputdir("inputdir", "String", "", "", "", "", "","",false,false); parameters.push_back(pinputdir);
+               CommandParameter poutputdir("outputdir", "String", "", "", "", "", "","",false,false); parameters.push_back(poutputdir);
                
                vector<string> myArray;
                for (int i = 0; i < parameters.size(); i++) {   myArray.push_back(parameters[i].name);          }
@@ -44,9 +46,10 @@ vector<string> VennCommand::setParameters(){
 string VennCommand::getHelpString(){   
        try {
                string helpString = "";
-               helpString += "The venn command parameters are list, shared, groups, calc, abund, nseqs, permute and label.   shared, relabund, list, rabund or sabund is required unless you have a valid current file.\n";
+               helpString += "The venn command parameters are list, shared, groups, calc, abund, nseqs, permute, sharedotus, fontsize and label.   shared, relabund, list, rabund or sabund is required unless you have a valid current file.\n";
                helpString += "The groups parameter allows you to specify which of the groups in your groupfile you would like included in your venn diagram, you may only use a maximum of 4 groups.\n";
                helpString += "The group names are separated by dashes. The label allows you to select what distance levels you would like a venn diagram created for, and are also separated by dashes.\n";
+               helpString += "The fontsize parameter allows you to adjust the font size of the picture created, default=24.\n";
                helpString += "The venn command should be in the following format: venn(groups=yourGroups, calc=yourCalcs, label=yourLabels, abund=yourAbund).\n";
                helpString += "Example venn(groups=A-B-C, calc=sharedsobs-sharedchao, abund=20).\n";
                helpString += "The default value for groups is all the groups in your groupfile up to 4, and all labels in your inputfile will be used.\n";
@@ -55,6 +58,7 @@ string VennCommand::getHelpString(){
                helpString += "The nseqs parameter will output the number of sequences represented by the otus in the picture, default=F.\n";
                helpString += "If you have more than 4 groups, the permute parameter will find all possible combos of 4 of your groups and create pictures for them, default=F.\n";
                helpString += "The only estimators available four 4 groups are sharedsobs and sharedchao.\n";
+        helpString += "The sharedotus parameter can be used with the sharedsobs calculator to get the names of the OTUs in each section of the venn diagram. Default=t.\n";
                helpString += "The venn command outputs a .svg file for each calculator you specify at each distance you choose.\n";
                helpString += "Note: No spaces between parameter labels (i.e. groups), '=' and parameters (i.e.yourGroups).\n";
                return helpString;
@@ -64,6 +68,21 @@ string VennCommand::getHelpString(){
                exit(1);
        }
 }
+//**********************************************************************************************************************
+string VennCommand::getOutputPattern(string type) {
+    try {
+        string pattern = "";
+        
+        if (type == "svg") {  pattern = "[filename],svg"; } 
+        else { m->mothurOut("[ERROR]: No definition for type " + type + " output pattern.\n"); m->control_pressed = true;  }
+        
+        return pattern;
+    }
+    catch(exception& e) {
+        m->errorOut(e, "VennCommand", "getOutputPattern");
+        exit(1);
+    }
+}
 
 //**********************************************************************************************************************
 VennCommand::VennCommand(){    
@@ -129,12 +148,12 @@ VennCommand::VennCommand(string option)  {
                        listfile = validParameter.validFile(parameters, "list", true);
                        if (listfile == "not open") { listfile = ""; abort = true; }
                        else if (listfile == "not found") { listfile = ""; }
-                       else {  format = "list"; inputfile = listfile; }
+                       else {  format = "list"; inputfile = listfile; m->setListFile(listfile); }
                        
                        sharedfile = validParameter.validFile(parameters, "shared", true);
                        if (sharedfile == "not open") { sharedfile = ""; abort = true; }        
                        else if (sharedfile == "not found") { sharedfile = ""; }
-                       else {  format = "sharedfile"; inputfile = sharedfile; }
+                       else {  format = "sharedfile"; inputfile = sharedfile; m->setSharedFile(sharedfile); }
                        
                        if ((sharedfile == "") && (listfile == "")) { 
                                //is there are current file available for any of these?
@@ -168,7 +187,7 @@ VennCommand::VennCommand(string option)  {
                        if (groups == "not found") { groups = ""; }
                        else { 
                                m->splitAtDash(groups, Groups);
-                               m->Groups = Groups;
+                               m->setGroups(Groups);
                        }
                        
                        calc = validParameter.validFile(parameters, "calc", false);                     
@@ -183,16 +202,27 @@ VennCommand::VennCommand(string option)  {
                                }
                        }
                        m->splitAtDash(calc, Estimators);
+                       if (m->inUsersGroups("citation", Estimators)) { 
+                               ValidCalculators validCalc; validCalc.printCitations(Estimators); 
+                               //remove citation from list of calcs
+                               for (int i = 0; i < Estimators.size(); i++) { if (Estimators[i] == "citation") {  Estimators.erase(Estimators.begin()+i); break; } }
+                       }
                        
                        string temp;
                        temp = validParameter.validFile(parameters, "abund", false);            if (temp == "not found") { temp = "10"; }
-                       convert(temp, abund); 
+                       m->mothurConvert(temp, abund); 
                        
                        temp = validParameter.validFile(parameters, "nseqs", false);            if (temp == "not found"){       temp = "f";                             }
                        nseqs = m->isTrue(temp); 
 
-                       temp = validParameter.validFile(parameters, "permute", false);                  if (temp == "not found"){       temp = "f";                             }
+                       temp = validParameter.validFile(parameters, "permute", false);          if (temp == "not found"){       temp = "f";                             }
                        perm = m->isTrue(temp); 
+            
+            temp = validParameter.validFile(parameters, "sharedotus", false);          if (temp == "not found"){       temp = "t";                             }
+                       sharedOtus = m->isTrue(temp); 
+                       
+                       temp = validParameter.validFile(parameters, "fontsize", false);         if (temp == "not found") { temp = "24"; }
+                       m->mothurConvert(temp, fontsize);
 
                }
                                
@@ -219,8 +249,7 @@ int VennCommand::execute(){
                                        }else if (Estimators[i] == "chao") { 
                                                vennCalculators.push_back(new Chao1());
                                        }else if (Estimators[i] == "ace") {
-                                               if(abund < 5)
-                                                       abund = 10;
+                                               if(abund < 5) { abund = 10; }
                                                vennCalculators.push_back(new Ace(abund));
                                        }
                                }
@@ -242,7 +271,7 @@ int VennCommand::execute(){
                //if the users entered no valid calculators don't execute command
                if (vennCalculators.size() == 0) { m->mothurOut("No valid calculators given, please correct."); m->mothurOutEndLine(); return 0;  }
                
-               venn = new Venn(outputDir, nseqs, inputfile); 
+               venn = new Venn(outputDir, nseqs, inputfile, fontsize, sharedOtus); 
                input = new InputData(inputfile, format);
                
                string lastLabel;
@@ -269,8 +298,8 @@ int VennCommand::execute(){
                                if (m->control_pressed) {
                                        for (int i = 0; i < vennCalculators.size(); i++) {      delete vennCalculators[i];      }
                                        for (int i = 0; i < lookup.size(); i++) {  delete lookup[i];  } 
-                                       m->Groups.clear(); delete venn; delete input;
-                                       for (int i = 0; i < outputNames.size(); i++) {  remove(outputNames[i].c_str());  }
+                                       m->clearGroups(); delete venn; delete input;
+                                       for (int i = 0; i < outputNames.size(); i++) {  m->mothurRemove(outputNames[i]);  }
                                        return 0;
                                }
 
@@ -352,8 +381,8 @@ int VennCommand::execute(){
                        
                        if (m->control_pressed) {
                                        for (int i = 0; i < vennCalculators.size(); i++) {      delete vennCalculators[i];      }
-                                       m->Groups.clear(); delete venn; delete input; 
-                                       for (int i = 0; i < outputNames.size(); i++) {  remove(outputNames[i].c_str());  }
+                                       m->clearGroups(); delete venn; delete input; 
+                                       for (int i = 0; i < outputNames.size(); i++) {  m->mothurRemove(outputNames[i]);  }
                                        return 0;
                        }
 
@@ -409,12 +438,12 @@ int VennCommand::execute(){
                
 
                        //reset groups parameter
-                       m->Groups.clear();  
+                       m->clearGroups();  
                        
                        if (m->control_pressed) {
-                                       m->Groups.clear(); delete venn; delete input;
+                                       m->clearGroups(); delete venn; delete input;
                                        for (int i = 0; i < vennCalculators.size(); i++) {      delete vennCalculators[i];      }
-                                       for (int i = 0; i < outputNames.size(); i++) {  remove(outputNames[i].c_str());  }
+                                       for (int i = 0; i < outputNames.size(); i++) {  m->mothurRemove(outputNames[i]);  }
                                        return 0;
                        }
 
@@ -426,7 +455,7 @@ int VennCommand::execute(){
                                if (m->control_pressed) {
                                        for (int i = 0; i < vennCalculators.size(); i++) {      delete vennCalculators[i];      }
                                        delete sabund; delete venn; delete input;
-                                       for (int i = 0; i < outputNames.size(); i++) {  remove(outputNames[i].c_str());  }
+                                       for (int i = 0; i < outputNames.size(); i++) {  m->mothurRemove(outputNames[i]);  }
                                        return 0;
                                }
                
@@ -467,7 +496,7 @@ int VennCommand::execute(){
                        
                        if (m->control_pressed) {
                                        for (int i = 0; i < vennCalculators.size(); i++) {      delete vennCalculators[i];      }
-                                       for (int i = 0; i < outputNames.size(); i++) {  remove(outputNames[i].c_str());  }
+                                       for (int i = 0; i < outputNames.size(); i++) {  m->mothurRemove(outputNames[i]);  }
                                        delete venn; delete input;
                                        return 0;
                        }
@@ -501,7 +530,7 @@ int VennCommand::execute(){
                        if (m->control_pressed) {
                                        delete venn; delete input;
                                        for (int i = 0; i < vennCalculators.size(); i++) {      delete vennCalculators[i];      }
-                                       for (int i = 0; i < outputNames.size(); i++) {  remove(outputNames[i].c_str());  }
+                                       for (int i = 0; i < outputNames.size(); i++) {  m->mothurRemove(outputNames[i]);  }
                                        return 0;
                        }
                }