X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=sensspeccommand.cpp;h=c7f67b40b0e10ae14741600f9b8b3b8d7e0adaa2;hb=0e051b4cfda410b0d441da6ff2f96d4bbe1d9e5a;hp=6a22fd686096e83308faf7a68e98e9391d722fe0;hpb=c69e2e9749626cfbf1d6cb0125ae94f869e00b18;p=mothur.git diff --git a/sensspeccommand.cpp b/sensspeccommand.cpp index 6a22fd6..c7f67b4 100644 --- a/sensspeccommand.cpp +++ b/sensspeccommand.cpp @@ -10,49 +10,50 @@ #include "sensspeccommand.h" //********************************************************************************************************************** -vector SensSpecCommand::getValidParameters(){ +vector SensSpecCommand::setParameters(){ try { - string Array[] = {"list", "phylip", "column", "name", "hard", "label", "cutoff", "precision", "outputdir", "inputdir"}; - vector myArray (Array, Array+(sizeof(Array)/sizeof(string))); + CommandParameter plist("list", "InputTypes", "", "", "none", "none", "none",false,true); parameters.push_back(plist); + CommandParameter pphylip("phylip", "InputTypes", "", "", "PhylipColumn", "PhylipColumn", "none",false,false); parameters.push_back(pphylip); + //CommandParameter pname("name", "InputTypes", "", "", "none", "none", "ColumnName",false,false); parameters.push_back(pname); + CommandParameter pcolumn("column", "InputTypes", "", "", "PhylipColumn", "PhylipColumn", "none",false,false); parameters.push_back(pcolumn); + CommandParameter plabel("label", "String", "", "", "", "", "",false,false); parameters.push_back(plabel); + CommandParameter pcutoff("cutoff", "Number", "", "-1.00", "", "", "",false,false); parameters.push_back(pcutoff); + CommandParameter pprecision("precision", "Number", "", "100", "", "", "",false,false); parameters.push_back(pprecision); + CommandParameter phard("hard", "Boolean", "", "F", "", "", "",false,false); parameters.push_back(phard); + 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, "SensSpecCommand", "getValidParameters"); + m->errorOut(e, "SensSpecCommand", "setParameters"); exit(1); } } //********************************************************************************************************************** -SensSpecCommand::SensSpecCommand(){ +string SensSpecCommand::getHelpString(){ try { - abort = true; calledHelp = true; - vector tempOutNames; - outputTypes["sensspec"] = tempOutNames; + string helpString = ""; + helpString += "The sens.spec command....\n"; + return helpString; } catch(exception& e) { - m->errorOut(e, "SensSpecCommand", "SensSpecCommand"); + m->errorOut(e, "SensSpecCommand", "getHelpString"); exit(1); } } //********************************************************************************************************************** -vector SensSpecCommand::getRequiredParameters(){ - try { - string Array[] = {"list","phylip","column","or"}; - vector myArray (Array, Array+(sizeof(Array)/sizeof(string))); - return myArray; - } - catch(exception& e) { - m->errorOut(e, "SensSpecCommand", "getRequiredParameters"); - exit(1); - } -} -//********************************************************************************************************************** -vector SensSpecCommand::getRequiredFiles(){ +SensSpecCommand::SensSpecCommand(){ try { - vector myArray; - return myArray; + abort = true; calledHelp = true; + setParameters(); + vector tempOutNames; + outputTypes["sensspec"] = tempOutNames; } catch(exception& e) { - m->errorOut(e, "SensSpecCommand", "getRequiredFiles"); + m->errorOut(e, "SensSpecCommand", "SensSpecCommand"); exit(1); } } @@ -68,11 +69,8 @@ SensSpecCommand::SensSpecCommand(string option) { else { string temp; - - //valid paramters for this command - string AlignArray[] = {"list", "phylip", "column", "name", "hard", "label", "cutoff", "precision", "outputdir", "inputdir"}; - vector myArray (AlignArray, AlignArray+(sizeof(AlignArray)/sizeof(string))); + vector myArray = setParameters(); OptionParser parser(option); map parameters = parser.getParameters(); @@ -118,29 +116,49 @@ SensSpecCommand::SensSpecCommand(string option) { if (path == "") { parameters["column"] = inputDir + it->second; } } - it = parameters.find("name"); + //it = parameters.find("name"); //user has given a template file - if(it != parameters.end()){ - path = m->hasPath(it->second); + //if(it != parameters.end()){ + //path = m->hasPath(it->second); //if the user has not given a path then, add inputdir. else leave path alone. - if (path == "") { parameters["name"] = inputDir + it->second; } - } + //if (path == "") { parameters["name"] = inputDir + it->second; } + //} } //check for required parameters listFile = validParameter.validFile(parameters, "list", true); - if (listFile == "not found") { m->mothurOut("list is a required parameter for the sens.spec command."); m->mothurOutEndLine(); abort = true; } + if (listFile == "not found") { + listFile = m->getListFile(); + if (listFile != "") { m->mothurOut("Using " + listFile + " as input file for the list parameter."); m->mothurOutEndLine(); } + else { m->mothurOut("You have no current list file and the list parameter is required."); m->mothurOutEndLine(); abort = true; } + } else if (listFile == "not open") { abort = true; } - distFile = validParameter.validFile(parameters, "column", true); - format = "column"; - if(distFile == "not found") { - distFile = validParameter.validFile(parameters, "phylip", true); - format = "phylip"; - } - if(distFile == "not found") { m->mothurOut("either column or phylip are required for the sens.spec command."); m->mothurOutEndLine(); abort = true; } - else if (distFile == "not open") { abort = true; } - + phylipfile = validParameter.validFile(parameters, "phylip", true); + if (phylipfile == "not found") { phylipfile = ""; } + else if (phylipfile == "not open") { abort = true; } + else { distFile = phylipfile; format = "phylip"; } + + columnfile = validParameter.validFile(parameters, "column", true); + if (columnfile == "not found") { columnfile = ""; } + else if (columnfile == "not open") { abort = true; } + else { distFile = columnfile; format = "column"; } + + if ((phylipfile == "") && (columnfile == "")) { //is there are current file available for either of these? + //give priority to column, then phylip + columnfile = m->getColumnFile(); + if (columnfile != "") { distFile = columnfile; format = "column"; m->mothurOut("Using " + columnfile + " as input file for the column parameter."); m->mothurOutEndLine(); } + else { + phylipfile = m->getPhylipFile(); + if (phylipfile != "") { distFile = phylipfile; format = "phylip"; m->mothurOut("Using " + phylipfile + " as input file for the phylip parameter."); m->mothurOutEndLine(); } + else { + m->mothurOut("No valid current files. You must provide a phylip or column file."); m->mothurOutEndLine(); + abort = true; + } + } + }else if ((phylipfile != "") && (columnfile != "")) { m->mothurOut("When executing a sens.spec command you must enter ONLY ONE of the following: phylip or column."); m->mothurOutEndLine(); abort = true; } + + //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"){ @@ -179,30 +197,6 @@ SensSpecCommand::SensSpecCommand(string option) { exit(1); } } - -//********************************************************************************************************************** - -void SensSpecCommand::help(){ - try { - m->mothurOut("The sens.spec command reads a fastaFile and creates .....\n"); - - - - m->mothurOut("Example sens.spec(...).\n"); - m->mothurOut("Note: No spaces between parameter labels (i.e. fasta), '=' and parameters (i.e.yourFasta).\n"); - m->mothurOut("For more details please check out the wiki http://www.mothur.org/wiki/Trim.seqs .\n\n"); - - } - catch(exception& e) { - m->errorOut(e, "SensSpecCommand", "help"); - exit(1); - } -} - -//*************************************************************************************************************** - -SensSpecCommand::~SensSpecCommand(){ /* do nothing */ } - //*************************************************************************************************************** int SensSpecCommand::execute(){ @@ -214,6 +208,11 @@ int SensSpecCommand::execute(){ if(format == "phylip") { processPhylip(); } else if(format == "column") { processColumn(); } + m->mothurOutEndLine(); + m->mothurOut("Output File Name: "); m->mothurOutEndLine(); + m->mothurOut(sensSpecFileName); m->mothurOutEndLine(); + m->mothurOutEndLine(); + return 0; }