X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=summarycommand.cpp;h=05fc6e8c77057c00bd64e9c057f8784ea71a7188;hb=2e5ec5cbbd23637ed20da9bdd544d178a3b5d949;hp=c6170d10263a0b1e35fa4c03e39e61fc016e0087;hpb=20a2d0350a737a434c89f303662d64a8eeea7b05;p=mothur.git diff --git a/summarycommand.cpp b/summarycommand.cpp index c6170d1..05fc6e8 100644 --- a/summarycommand.cpp +++ b/summarycommand.cpp @@ -10,38 +10,67 @@ #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" //********************************************************************************************************************** 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] == "geom"){ + sumCalculators.push_back(new Geom()); + }else if(globaldata->Estimators[i] == "logsd"){ + 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,6 +93,10 @@ 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"; @@ -89,16 +122,16 @@ int SummaryCommand::execute(){ if(globaldata->allLines == 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++; }