X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=collectcommand.cpp;h=95a79d5bc69f763688915ecb998bd47cff162f1e;hb=ec43347d04dbb2a7d9d9ecfb5fc556e21ad8c2bc;hp=4687c6e8dcb35fa3b19296f2fe5cc0d39745d582;hpb=20a2d0350a737a434c89f303662d64a8eeea7b05;p=mothur.git diff --git a/collectcommand.cpp b/collectcommand.cpp index 4687c6e..95a79d5 100644 --- a/collectcommand.cpp +++ b/collectcommand.cpp @@ -27,25 +27,33 @@ CollectCommand::CollectCommand(){ string fileNameRoot; fileNameRoot = getRootName(globaldata->inputFileName); int i; - for (i=0; isingleEstimators.size(); i++) { - if (globaldata->singleEstimators[i] == "sobs") { - cDisplays.push_back(new CollectDisplay(new Sobs(), new OneColumnFile(fileNameRoot+"sobs"))); - }else if (globaldata->singleEstimators[i] == "chao") { - cDisplays.push_back(new CollectDisplay(new Chao1(), new ThreeColumnFile(fileNameRoot+"chao"))); - }else if (globaldata->singleEstimators[i] == "ace") { - cDisplays.push_back(new CollectDisplay(new Ace(), new ThreeColumnFile(fileNameRoot+"ace"))); - }else if (globaldata->singleEstimators[i] == "jack") { - cDisplays.push_back(new CollectDisplay(new Jackknife(), new ThreeColumnFile(fileNameRoot+"jack"))); - }else if (globaldata->singleEstimators[i] == "shannon") { - cDisplays.push_back(new CollectDisplay(new Shannon(), new ThreeColumnFile(fileNameRoot+"shannon"))); - }else if (globaldata->singleEstimators[i] == "npshannon") { - cDisplays.push_back(new CollectDisplay(new NPShannon(), new OneColumnFile(fileNameRoot+"np_shannon"))); - }else if (globaldata->singleEstimators[i] == "simpson") { - cDisplays.push_back(new CollectDisplay(new Simpson(), new ThreeColumnFile(fileNameRoot+"simpson"))); - }else if (globaldata->singleEstimators[i] == "bootstrap") { - cDisplays.push_back(new CollectDisplay(new Bootstrap(), new OneColumnFile(fileNameRoot+"bootstrap"))); + validCalculator = new ValidCalculators(); + + for (i=0; iEstimators.size(); i++) { + if (validCalculator->isValidCalculator("single", globaldata->Estimators[i]) == true) { + if (globaldata->Estimators[i] == "sobs") { + cDisplays.push_back(new CollectDisplay(new Sobs(), new OneColumnFile(fileNameRoot+"sobs"))); + }else if (globaldata->Estimators[i] == "chao") { + cDisplays.push_back(new CollectDisplay(new Chao1(), new ThreeColumnFile(fileNameRoot+"chao"))); + }else if (globaldata->Estimators[i] == "ace") { + convert(globaldata->getAbund(), abund); + cDisplays.push_back(new CollectDisplay(new Ace(abund), new ThreeColumnFile(fileNameRoot+"ace"))); + }else if (globaldata->Estimators[i] == "jack") { + cDisplays.push_back(new CollectDisplay(new Jackknife(), new ThreeColumnFile(fileNameRoot+"jack"))); + }else if (globaldata->Estimators[i] == "shannon") { + cDisplays.push_back(new CollectDisplay(new Shannon(), new ThreeColumnFile(fileNameRoot+"shannon"))); + }else if (globaldata->Estimators[i] == "npshannon") { + cDisplays.push_back(new CollectDisplay(new NPShannon(), new OneColumnFile(fileNameRoot+"np_shannon"))); + }else if (globaldata->Estimators[i] == "simpson") { + cDisplays.push_back(new CollectDisplay(new Simpson(), new ThreeColumnFile(fileNameRoot+"simpson"))); + }else if (globaldata->Estimators[i] == "bootstrap") { + cDisplays.push_back(new CollectDisplay(new Bootstrap(), new OneColumnFile(fileNameRoot+"bootstrap"))); + } } } + + //reset calc for next command + globaldata->setCalc(""); } catch(exception& e) { cout << "Standard Error: " << e.what() << " has occurred in the CollectCommand class Function CollectCommand. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; @@ -72,16 +80,21 @@ CollectCommand::~CollectCommand(){ int CollectCommand::execute(){ try { int count = 1; + + //if the users entered no valid calculators don't execute command + if (cDisplays.size() == 0) { return 0; } + read = new ReadPhilFile(globaldata->inputFileName); read->read(&*globaldata); order = globaldata->gorder; input = globaldata->ginput; - + set orderList; + while(order != NULL){ + orderList.insert(order->getLabel()); if(globaldata->allLines == 1 || globaldata->lines.count(count) == 1 || globaldata->labels.count(order->getLabel()) == 1){ - cCurve = new Collect(order, cDisplays); convert(globaldata->getFreq(), freq); cCurve->getCurve(freq); @@ -90,12 +103,13 @@ int CollectCommand::execute(){ cout << order->getLabel() << '\t' << count << endl; } - order = (input->getOrderVector()); count++; - } - + set::iterator i; + for(i = globaldata->labels.begin(); i != globaldata->labels.end(); ++i) + if(orderList.count(*i) == 0) + cout << "'" << *i << "'" << " is not a valid label.\n"; for(int i=0;i