X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=summarycommand.cpp;h=39972cef649a1c34443b0ae36117a48f8b776cbd;hb=477e76a8a79b60f6cd4253324dd830bdea25e3e9;hp=c6170d10263a0b1e35fa4c03e39e61fc016e0087;hpb=20a2d0350a737a434c89f303662d64a8eeea7b05;p=mothur.git diff --git a/summarycommand.cpp b/summarycommand.cpp index c6170d1..39972ce 100644 --- a/summarycommand.cpp +++ b/summarycommand.cpp @@ -10,38 +10,70 @@ #include "summarycommand.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 "logsd.h" +#include "qstat.h" +#include "bergerparker.h" +#include "bstick.h" +#include "coverage.h" //********************************************************************************************************************** SummaryCommand::SummaryCommand(){ try { globaldata = GlobalData::getInstance(); + validCalculator = new ValidCalculators(); int i; - for (i=0; isummaryEstimators.size(); i++) { - if(globaldata->summaryEstimators[i] == "sobs"){ - sumCalculators.push_back(new Sobs()); - }else if(globaldata->summaryEstimators[i] == "chao"){ - sumCalculators.push_back(new Chao1()); - }else if(globaldata->summaryEstimators[i] == "ace"){ - sumCalculators.push_back(new Ace()); - }else if(globaldata->summaryEstimators[i] == "jack"){ - sumCalculators.push_back(new Jackknife()); - }else if(globaldata->summaryEstimators[i] == "shannon"){ - sumCalculators.push_back(new Shannon()); - }else if(globaldata->summaryEstimators[i] == "npshannon"){ - sumCalculators.push_back(new NPShannon()); - }else if(globaldata->summaryEstimators[i] == "simpson"){ - sumCalculators.push_back(new Simpson()); - }else if(globaldata->summaryEstimators[i] == "bootstrap"){ - sumCalculators.push_back(new Bootstrap()); + + for (i=0; iEstimators.size(); i++) { + if (validCalculator->isValidCalculator("summary", globaldata->Estimators[i]) == true) { + if(globaldata->Estimators[i] == "sobs"){ + sumCalculators.push_back(new Sobs()); + }else if(globaldata->Estimators[i] == "chao"){ + sumCalculators.push_back(new Chao1()); + }else if(globaldata->Estimators[i] == "coverage"){ + sumCalculators.push_back(new Coverage()); + }else if(globaldata->Estimators[i] == "geometric"){ + sumCalculators.push_back(new Geom()); + }else if(globaldata->Estimators[i] == "logseries"){ + sumCalculators.push_back(new LogSD()); + }else if(globaldata->Estimators[i] == "qstat"){ + sumCalculators.push_back(new QStat()); + }else if(globaldata->Estimators[i] == "bergerparker"){ + sumCalculators.push_back(new BergerParker()); + }else if(globaldata->Estimators[i] == "bstick"){ + sumCalculators.push_back(new BStick()); + }else if(globaldata->Estimators[i] == "ace"){ + convert(globaldata->getAbund(), abund); + if(abund < 5) + abund = 10; + sumCalculators.push_back(new Ace(abund)); + }else if(globaldata->Estimators[i] == "jack"){ + sumCalculators.push_back(new Jackknife()); + }else if(globaldata->Estimators[i] == "shannon"){ + sumCalculators.push_back(new Shannon()); + }else if(globaldata->Estimators[i] == "npshannon"){ + sumCalculators.push_back(new NPShannon()); + }else if(globaldata->Estimators[i] == "simpson"){ + sumCalculators.push_back(new Simpson()); + }else if(globaldata->Estimators[i] == "bootstrap"){ + sumCalculators.push_back(new Bootstrap()); + }else if (globaldata->Estimators[i] == "nseqs") { + sumCalculators.push_back(new NSeqs()); + } } } + + //reset calc for next command + globaldata->setCalc(""); + } catch(exception& e) { cout << "Standard Error: " << e.what() << " has occurred in the SummaryCommand class Function SummaryCommand. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n"; @@ -64,11 +96,15 @@ SummaryCommand::~SummaryCommand(){ int SummaryCommand::execute(){ try { + + //if the users entered no valid calculators don't execute command + if (sumCalculators.size() == 0) { return 0; } + outputFileName = ((getRootName(globaldata->inputFileName)) + "summary"); openOutputFile(outputFileName, outputFileHandle); outputFileHandle << "label"; - read = new ReadPhilFile(globaldata->inputFileName); + read = new ReadOTUFile(globaldata->inputFileName); read->read(&*globaldata); for(int i=0;iallLines == 1 || globaldata->lines.count(count) == 1 || globaldata->labels.count(sabund->getLabel()) == 1){ cout << sabund->getLabel() << '\t' << count << endl; - + outputFileHandle << sabund->getLabel(); for(int i=0;i data = sumCalculators[i]->getValues(sabund); outputFileHandle << '\t'; sumCalculators[i]->print(outputFileHandle); } + outputFileHandle << endl; } - sabund = input->getSAbundVector(); count++; }