X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=validparameter.cpp;h=5278d51fa3ef2da9429f12c89f4e12d4923d67fe;hb=f18d75f9c996cb619a5051a7664620c0c5ae05fb;hp=50610f0bbc43d0903e60d6def31fe46b0401ad65;hpb=eb1c88346fb246e95a6b38935b103f95e38b82ca;p=mothur.git diff --git a/validparameter.cpp b/validparameter.cpp index 50610f0..5278d51 100644 --- a/validparameter.cpp +++ b/validparameter.cpp @@ -13,38 +13,9 @@ ValidParameters::ValidParameters() { try { - parameters["phylip"] = "phylip"; - parameters["column"] = "column"; - parameters["list"] = "list"; - parameters["rabund"] = "rabund"; - parameters["sabund"] = "sabund"; - parameters["name"] = "name"; - parameters["group"] = "group"; - parameters["order"] = "order"; - parameters["fasta"] = "fasta"; - parameters["tree"] = "tree"; - parameters["fileroot"] = "fileroot"; - parameters["cutoff"] = "cutoff"; - parameters["method"] = "method"; - parameters["format"] = "format"; - parameters["precision"] = "precision"; - parameters["label"] = "label"; - parameters["line"] = "line"; - parameters["iters"] = "iters"; - parameters["jumble"] = "jumble"; - parameters["freq"] = "freq"; - parameters["abund"] = "abund"; - parameters["random"] = "random"; - parameters["groups"] = "groups"; - parameters["calc"] = "calc"; - parameters["sharedrarefaction"] = "sharedrarefaction"; - parameters["sharedsummary"] = "sharedsummary"; - parameters["shared"] = "shared"; - parameters["single"] = "single"; - parameters["rarefaction"] = "rarefaction"; - initCommandParameters(); 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"; @@ -78,6 +49,10 @@ 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: "; + for(int i = 0; i < numParams-1; i++) + cout << cParams.at(i) << ", "; + cout << "and " << cParams.at(numParams-1) << ".\n"; return false; } @@ -87,153 +62,155 @@ bool ValidParameters::isValidParameter(string parameter, string command, string int pVal; double piSentinel = 3.14159; vector range = parameterRanges[parameter]; - - valid = convertTest(value, pVal); - - if(!valid) - return false; + vector values; + splitAtDash(value, values); - - /******************************************************************************************************** - Special Cases - *********************************************************************************************************/ - - if(parameter.compare("precision") == 0) + for(int i = 0; i < values.size(); i++) { - double logNum = log10((double)pVal); - double diff = (double)((int)logNum - logNum); - if(diff != 0) + value = values.at(i); + valid = convertTest(value, pVal); + + if(!valid) + return false; + + + + /******************************************************************************************************** + Special Cases + *********************************************************************************************************/ + + if(parameter.compare("precision") == 0) { - cout << "The precision parameter can only take powers of 10 as a value (e.g. 10,1000,1000, etc.)\n"; + 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"; + return false; + } + } + + /************************************************************************************************************/ + + + + double a,b,c,d,e; + + if(range.at(1).compare("NA") == 0) + a = piSentinel; + else + a = atoi(range.at(1).c_str()); + + if(range.at(3).compare("NA") == 0) + b = piSentinel; + else + b = atoi(range.at(3).c_str()); + + if(range.at(4).compare("between") == 0) + c = 0; + else if(range.at(4).compare("only") == 0) + c = 1; + else + { + cout << "The range can only be 'between' or 'only' the bounding numbers.\n"; return false; } - } - - /************************************************************************************************************/ - - - - double a,b,c,d,e; - - if(range.at(1).compare("NA") == 0) - a = piSentinel; - else - a = atoi(range.at(1).c_str()); - if(range.at(3).compare("NA") == 0) - b = piSentinel; - else - b = atoi(range.at(3).c_str()); - - if(range.at(4).compare("between") == 0) - c = 0; - else if(range.at(4).compare("only") == 0) - c = 1; - else - { - cout << "The range can only be 'between' or 'only' the bounding numbers.\n"; - return false; - } - - if(range.at(0).compare(">") == 0) - d = 0; - 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"; - return false; - } - - if(range.at(2).compare("<") == 0) - e = 0; - 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"; - return false; - } - - bool a0 = pVal > a; - bool a1 = pVal >= a; - bool b0 = pVal < b; - bool b1 = pVal <= b; - - if(c != 1) - { - if(a == piSentinel && b == piSentinel) - return true; - if(a != piSentinel && b == piSentinel) + if(range.at(0).compare(">") == 0) + d = 0; + else if(range.at(0).compare(">=") == 0 || range[3].compare("=>") == 0) + d = 1; + else { - if(d == 0) - valid = a0; - else - valid = a1; + cout << "The parameter value can only be '>', '>=', or '=>' the lower bounding number.\n"; + return false; } - else if(a == piSentinel && b != piSentinel) + + if(range.at(2).compare("<") == 0) + e = 0; + 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"; + return false; + } + + bool a0 = pVal > a; + bool a1 = pVal >= a; + bool b0 = pVal < b; + bool b1 = pVal <= b; + + if(c != 1) { - if(e == 0) - valid = b0; + if(a != piSentinel && b == piSentinel) + { + if(d == 0) + valid = a0; + else + valid = a1; + } + else if(a == piSentinel && b != piSentinel) + { + if(e == 0) + valid = b0; + else + valid = b1; + } else - valid = b1; + { + if(d == 0 && e == 0) + valid = (a0 && b0); + else if(d == 0 && e == 1) + valid = (a0 && b1); + else if(d == 1 && e == 0) + valid = (a1 && b0); + else + valid = (a1 && b1); + } } else { - if(d == 0 && e == 0) - valid = (a0 && b0); - else if(d == 0 && e == 1) - valid = (a0 && b1); - else if(d == 1 && e == 0) - valid = (a1 && b0); + if(a != piSentinel && b == piSentinel) + valid = (pVal == a); + else if(a == piSentinel && b != piSentinel) + valid = (pVal == b); else - valid = (a1 && b1); + valid = (pVal == a || pVal == b); } - } - else - { - if(a == piSentinel && b == piSentinel) - return true; - if(a != piSentinel && b == piSentinel) - valid = (pVal == a); - else if(a == piSentinel && b != piSentinel) - valid = (pVal == b); - else - valid = (pVal == a || pVal == b); - } - - if(valid) - return true; - - else - { - cout << "The '" << parameter << "' parameter needs to be "; - if(c == 1) - cout << "either '" << a << "' or '" << b << "'.\n"; - else + + + if(!valid) { - if(a != piSentinel) - { - cout << ">"; - if(d != 0) - cout << "="; - cout << " '" << a << "'"; - } - if(b == piSentinel) - cout << ".\n"; - else if(a != piSentinel) - cout << " and "; - if(b != piSentinel) + cout << "The '" << parameter << "' parameter needs to be "; + if(c == 1) + cout << "either '" << a << "' or '" << b << "'.\n"; + else { - cout << "<"; - if(e != 0) - cout << "="; - cout << " '" << b << ".\n"; + if(a != piSentinel) + { + cout << ">"; + if(d != 0) + cout << "="; + cout << " '" << a << "'"; + } + if(b == piSentinel) + cout << ".\n"; + else if(a != piSentinel) + cout << " and "; + if(b != piSentinel) + { + cout << "<"; + if(e != 0) + cout << "="; + cout << " '" << b << ".\n"; + } } + return false; } - return false; } + 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"; @@ -252,22 +229,25 @@ void ValidParameters::initCommandParameters() { try { //{"parameter1","parameter2",...,"last parameter"}; - string readdistArray[] = {"phylip","name","cutoff","precision"}; + string readdistArray[] = {"phylip","column", "name","cutoff","precision"}; commandParameters["read.dist"] = addParameters(readdistArray, sizeof(readdistArray)/sizeof(string)); - string readotuArray[] = {"list","order","group","shared", "sabund"}; + string readotuArray[] = {"list","order","shared", "line", "label","group","shared", "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","single","precision","abund"}; + string collectsingleArray[] = {"freq","line","label","calc","precision","abund"}; commandParameters["collect.single"] = addParameters(collectsingleArray, sizeof(collectsingleArray)/sizeof(string)); - string collectsharedArray[] = {"jumble","freq","line","label","shared","groups"}; + string collectsharedArray[] = {"jumble","freq","line","label","calc","groups"}; commandParameters["collect.shared"] = addParameters(collectsharedArray, sizeof(collectsharedArray)/sizeof(string)); string getgroupArray[] = {}; @@ -279,18 +259,39 @@ void ValidParameters::initCommandParameters() { string getlineArray[] = {}; commandParameters["get.line"] = addParameters(getlineArray, sizeof(getlineArray)/sizeof(string)); - string rarefactionsingleArray[] = {"iters","freq","line","label","rarefaction","abund"}; + string rarefactionsingleArray[] = {"iters","freq","line","label","calc","abund"}; commandParameters["rarefaction.single"] = addParameters(rarefactionsingleArray, sizeof(rarefactionsingleArray)/sizeof(string)); - string rarefactionsharedArray[] = {"iters","jumble","line","label","sharedrarefaction"}; + string rarefactionsharedArray[] = {"iters","jumble","line","label","calc"}; commandParameters["rarefaction.shared"] = addParameters(rarefactionsharedArray, sizeof(rarefactionsharedArray)/sizeof(string)); - - string summarysingleArray[] = {"line","label","summary","abund"}; + + string libshuffArray[] = {"iters","groups","step","form","cutoff"}; + commandParameters["libshuff"] = addParameters(libshuffArray, sizeof(libshuffArray)/sizeof(string)); + + string summarysingleArray[] = {"line","label","calc","abund"}; commandParameters["summary.single"] = addParameters(summarysingleArray, sizeof(summarysingleArray)/sizeof(string)); - string summarysharedArray[] = {"jumble","line","label","sharedsummary"}; + string summarysharedArray[] = {"jumble","line","label","calc"}; commandParameters["summary.shared"] = addParameters(summarysharedArray, sizeof(summarysharedArray)/sizeof(string)); + string parsimonyArray[] = {"random","group","iters"}; + commandParameters["parsimony"] = addParameters(parsimonyArray, sizeof(parsimonyArray)/sizeof(string)); + + string unifracWeightedArray[] = {"group","iters"}; + commandParameters["unifrac.weighted"] = addParameters(unifracWeightedArray, sizeof(unifracWeightedArray)/sizeof(string)); + + string unifracUnweightedArray[] = {"group","iters"}; + commandParameters["unifrac.unweighted"] = addParameters(unifracUnweightedArray, sizeof(unifracUnweightedArray)/sizeof(string)); + + string heatmapArray[] = {"group","line","label","sorted"}; + commandParameters["heatmap"] = addParameters(heatmapArray, sizeof(heatmapArray)/sizeof(string)); + + string vennArray[] = {"groups","line","label","calc"}; + commandParameters["venn"] = addParameters(vennArray, sizeof(vennArray)/sizeof(string)); + + string binseqsArray[] = {"fasta","line","label","name"}; + commandParameters["bin.seqs"] = addParameters(binseqsArray, sizeof(binseqsArray)/sizeof(string)); + string quitArray[] = {}; commandParameters["quit"] = addParameters(quitArray, sizeof(quitArray)/sizeof(string)); @@ -369,5 +370,4 @@ vector ValidParameters::addParameters(string parameters[], int size) { } } -/***********************************************************************/