X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=validparameter.cpp;h=163423b79dddc49d99ab38aa197291d0b1b254e7;hb=725a3d4ff2442c79bfde0a75ed3e0904edcf03b7;hp=547d4dcd22c944443552ccc11edd7bea4b6e5124;hpb=0024441c1ff9a98467ba53cc7420a37c98f32e86;p=mothur.git diff --git a/validparameter.cpp b/validparameter.cpp index 547d4dc..163423b 100644 --- a/validparameter.cpp +++ b/validparameter.cpp @@ -13,18 +13,13 @@ ValidParameters::ValidParameters() { try { - initCommandParameters(); + m = MothurOut::getInstance(); initParameterRanges(); - } catch(exception& e) { - cout << "Standard Error: " << e.what() << " has occurred in the ValidParameters class Function ValidParameters. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + m->errorOut(e, "ValidParameters", "ValidParameters"); exit(1); } - catch(...) { - cout << "An unknown error has occurred in the ValidParameters class function ValidParameters. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } } /***********************************************************************/ @@ -32,10 +27,10 @@ ValidParameters::ValidParameters() { ValidParameters::~ValidParameters() {} /***********************************************************************/ -bool ValidParameters::isValidParameter(string parameter, string command, string value) { +bool ValidParameters::isValidParameter(string parameter, vector cParams, string value) { try { bool valid = false; - vector cParams = commandParameters[command]; + //vector cParams = commandParameters[command]; int numParams = cParams.size(); for(int i = 0; i < numParams; i++) { if(cParams.at(i).compare(parameter) == 0) { @@ -44,11 +39,11 @@ bool ValidParameters::isValidParameter(string parameter, string command, string } } if(!valid) { - cout << "'" << parameter << "' is not a valid parameter for the " << command << " command.\n"; - cout << "The valid paramters for the " << command << " command are: "; + m->mothurOut(parameter + " is not a valid parameter."); m->mothurOutEndLine(); + m->mothurOut("The valid parameters are: "); for(int i = 0; i < numParams-1; i++) - cout << cParams.at(i) << ", "; - cout << "and " << cParams.at(numParams-1) << ".\n"; + m->mothurOut(cParams.at(i) + ", "); + m->mothurOut("and " + cParams.at(numParams-1) + ".\n"); return false; } @@ -79,7 +74,7 @@ bool ValidParameters::isValidParameter(string parameter, string command, string double logNum = log10((double)pVal); double diff = (double)((int)logNum - logNum); if(diff != 0) { - cout << "The precision parameter can only take powers of 10 as a value (e.g. 10,1000,1000, etc.)\n"; + m->mothurOut("The precision parameter can only take powers of 10 as a value (e.g. 10,1000,1000, etc.)\n"); return false; } } @@ -105,7 +100,7 @@ bool ValidParameters::isValidParameter(string parameter, string command, string else if(range.at(4).compare("only") == 0) c = 1; else { - cout << "The range can only be 'between' or 'only' the bounding numbers.\n"; + m->mothurOut("The range can only be 'between' or 'only' the bounding numbers.\n"); return false; } @@ -114,7 +109,7 @@ bool ValidParameters::isValidParameter(string parameter, string command, string else if(range.at(0).compare(">=") == 0 || range[3].compare("=>") == 0) d = 1; else { - cout << "The parameter value can only be '>', '>=', or '=>' the lower bounding number.\n"; + m->mothurOut("The parameter value can only be '>', '>=', or '=>' the lower bounding number.\n"); return false; } @@ -123,7 +118,7 @@ bool ValidParameters::isValidParameter(string parameter, string command, string else if(range.at(2).compare("<=") == 0 || range[4].compare("=<") == 0) e = 1; else { - cout << "The parameter value can only be '<', '<=', or '=<' the upper bounding number.\n"; + m->mothurOut("The parameter value can only be '<', '<=', or '=<' the upper bounding number.\n"); return false; } @@ -167,25 +162,25 @@ bool ValidParameters::isValidParameter(string parameter, string command, string if(!valid) { - cout << "The '" << parameter << "' parameter needs to be "; + m->mothurOut("The '" + parameter + "' parameter needs to be "); if(c == 1) - cout << "either '" << a << "' or '" << b << "'.\n"; + m->mothurOut("either '" + toString(a) + "' or '" + toString(b) + "'.\n"); else { if(a != piSentinel) { - cout << ">"; + m->mothurOut(">"); if(d != 0) - cout << "="; - cout << " '" << a << "'"; + m->mothurOut("="); + m->mothurOut(" '" + toString(a) + "'"); } if(b == piSentinel) - cout << "'.\n"; + m->mothurOut( "'.\n"); else if(a != piSentinel) - cout << " and "; + m->mothurOut(" and "); if(b != piSentinel) { - cout << "<"; + m->mothurOut("<"); if(e != 0) - cout << "="; - cout << " '" << b << "'.\n"; + m->mothurOut("="); + m->mothurOut(" '" + toString(b) + "'.\n"); } } return false; @@ -194,128 +189,57 @@ bool ValidParameters::isValidParameter(string parameter, string command, string return true; } catch(exception& e) { - cout << "Standard Error: " << e.what() << " has occurred in the ValidParameters class Function isValidParameter. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } - catch(...) { - cout << "An unknown error has occurred in the ValidParameters class function isValidParameter. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + m->errorOut(e, "ValidParameters", "isValidParameters"); exit(1); } } +/*******************************************************/ -/***********************************************************************/ - -/***********************************************************************/ -void ValidParameters::initCommandParameters() { - try { - //{"parameter1","parameter2",...,"last parameter"}; - - string readdistArray[] = {"phylip","column", "name","cutoff","precision", "group"}; - commandParameters["read.dist"] = addParameters(readdistArray, sizeof(readdistArray)/sizeof(string)); - - string readotuArray[] = {"list","order","shared", "line", "label","group","sabund", "rabund"}; - commandParameters["read.otu"] = addParameters(readotuArray, sizeof(readotuArray)/sizeof(string)); - - string readtreeArray[] = {"tree","group"}; - commandParameters["read.tree"] = addParameters(readtreeArray, sizeof(readtreeArray)/sizeof(string)); - - string clusterArray[] = {"cutoff","precision","method"}; - commandParameters["cluster"] = addParameters(clusterArray, sizeof(clusterArray)/sizeof(string)); - - string deconvoluteArray[] = {"fasta"}; - commandParameters["deconvolute"] = addParameters(deconvoluteArray, sizeof(deconvoluteArray)/sizeof(string)); - - string collectsingleArray[] = {"freq","line","label","calc","abund","size"}; - commandParameters["collect.single"] = addParameters(collectsingleArray, sizeof(collectsingleArray)/sizeof(string)); +/******************************************************/ - string collectsharedArray[] = {"freq","line","label","calc","groups"}; - commandParameters["collect.shared"] = addParameters(collectsharedArray, sizeof(collectsharedArray)/sizeof(string)); - - string getgroupArray[] = {}; - commandParameters["get.group"] = addParameters(getgroupArray, sizeof(getgroupArray)/sizeof(string)); - - string getlabelArray[] = {}; - commandParameters["get.label"] = addParameters(getlabelArray, sizeof(getlabelArray)/sizeof(string)); - - string getlineArray[] = {}; - commandParameters["get.line"] = addParameters(getlineArray, sizeof(getlineArray)/sizeof(string)); - - string getsabundArray[] = {"line", "label"}; - commandParameters["get.sabund"] = addParameters(getsabundArray, sizeof(getsabundArray)/sizeof(string)); - - string getrabundArray[] = {"line", "label"}; - commandParameters["get.rabund"] = addParameters(getrabundArray, sizeof(getrabundArray)/sizeof(string)); - - string rarefactionsingleArray[] = {"iters","freq","line","label","calc","abund"}; - commandParameters["rarefaction.single"] = addParameters(rarefactionsingleArray, sizeof(rarefactionsingleArray)/sizeof(string)); - - string rarefactionsharedArray[] = {"iters","jumble","line","label","calc","groups"}; - commandParameters["rarefaction.shared"] = addParameters(rarefactionsharedArray, sizeof(rarefactionsharedArray)/sizeof(string)); - - string libshuffArray[] = {"iters","groups","step","form","cutoff"}; - commandParameters["libshuff"] = addParameters(libshuffArray, sizeof(libshuffArray)/sizeof(string)); +string ValidParameters::validFile(map container, string parameter, bool isFile) { + try { + int ableToOpen; + ifstream in; + map::iterator it; - string summarysingleArray[] = {"line","label","calc","abund","size"}; - commandParameters["summary.single"] = addParameters(summarysingleArray, sizeof(summarysingleArray)/sizeof(string)); - - string summarysharedArray[] = {"line","label","calc","groups"}; - commandParameters["summary.shared"] = addParameters(summarysharedArray, sizeof(summarysharedArray)/sizeof(string)); - - string parsimonyArray[] = {"random","groups","iters"}; - commandParameters["parsimony"] = addParameters(parsimonyArray, sizeof(parsimonyArray)/sizeof(string)); - - string unifracWeightedArray[] = {"groups","iters"}; - commandParameters["unifrac.weighted"] = addParameters(unifracWeightedArray, sizeof(unifracWeightedArray)/sizeof(string)); - - string unifracUnweightedArray[] = {"groups","iters"}; - commandParameters["unifrac.unweighted"] = addParameters(unifracUnweightedArray, sizeof(unifracUnweightedArray)/sizeof(string)); + it = container.find(parameter); + if(it != container.end()){ //no parameter given - string heatmapArray[] = {"groups","line","label","sorted","scale"}; - commandParameters["heatmap"] = addParameters(heatmapArray, sizeof(heatmapArray)/sizeof(string)); - - string filterseqsArray[] = {"fasta","phylip","clustal","nexus", "trump", "soft", "hard", "vertical"}; - commandParameters["filter.seqs"] = addParameters(filterseqsArray, sizeof(filterseqsArray)/sizeof(string)); + if(isFile == true) { + + #ifdef USE_MPI + int pid, processors; + MPI_Status status; + MPI_Comm_rank(MPI_COMM_WORLD, &pid); //find out who we are + MPI_Comm_size(MPI_COMM_WORLD, &processors); + + if (pid == 0) { + #endif - string summaryseqsArray[] = {"fasta","phylip","clustal","nexus"}; - commandParameters["summary.seqs"] = addParameters(summaryseqsArray, sizeof(summaryseqsArray)/sizeof(string)); + ableToOpen = openInputFile(it->second, in); + in.close(); - string vennArray[] = {"groups","line","label","calc"}; - commandParameters["venn"] = addParameters(vennArray, sizeof(vennArray)/sizeof(string)); - - string binseqsArray[] = {"fasta","line","label","name", "group"}; - commandParameters["bin.seqs"] = addParameters(binseqsArray, sizeof(binseqsArray)/sizeof(string)); - - string distsharedArray[] = {"line","label","calc","groups"}; - commandParameters["dist.shared"] = addParameters(distsharedArray, sizeof(distsharedArray)/sizeof(string)); - - string getOTURepArray[] = {"fasta","list","line","label","name", "group"}; - commandParameters["get.oturep"] = addParameters(getOTURepArray, sizeof(getOTURepArray)/sizeof(string)); - - string treeGroupsArray[] = {"line","label","calc","groups", "phylip", "column", "name"}; - commandParameters["tree.shared"] = addParameters(treeGroupsArray, sizeof(treeGroupsArray)/sizeof(string)); - - string bootstrapArray[] = {"line","label","calc","groups","iters"}; - commandParameters["bootstrap.shared"] = addParameters(bootstrapArray, sizeof(bootstrapArray)/sizeof(string)); - - string concensusArray[] = {}; - commandParameters["concensus"] = addParameters(concensusArray, sizeof(concensusArray)/sizeof(string)); - - string distanceArray[] = {"fasta","phylip","clustal","nexus", "calc", "countends", "cutoff", "processors"}; - commandParameters["dist.seqs"] = addParameters(distanceArray, sizeof(distanceArray)/sizeof(string)); - - string AlignArray[] = {"fasta", "candidate", "search", "ksize", "align", "match", "mismatch", "gapopen", "gapextend"}; - commandParameters["align.seqs"] = addParameters(AlignArray, sizeof(AlignArray)/sizeof(string)); + #ifdef USE_MPI + for(int i = 1; i < processors; i++) { + MPI_Send(&ableToOpen, 1, MPI_INT, i, 2001, MPI_COMM_WORLD); + } + }else { + MPI_Recv(&ableToOpen, 1, MPI_INT, 0, 2001, MPI_COMM_WORLD, &status); + } + + MPI_Barrier(MPI_COMM_WORLD); //make everyone wait - just in case + #endif + + if (ableToOpen == 1) { return "not open"; } + } + }else { return "not found"; } - string quitArray[] = {}; - commandParameters["quit"] = addParameters(quitArray, sizeof(quitArray)/sizeof(string)); - + return it->second; + } catch(exception& e) { - cout << "Standard Error: " << e.what() << " has occurred in the ValidParameters class Function isValidParameter. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } - catch(...) { - cout << "An unknown error has occurred in the ValidParameters class function isValidParameter. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + m->errorOut(e, "ValidParameters", "validFile"); exit(1); } } @@ -344,15 +268,6 @@ void ValidParameters::initParameterRanges() { string itersArray[] = {">=","10", "<","NA", "between"}; parameterRanges["iters"] = addParameters(itersArray, rangeSize); - string jumbleArray[] = {">","0", "<","1", "only"}; - parameterRanges["jumble"] = addParameters(jumbleArray, rangeSize); - - string freqArray[] = {">=","1", "<","NA", "between"}; - parameterRanges["freq"] = addParameters(freqArray, rangeSize); - - //string lineArray[] = {">=","1", "<","NA", "between"}; - //parameterRanges["line"] = addParameters(lineArray, rangeSize); - string abundArray[] = {">=","5", "<","NA", "between"}; parameterRanges["abund"] = addParameters(abundArray, rangeSize); @@ -363,11 +278,7 @@ void ValidParameters::initParameterRanges() { parameterRanges["size"] = addParameters(sizeArray, rangeSize); } catch(exception& e) { - cout << "Standard Error: " << e.what() << " has occurred in the ValidParameters class Function isValidParameter. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } - catch(...) { - cout << "An unknown error has occurred in the ValidParameters class function isValidParameter. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + m->errorOut(e, "ValidParameters", "initParameterRanges"); exit(1); } } @@ -381,11 +292,7 @@ vector ValidParameters::addParameters(string parameters[], int size) { return pVector; } catch(exception& e) { - cout << "Standard Error: " << e.what() << " has occurred in the ValidParameters class Function isValidParameter. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; - exit(1); - } - catch(...) { - cout << "An unknown error has occurred in the ValidParameters class function isValidParameter. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; + m->errorOut(e, "ValidParameters", "addParameters"); exit(1); } }