]> git.donarmstrong.com Git - mothur.git/blobdiff - removegroupscommand.cpp
fixes while testing 1.33.0
[mothur.git] / removegroupscommand.cpp
index 64f9ab6822301310e975e6bbe58736e953eed4f2..42f088b953d2f3657dd98dcec4f184f87eb8a70b 100644 (file)
@@ -70,7 +70,7 @@ string RemoveGroupsCommand::getOutputPattern(string type) {
         else if (type == "count")       {   pattern = "[filename],pick,[extension]";    }
         else if (type == "list")        {   pattern = "[filename],pick,[extension]";    }
         else if (type == "shared")      {   pattern = "[filename],[tag],pick,[extension]";    }
-        else if (type == "design")      {   pattern = "[filename],pick,[extension]";    }
+        else if (type == "design")      {   pattern = "[filename],[tag],pick,[extension]";    }
         else { m->mothurOut("[ERROR]: No definition for type " + type + " output pattern.\n"); m->control_pressed = true;  }
         
         return pattern;
@@ -377,7 +377,7 @@ int RemoveGroupsCommand::execute(){
                 m->mothurOut("\n[NOTE]: The count file should contain only unique names, so mothur assumes your fasta, list and taxonomy files also contain only uniques.\n\n");
             }
             CountTable ct;
-            ct.readTable(countfile, true);
+            ct.readTable(countfile, true, false);
             if (!ct.hasGroupInfo()) { m->mothurOut("[ERROR]: your count file does not contain group info, aborting.\n"); return 0; }
             
             vector<string> gNamesOfGroups = ct.getNamesOfGroups();
@@ -560,9 +560,9 @@ int RemoveGroupsCommand::readShared(){
                m->setGroups(groupsToKeep);
                m->clearAllGroups();
                m->saveNextLabel = "";
-               m->printedHeaders = false;
-               m->currentBinLabels.clear();
-               m->binLabelsInFile.clear();
+               m->printedSharedHeaders = false;
+               m->currentSharedBinLabels.clear();
+               m->sharedBinLabelsInFile.clear();
                
                InputData input(sharedfile, "sharedfile");
                lookup = input.getSharedRAbundVectors();
@@ -623,12 +623,7 @@ int RemoveGroupsCommand::readList(){
                map<string, string> variables; 
         variables["[filename]"] = thisOutputDir + m->getRootName(m->getSimpleName(listfile));
         variables["[extension]"] = m->getExtension(listfile);
-               string outputFileName = getOutputFileName("list", variables);
-
-               
-               ofstream out;
-               m->openOutputFile(outputFileName, out);
-               
+                               
                ifstream in;
                m->openInputFile(listfile, in);
                
@@ -641,6 +636,16 @@ int RemoveGroupsCommand::readList(){
                        
                        //read in list vector
                        ListVector list(in);
+            
+            variables["[tag]"] = list.getLabel();
+            string outputFileName = getOutputFileName("list", variables);
+                       
+                       ofstream out;
+                       m->openOutputFile(outputFileName, out);
+                       outputTypes["list"].push_back(outputFileName);  outputNames.push_back(outputFileName);
+            
+            vector<string> binLabels = list.getLabels();
+            vector<string> newBinLabels;
                        
                        //make a new list vector
                        ListVector newList;
@@ -681,24 +686,26 @@ int RemoveGroupsCommand::readList(){
                                //if there are names in this bin add to new list
                                if (newNames != "") {  
                                        newNames = newNames.substr(0, newNames.length()-1); //rip off extra comma
-                                       newList.push_back(newNames);    
+                                       newList.push_back(newNames);
+                    newBinLabels.push_back(binLabels[i]);
                                }
                        }
                        
                        //print new listvector
                        if (newList.getNumBins() != 0) {
                                wroteSomething = true;
+                               newList.setLabels(newBinLabels);
+                newList.printHeaders(out);
                                newList.print(out);
                        }
                        
                        m->gobble(in);
+            out.close();
                }
                in.close();     
-               out.close();
                
-               if (wroteSomething == false) {  m->mothurOut("Your file contains only sequences from the groups you wish to remove."); m->mothurOutEndLine();  }
-               outputTypes["list"].push_back(outputFileName); outputNames.push_back(outputFileName);
                
+               if (wroteSomething == false) {  m->mothurOut("Your file contains only sequences from the groups you wish to remove."); m->mothurOutEndLine();  }
                m->mothurOut("Removed " + toString(removedCount) + " sequences from your list file."); m->mothurOutEndLine();
                
                return 0;