]> git.donarmstrong.com Git - mothur.git/blobdiff - getrelabundcommand.cpp
added set.current and get.current commands and modified existing commands to update...
[mothur.git] / getrelabundcommand.cpp
index 5b9327b57bd928a5e456a7251a83be1a0664cd6c..e79ccc9a3b3c9ec4812dc219af6dbe0428d5ece9 100644 (file)
@@ -24,7 +24,7 @@ vector<string> GetRelAbundCommand::getValidParameters(){
 //**********************************************************************************************************************
 GetRelAbundCommand::GetRelAbundCommand(){      
        try {
-               //initialize outputTypes
+               abort = true; calledHelp = true; 
                vector<string> tempOutNames;
                outputTypes["relabund"] = tempOutNames;
        }
@@ -60,12 +60,12 @@ vector<string> GetRelAbundCommand::getRequiredFiles(){
 GetRelAbundCommand::GetRelAbundCommand(string option) {
        try {
                globaldata = GlobalData::getInstance();
-               abort = false;
+               abort = false; calledHelp = false;   
                allLines = 1;
                labels.clear();
                
                //allow user to run help
-               if(option == "help") { help(); abort = true; }
+               if(option == "help") { help(); abort = true; calledHelp = true; }
                
                else {
                        //valid paramters for this command
@@ -166,7 +166,7 @@ GetRelAbundCommand::~GetRelAbundCommand(){
 int GetRelAbundCommand::execute(){
        try {
        
-               if (abort == true) { return 0; }
+               if (abort == true) { if (calledHelp) { return 0; }  return 2;   }
                
                string outputFileName = outputDir + m->getRootName(m->getSimpleName(globaldata->inputFileName)) + "relabund";
                ofstream out;
@@ -263,6 +263,13 @@ int GetRelAbundCommand::execute(){
                m->mothurOut(outputFileName); m->mothurOutEndLine(); outputNames.push_back(outputFileName); outputTypes["relabund"].push_back(outputFileName);
                m->mothurOutEndLine();
                
+               //set relabund file as new current relabundfile
+               string current = "";
+               itTypes = outputTypes.find("relabund");
+               if (itTypes != outputTypes.end()) {
+                       if ((itTypes->second).size() != 0) { current = (itTypes->second)[0]; m->setRelAbundFile(current); }
+               }
+               
                return 0;
        }
        catch(exception& e) {
@@ -274,8 +281,6 @@ int GetRelAbundCommand::execute(){
 
 int GetRelAbundCommand::getRelAbundance(vector<SharedRAbundVector*>& thisLookUp, ofstream& out){
        try {
-               if (pickedGroups) { eliminateZeroOTUS(thisLookUp); }
-
                
                 for (int i = 0; i < thisLookUp.size(); i++) {
                        out << thisLookUp[i]->getLabel() << '\t' << thisLookUp[i]->getGroup() << '\t' << thisLookUp[i]->getNumBins() << '\t';
@@ -319,48 +324,5 @@ int GetRelAbundCommand::getRelAbundance(vector<SharedRAbundVector*>& thisLookUp,
        }
 }
 //**********************************************************************************************************************
-int GetRelAbundCommand::eliminateZeroOTUS(vector<SharedRAbundVector*>& thislookup) {
-       try {
-               
-               vector<SharedRAbundVector*> newLookup;
-               for (int i = 0; i < thislookup.size(); i++) {
-                       SharedRAbundVector* temp = new SharedRAbundVector();
-                       temp->setLabel(thislookup[i]->getLabel());
-                       temp->setGroup(thislookup[i]->getGroup());
-                       newLookup.push_back(temp);
-               }
-               
-               //for each bin
-               for (int i = 0; i < thislookup[0]->getNumBins(); i++) {
-                       if (m->control_pressed) { for (int j = 0; j < newLookup.size(); j++) {  delete newLookup[j];  } return 0; }
-               
-                       //look at each sharedRabund and make sure they are not all zero
-                       bool allZero = true;
-                       for (int j = 0; j < thislookup.size(); j++) {
-                               if (thislookup[j]->getAbundance(i) != 0) { allZero = false;  break;  }
-                       }
-                       
-                       //if they are not all zero add this bin
-                       if (!allZero) {
-                               for (int j = 0; j < thislookup.size(); j++) {
-                                       newLookup[j]->push_back(thislookup[j]->getAbundance(i), thislookup[j]->getGroup());
-                               }
-                       }
-               }
-
-               for (int j = 0; j < thislookup.size(); j++) {  delete thislookup[j];  }
-
-               thislookup = newLookup;
-               
-               return 0;
-       }
-       catch(exception& e) {
-               m->errorOut(e, "GetRelAbundCommand", "eliminateZeroOTUS");
-               exit(1);
-       }
-}
-
-//**********************************************************************************************************************