X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=phylotypecommand.cpp;h=e6dace8b796103804c16a4de86104cff0b05da4f;hb=19fcbbdba99658f5eca244803280f9ee7f9f6607;hp=c3aee4719859a4921ece77b25e7cf5dfe69d9aec;hpb=348de0f8b17d84ede77081dcf67bd6ef43496677;p=mothur.git diff --git a/phylotypecommand.cpp b/phylotypecommand.cpp index c3aee47..e6dace8 100644 --- a/phylotypecommand.cpp +++ b/phylotypecommand.cpp @@ -14,51 +14,58 @@ #include "sabundvector.hpp" //********************************************************************************************************************** -vector PhylotypeCommand::getValidParameters(){ +vector PhylotypeCommand::setParameters(){ try { - string Array[] = {"taxonomy","cutoff","label","name","outputdir","inputdir"}; - vector myArray (Array, Array+(sizeof(Array)/sizeof(string))); + CommandParameter ptaxonomy("taxonomy", "InputTypes", "", "", "none", "none", "none",false,true); parameters.push_back(ptaxonomy); + CommandParameter pname("name", "InputTypes", "", "", "none", "none", "none",false,false); parameters.push_back(pname); + CommandParameter pcutoff("cutoff", "Number", "", "-1", "", "", "",false,false); parameters.push_back(pcutoff); + CommandParameter plabel("label", "String", "", "", "", "", "",false,false); parameters.push_back(plabel); + 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); } return myArray; } catch(exception& e) { - m->errorOut(e, "PhylotypeCommand", "getValidParameters"); - exit(1); - } -} -//********************************************************************************************************************** -PhylotypeCommand::PhylotypeCommand(){ - try { - abort = true; calledHelp = true; - vector tempOutNames; - outputTypes["list"] = tempOutNames; - outputTypes["sabund"] = tempOutNames; - outputTypes["rabund"] = tempOutNames; - } - catch(exception& e) { - m->errorOut(e, "PhylotypeCommand", "PhylotypeCommand"); + m->errorOut(e, "PhylotypeCommand", "setParameters"); exit(1); } } //********************************************************************************************************************** -vector PhylotypeCommand::getRequiredParameters(){ +string PhylotypeCommand::getHelpString(){ try { - string Array[] = {"taxonomy"}; - vector myArray (Array, Array+(sizeof(Array)/sizeof(string))); - return myArray; + string helpString = ""; + helpString += "The phylotype command reads a taxonomy file and outputs a .list, .rabund and .sabund file. \n"; + helpString += "The phylotype command parameter options are taxonomy, cutoff and label. The taxonomy parameter is required.\n"; + helpString += "The cutoff parameter allows you to specify the level you want to stop at. The default is the highest level in your taxonomy file. \n"; + helpString += "For example: taxonomy = Bacteria;Bacteroidetes-Chlorobi;Bacteroidetes; - cutoff=2, would truncate the taxonomy to Bacteria;Bacteroidetes-Chlorobi; \n"; + helpString += "For the cutoff parameter levels count up from the root of the phylotree. This enables you to look at the grouping down to a specific resolution, say the genus level.\n"; + helpString += "The label parameter allows you to specify which level you would like, and are separated by dashes. The default all levels in your taxonomy file. \n"; + helpString += "For the label parameter, levels count down from the root to keep the output similiar to mothur's other commands which report information from finer resolution to coarser resolutions.\n"; + helpString += "The phylotype command should be in the following format: \n"; + helpString += "phylotype(taxonomy=yourTaxonomyFile, cutoff=yourCutoff, label=yourLabels) \n"; + helpString += "Eaxample: phylotype(taxonomy=amazon.taxonomy, cutoff=5, label=1-3-5).\n"; + return helpString; } catch(exception& e) { - m->errorOut(e, "PhylotypeCommand", "getRequiredParameters"); + m->errorOut(e, "PhylotypeCommand", "getHelpString"); exit(1); } } + //********************************************************************************************************************** -vector PhylotypeCommand::getRequiredFiles(){ +PhylotypeCommand::PhylotypeCommand(){ try { - vector myArray; - return myArray; + abort = true; calledHelp = true; + setParameters(); + vector tempOutNames; + outputTypes["list"] = tempOutNames; + outputTypes["sabund"] = tempOutNames; + outputTypes["rabund"] = tempOutNames; } catch(exception& e) { - m->errorOut(e, "PhylotypeCommand", "getRequiredFiles"); + m->errorOut(e, "PhylotypeCommand", "PhylotypeCommand"); exit(1); } } @@ -69,12 +76,10 @@ PhylotypeCommand::PhylotypeCommand(string option) { //allow user to run help if(option == "help") { help(); abort = true; calledHelp = true; } + else if(option == "citation") { citation(); abort = true; calledHelp = true;} else { - - //valid paramters for this command - string AlignArray[] = {"taxonomy","cutoff","label","name","outputdir","inputdir"}; - vector myArray (AlignArray, AlignArray+(sizeof(AlignArray)/sizeof(string))); + vector myArray = setParameters(); OptionParser parser(option); map parameters = parser.getParameters(); @@ -117,15 +122,19 @@ PhylotypeCommand::PhylotypeCommand(string option) { taxonomyFileName = validParameter.validFile(parameters, "taxonomy", true); if (taxonomyFileName == "not found") { - m->mothurOut("taxonomy is a required parameter for the phylotype command."); - m->mothurOutEndLine(); - abort = true; + taxonomyFileName = m->getTaxonomyFile(); + if (taxonomyFileName != "") { m->mothurOut("Using " + taxonomyFileName + " as input file for the taxonomy parameter."); m->mothurOutEndLine(); } + else { + m->mothurOut("No valid current files. taxonomy is a required parameter."); m->mothurOutEndLine(); + abort = true; + } }else if (taxonomyFileName == "not open") { abort = true; } + else { m->setTaxonomyFile(taxonomyFileName); } namefile = validParameter.validFile(parameters, "name", true); if (namefile == "not open") { abort = true; } else if (namefile == "not found") { namefile = ""; } - else { readNamesFile(); } + else { readNamesFile(); m->setNameFile(namefile); } //if the user changes the output directory command factory will send this info to us in the output parameter outputDir = validParameter.validFile(parameters, "outputdir", false); if (outputDir == "not found"){ @@ -153,30 +162,6 @@ PhylotypeCommand::PhylotypeCommand(string option) { } /**********************************************************************************************************************/ -void PhylotypeCommand::help(){ - try { - m->mothurOut("The phylotype command reads a taxonomy file and outputs a .list, .rabund and .sabund file. \n"); - m->mothurOut("The phylotype command parameter options are taxonomy, cutoff and label. The taxonomy parameter is required.\n"); - m->mothurOut("The cutoff parameter allows you to specify the level you want to stop at. The default is the highest level in your taxonomy file. \n"); - m->mothurOut("For example: taxonomy = Bacteria;Bacteroidetes-Chlorobi;Bacteroidetes; - cutoff=2, would truncate the taxonomy to Bacteria;Bacteroidetes-Chlorobi; \n"); - m->mothurOut("For the cutoff parameter levels count up from the root of the phylotree. This enables you to look at the grouping down to a specific resolution, say the genus level.\n"); - m->mothurOut("The label parameter allows you to specify which level you would like, and are separated by dashes. The default all levels in your taxonomy file. \n"); - m->mothurOut("For the label parameter, levels count down from the root to keep the output similiar to mothur's other commands which report information from finer resolution to coarser resolutions.\n"); - m->mothurOut("The phylotype command should be in the following format: \n"); - m->mothurOut("phylotype(taxonomy=yourTaxonomyFile, cutoff=yourCutoff, label=yourLabels) \n"); - m->mothurOut("Eaxample: phylotype(taxonomy=amazon.taxonomy, cutoff=5, label=1-3-5).\n\n"); - } - catch(exception& e) { - m->errorOut(e, "PhylotypeCommand", "help"); - exit(1); - } -} -/**********************************************************************************************************************/ - -PhylotypeCommand::~PhylotypeCommand(){} - -/**********************************************************************************************************************/ - int PhylotypeCommand::execute(){ try { @@ -230,7 +215,7 @@ int PhylotypeCommand::execute(){ if (m->control_pressed) { outRabund.close(); outSabund.close(); outList.close(); - 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 tree; return 0; } @@ -301,7 +286,7 @@ int PhylotypeCommand::execute(){ delete tree; if (m->control_pressed) { - 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; }