]> git.donarmstrong.com Git - mothur.git/blobdiff - removegroupscommand.cpp
changed rarefaction.single output
[mothur.git] / removegroupscommand.cpp
index 725efafebce46296da2d9fd60a367ddc44d18fc2..e5a3bb2edc7fc97dacb89393ef3a2968b64247b4 100644 (file)
@@ -191,13 +191,9 @@ RemoveGroupsCommand::RemoveGroupsCommand(string option)  {
                        else { m->setNameFile(namefile); }
                        
                        groupfile = validParameter.validFile(parameters, "group", true);
-                       if (groupfile == "not open") { abort = true; }
-                       else if (groupfile == "not found") {            
-                               //if there is a current group file, use it
-                               groupfile = m->getGroupFile(); 
-                               if (groupfile != "") { m->mothurOut("Using " + groupfile + " as input file for the group parameter."); m->mothurOutEndLine(); }
-                               else {  m->mothurOut("You have no current groupfile and the group parameter is required."); m->mothurOutEndLine(); abort = true; }
-                       }else { m->setGroupFile(groupfile); }   
+                       if (groupfile == "not open") { groupfile = "";  abort = true; }
+                       else if (groupfile == "not found") {    groupfile = "";         }
+                       else { m->setGroupFile(groupfile); }    
                        
                        listfile = validParameter.validFile(parameters, "list", true);
                        if (listfile == "not open") { listfile = ""; abort = true; }
@@ -379,9 +375,16 @@ int RemoveGroupsCommand::readFasta(){
                                //if this name is in the accnos file
                                if (names.count(name) == 0) {
                                        wroteSomething = true;
-                                       
-                                       currSeq.printSequence(out);
-                               }else { removedCount++; }
+                                       currSeq.printSequence(out); 
+                               }else { 
+                                       //if you are not in the accnos file check if you are a name that needs to be changed
+                                       map<string, string>::iterator it = uniqueToRedundant.find(name);
+                                       if (it != uniqueToRedundant.end()) {
+                                               wroteSomething = true;
+                                               currSeq.setName(it->second);
+                                               currSeq.printSequence(out);
+                                       }else { removedCount++; }
+                               }
                        }
                        m->gobble(in);
                }
@@ -527,12 +530,23 @@ int RemoveGroupsCommand::readList(){
                                        
                                        //if that name is in the .accnos file, add it
                                        if (names.count(name) == 0) {  newNames += name + ",";  }
-                                       else { removedCount++; }
+                                       else {
+                                               //if you are not in the accnos file check if you are a name that needs to be changed
+                                               map<string, string>::iterator it = uniqueToRedundant.find(name);
+                                               if (it != uniqueToRedundant.end()) {
+                                                       newNames += it->second + ",";
+                                               }else { removedCount++; }
+                                       }
                                }
                                
                                //get last name
                                if (names.count(binnames) == 0) {  newNames += binnames + ",";  }
-                               else { removedCount++; }
+                               else { //if you are not in the accnos file check if you are a name that needs to be changed
+                                       map<string, string>::iterator it = uniqueToRedundant.find(binnames);
+                                       if (it != uniqueToRedundant.end()) {
+                                               newNames += it->second + ",";
+                                       }else { removedCount++; }
+                               }
                                
                                //if there are names in this bin add to new list
                                if (newNames != "") {  
@@ -624,6 +638,7 @@ int RemoveGroupsCommand::readName(){
                                        //you know you have at least one valid second since first column is valid
                                        for (int i = 0; i < validSecond.size()-1; i++) {  out << validSecond[i] << ',';  }
                                        out << validSecond[validSecond.size()-1] << endl;
+                                       uniqueToRedundant[firstCol] = validSecond[0];
                                }
                        }
                        
@@ -718,7 +733,12 @@ int RemoveGroupsCommand::readTax(){
                        if (names.count(name) == 0) {
                                wroteSomething = true;
                                out << name << '\t' << tax << endl;
-                       }else {  removedCount++;  }
+                       }else {  //if you are not in the accnos file check if you are a name that needs to be changed
+                               map<string, string>::iterator it = uniqueToRedundant.find(name);
+                               if (it != uniqueToRedundant.end()) {
+                                       wroteSomething = true;
+                                       out << it->second << '\t' << tax << endl;
+                               }else { removedCount++; }  }
                        
                        m->gobble(in);
                }