X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=blobdiff_plain;f=venncommand.cpp;h=98796b3466fcc344b5e4c990015316a5ae2a0582;hp=6d4c2a0616880aee92f5fec430f63df51606e929;hb=1a20e24ee786195ab0e1cccd4f5aede7a88f3f4e;hpb=7bf9a81bba76538ecaf351ae208de3da4bf1b6dd diff --git a/venncommand.cpp b/venncommand.cpp index 6d4c2a0..98796b3 100644 --- a/venncommand.cpp +++ b/venncommand.cpp @@ -20,16 +20,18 @@ //********************************************************************************************************************** vector 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 myArray; for (int i = 0; i < parameters.size(); i++) { myArray.push_back(parameters[i].name); } @@ -44,9 +46,10 @@ vector 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(){ @@ -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); @@ -191,13 +210,19 @@ VennCommand::VennCommand(string option) { 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); } @@ -224,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)); } } @@ -247,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; @@ -274,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; } @@ -357,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; } @@ -414,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; } @@ -431,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; } @@ -472,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; } @@ -506,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; } }