]> git.donarmstrong.com Git - mothur.git/blobdiff - sharedordervector.cpp
adding labels to list file.
[mothur.git] / sharedordervector.cpp
index 37cd28315a5c1928e965f7be8eef7ae0ef408692..80b8fb9bd45a8596e91afe30fdec3984b2411de6 100644 (file)
@@ -38,12 +38,48 @@ SharedOrderVector::SharedOrderVector(ifstream& f) : DataVector() {  //reads in a
                individual newguy;
                
                //read in first row since you know there is at least 1 group.
-               f >> label >> groupN >> num;
+               //are we at the beginning of the file??
+               if (m->saveNextLabel == "") {  
+                       f >> label; 
+                       
+                       //is this a shared file that has headers
+                       if (label == "label") { 
+                               //gets "group"
+                               f >> label; m->gobble(f);
+                               
+                               //gets "numOtus"
+                               f >> label; m->gobble(f);
+                               
+                               //eat rest of line
+                               label = m->getline(f); m->gobble(f);
+                               
+                               //parse labels to save
+                               istringstream iStringStream(label);
+                               m->sharedBinLabelsInFile.clear();
+                               while(!iStringStream.eof()){
+                                       if (m->control_pressed) { break; }
+                                       string temp;
+                                       iStringStream >> temp;  m->gobble(iStringStream);
+                                       
+                                       m->sharedBinLabelsInFile.push_back(temp);
+                               }
+                               
+                               f >> label;
+                       }
+               }else { label = m->saveNextLabel; }
+               
+               //reset labels, currentLabels may have gotten changed as otus were eliminated because of group choices or sampling
+               m->currentSharedBinLabels = m->sharedBinLabelsInFile;
+               
+               //read in first row since you know there is at least 1 group.
+               f >> groupN >> num;
+               
                holdLabel = label;
                
                
+               vector<string> allGroups;
                //save group in groupmap
-               groupmap->namesOfGroups.push_back(groupN);
+               allGroups.push_back(groupN);
                groupmap->groupIndex[groupN] = 0;
                
                
@@ -58,7 +94,7 @@ SharedOrderVector::SharedOrderVector(ifstream& f) : DataVector() {  //reads in a
                
                m->gobble(f); 
                
-               if (f.eof() != true) { f >> nextLabel; }
+               if (!(f.eof())) { f >> nextLabel; }
                
                //read the rest of the groups info in
                while ((nextLabel == holdLabel) && (f.eof() != true)) {
@@ -67,7 +103,7 @@ SharedOrderVector::SharedOrderVector(ifstream& f) : DataVector() {  //reads in a
                        
                        
                        //save group in groupmap
-                       groupmap->namesOfGroups.push_back(groupN);
+                       allGroups.push_back(groupN);
                        groupmap->groupIndex[groupN] = count;
                        
                        
@@ -86,10 +122,10 @@ SharedOrderVector::SharedOrderVector(ifstream& f) : DataVector() {  //reads in a
 
                }
                
-               //put file pointer back since you are now at a new distance label
-               for (int i = 0; i < nextLabel.length(); i++) { f.unget();  }
-       
-               m->namesOfGroups = groupmap->namesOfGroups;
+               m->saveNextLabel = nextLabel;
+                       
+               groupmap->setNamesOfGroups(allGroups);
+               m->setAllGroups(allGroups);
                
                updateStats();
                
@@ -285,8 +321,12 @@ vector<SharedRAbundVector*> SharedOrderVector::getSharedRAbundVector() {
                util = new SharedUtil();
                vector<SharedRAbundVector*> lookup;
                
-               util->setGroups(m->Groups, m->namesOfGroups);
-               util->getSharedVectors(m->Groups, lookup, this);
+               vector<string> Groups = m->getGroups();
+               vector<string> allGroups = m->getAllGroups();
+               util->setGroups(Groups, allGroups);
+               util->getSharedVectors(Groups, lookup, this);
+               m->setGroups(Groups);
+               m->setAllGroups(allGroups);
                
                return lookup;
        }