X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=collectcommand.cpp;h=233b7bef963a22bdc0ab9a2e524699bc49e4366c;hb=599af78a6ea4916919d460a131e2d0dffa28d35e;hp=4687c6e8dcb35fa3b19296f2fe5cc0d39745d582;hpb=20a2d0350a737a434c89f303662d64a8eeea7b05;p=mothur.git diff --git a/collectcommand.cpp b/collectcommand.cpp index 4687c6e..233b7be 100644 --- a/collectcommand.cpp +++ b/collectcommand.cpp @@ -10,42 +10,73 @@ #include "collectcommand.h" #include "ace.h" #include "sobs.h" +#include "nseqs.h" #include "chao1.h" #include "bootstrap.h" #include "simpson.h" #include "npshannon.h" #include "shannon.h" #include "jackknife.h" +#include "geom.h" +#include "qstat.h" +#include "logsd.h" +#include "bergerparker.h" +#include "bstick.h" +#include "goodscoverage.h" -//********************************************************************************************************************** +#include "coverage.h" +//********************************************************************************************************************** CollectCommand::CollectCommand(){ try { globaldata = GlobalData::getInstance(); 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] == "nseqs") { + cDisplays.push_back(new CollectDisplay(new NSeqs(), new OneColumnFile(fileNameRoot+"nseqs"))); + }else if (globaldata->Estimators[i] == "coverage") { + cDisplays.push_back(new CollectDisplay(new Coverage(), new OneColumnFile(fileNameRoot+"coverage"))); + }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"))); + }else if (globaldata->Estimators[i] == "geometric") { + cDisplays.push_back(new CollectDisplay(new Geom(), new OneColumnFile(fileNameRoot+"geometric"))); + }else if (globaldata->Estimators[i] == "qstat") { + cDisplays.push_back(new CollectDisplay(new QStat(), new OneColumnFile(fileNameRoot+"qstat"))); + }else if (globaldata->Estimators[i] == "logseries") { + cDisplays.push_back(new CollectDisplay(new LogSD(), new OneColumnFile(fileNameRoot+"logseries"))); + }else if (globaldata->Estimators[i] == "bergerparker") { + cDisplays.push_back(new CollectDisplay(new BergerParker(), new OneColumnFile(fileNameRoot+"bergerparker"))); + }else if (globaldata->Estimators[i] == "bstick") { + cDisplays.push_back(new CollectDisplay(new BStick(), new ThreeColumnFile(fileNameRoot+"bstick"))); + }else if (globaldata->Estimators[i] == "goodscoverage") { + cDisplays.push_back(new CollectDisplay(new GoodsCoverage(), new OneColumnFile(fileNameRoot+"goodscoverage"))); + } } } + + //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 +103,21 @@ CollectCommand::~CollectCommand(){ int CollectCommand::execute(){ try { int count = 1; - read = new ReadPhilFile(globaldata->inputFileName); + + //if the users entered no valid calculators don't execute command + if (cDisplays.size() == 0) { return 0; } + + read = new ReadOTUFile(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 +126,15 @@ int CollectCommand::execute(){ cout << order->getLabel() << '\t' << count << endl; } - + + delete order; 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