]> git.donarmstrong.com Git - mothur.git/blobdiff - removeotulabelscommand.cpp
fixes while testing 1.33.0
[mothur.git] / removeotulabelscommand.cpp
index 148758a369f77f85e8c9832d69b3916e13365396..18322f1bcb46d0eeeb698b3e759c885e8b923437 100644 (file)
@@ -234,6 +234,12 @@ int RemoveOtuLabelsCommand::execute(){
         
         //get labels you want to keep
                labels = m->readAccnos(accnosfile);
+        //simplfy labels
+        set<string> newLabels;
+        for (set<string>::iterator it = labels.begin(); it != labels.end(); it++) {  newLabels.insert(m->getSimpleLabel(*it)); }
+        labels = newLabels;
+        
+        if (m->debug) { m->mothurOut("[DEBUG]: numlabels = " + toString(labels.size()) + "\n"); }
                
                if (m->control_pressed) { return 0; }
                
@@ -289,7 +295,7 @@ int RemoveOtuLabelsCommand::readClassifyOtu(){
                int removedCount = 0;
                
         //read headers
-        string headers = m->getline(in);
+        string headers = m->getline(in); m->gobble(in);
         out << headers << endl;
         
         while (!in.eof()) {
@@ -301,7 +307,9 @@ int RemoveOtuLabelsCommand::readClassifyOtu(){
             
             in >> otu >> size >> tax; m->gobble(in);
             
-            if (labels.count(otu) == 0) {
+            if (m->debug) { m->mothurOut("[DEBUG]: " + otu + toString(size) + tax + "\n"); }
+            
+            if (labels.count(m->getSimpleLabel(otu)) == 0) {
                                wroteSomething = true;
                 out << otu << '\t' << size << '\t' << tax << endl;
             }else {  removedCount++;  }
@@ -341,7 +349,7 @@ int RemoveOtuLabelsCommand::readOtuAssociation(){
                int removedCount = 0;
                
         //read headers
-        string headers = m->getline(in);
+        string headers = m->getline(in); m->gobble(in);
         out << headers << endl;
         
         while (!in.eof()) {
@@ -353,7 +361,7 @@ int RemoveOtuLabelsCommand::readOtuAssociation(){
             in >> otu1 >> otu2;
             string line = m->getline(in); m->gobble(in);
             
-            if ((labels.count(otu1) == 0) && (labels.count(otu2) == 0)){
+            if ((labels.count(m->getSimpleLabel(otu1)) == 0) && (labels.count(m->getSimpleLabel(otu2)) == 0)){
                                wroteSomething = true;
                 
                 out << otu1 << '\t' << otu2 << '\t' << line << endl;
@@ -395,7 +403,7 @@ int RemoveOtuLabelsCommand::readCorrAxes(){
                int removedCount = 0;
                
         //read headers
-        string headers = m->getline(in);
+        string headers = m->getline(in); m->gobble(in);
         out << headers << endl;
         
         while (!in.eof()) {
@@ -406,7 +414,7 @@ int RemoveOtuLabelsCommand::readCorrAxes(){
             in >> otu;
             string line = m->getline(in); m->gobble(in);
             
-            if (labels.count(otu) == 0) {
+            if (labels.count(m->getSimpleLabel(otu)) == 0) {
                                wroteSomething = true;
                 
                 out << otu << '\t' << line << endl;
@@ -454,9 +462,9 @@ int RemoveOtuLabelsCommand::readShared(){
             if (m->control_pressed) { for (int j = 0; j < newLookup.size(); j++) { delete newLookup[j]; } for (int j = 0; j < lookup.size(); j++) { delete lookup[j]; } return 0; }
             
             //is this otu on the list
-            if (labels.count(m->currentBinLabels[i]) == 0) {
+            if (labels.count(m->getSimpleLabel(m->currentSharedBinLabels[i])) == 0) {
                 wroteSomething = true;
-                newLabels.push_back(m->currentBinLabels[i]);
+                newLabels.push_back(m->currentSharedBinLabels[i]);
                 for (int j = 0; j < newLookup.size(); j++) { //add this OTU to the new lookup
                     newLookup[j]->push_back(lookup[j]->getAbundance(i), lookup[j]->getGroup());
                 }
@@ -476,7 +484,7 @@ int RemoveOtuLabelsCommand::readShared(){
         
                for (int j = 0; j < lookup.size(); j++) { delete lookup[j]; }
         
-        m->currentBinLabels = newLabels;
+        m->currentSharedBinLabels = newLabels;
         
                newLookup[0]->printHeaders(out);
                
@@ -510,23 +518,16 @@ int RemoveOtuLabelsCommand::readList(){
         newList.setLabel(list->getLabel());
         int removedCount = 0;
         bool wroteSomething = false;
-        string snumBins = toString(list->getNumBins());
         
+        vector<string> binLabels = list->getLabels();
+        vector<string> newLabels;
         for (int i = 0; i < list->getNumBins(); i++) {
             
             if (m->control_pressed) { delete list; return 0;}
             
-            //create a label for this otu
-            string otuLabel = "Otu";
-            string sbinNumber = toString(i+1);
-            if (sbinNumber.length() < snumBins.length()) { 
-                int diff = snumBins.length() - sbinNumber.length();
-                for (int h = 0; h < diff; h++) { otuLabel += "0"; }
-            }
-            otuLabel += sbinNumber; 
-            
-            if (labels.count(otuLabel) == 0) {
+            if (labels.count(m->getSimpleLabel(binLabels[i])) == 0) {
                 newList.push_back(list->get(i));
+                newLabels.push_back(binLabels[i]);
             }else { removedCount++; }
         }
         
@@ -544,6 +545,8 @@ int RemoveOtuLabelsCommand::readList(){
         //print new listvector
         if (newList.getNumBins() != 0) {
             wroteSomething = true;
+            newList.setLabels(newLabels);
+            newList.printHeaders(out);
             newList.print(out);
         }
                out.close();