]> git.donarmstrong.com Git - mothur.git/blobdiff - sharedrabundvector.cpp
small bug with trimming of quality scores over a window. lost last base if sequence...
[mothur.git] / sharedrabundvector.cpp
index a050ab3fe71998b5a8a6abf2b34b0e67f0083808..8d0df607401c1b4f6d084812c90c1e719bf84179 100644 (file)
@@ -14,8 +14,7 @@
 
 
 /***********************************************************************/
-
-SharedRAbundVector::SharedRAbundVector() : DataVector(), maxRank(0), numBins(0), numSeqs(0) {globaldata = GlobalData::getInstance();}
+SharedRAbundVector::SharedRAbundVector() : DataVector(), maxRank(0), numBins(0), numSeqs(0) {} 
 /***********************************************************************/
 
 SharedRAbundVector::~SharedRAbundVector() {
@@ -26,7 +25,6 @@ SharedRAbundVector::~SharedRAbundVector() {
 /***********************************************************************/
 
 SharedRAbundVector::SharedRAbundVector(int n) : DataVector(), maxRank(0), numBins(n), numSeqs(0) {
-               globaldata = GlobalData::getInstance();
                individual newGuy;
                //initialize data
                for (int i=0; i< n; i++) {
@@ -61,10 +59,8 @@ SharedRAbundVector::SharedRAbundVector(string id, vector<individual> rav) : Data
 //reads a shared file
 SharedRAbundVector::SharedRAbundVector(ifstream& f) : DataVector(), maxRank(0), numBins(0), numSeqs(0) {
        try {
-               globaldata = GlobalData::getInstance();
-               
-               if (globaldata->gGroupmap == NULL) {  groupmap = new GroupMap(); }
-               
+               m->namesOfGroups.clear();
+                               
                int num, inputData, count;
                count = 0;  
                string holdLabel, nextLabel, groupN;
@@ -72,8 +68,17 @@ SharedRAbundVector::SharedRAbundVector(ifstream& f) : DataVector(), maxRank(0),
                
                for (int i = 0; i < lookup.size(); i++) {  delete lookup[i]; lookup[i] = NULL; }  lookup.clear();
                
-               if (globaldata->saveNextLabel == "") {  f >> label;  }
-               else { label = globaldata->saveNextLabel; }
+               //are we at the beginning of the file??
+               if (m->saveNextLabel == "") {  
+                       f >> label; 
+                       
+                       //is this a shared file that has headers
+                       if (label == "label") { 
+                               //eat rest of line
+                               label = m->getline(f); m->gobble(f);
+                               f >> label;
+                       }
+               }else { label = m->saveNextLabel; }
                
                //read in first row since you know there is at least 1 group.
                f >> groupN >> num;
@@ -86,11 +91,7 @@ SharedRAbundVector::SharedRAbundVector(ifstream& f) : DataVector(), maxRank(0),
                lookup[0]->setLabel(label);
                lookup[0]->setGroup(groupN);
                
-               if (globaldata->gGroupmap == NULL) { 
-                       //save group in groupmap
-                       groupmap->namesOfGroups.push_back(groupN);
-                       groupmap->groupIndex[groupN] = 0;
-               }
+               m->namesOfGroups.push_back(groupN);
                
                //fill vector.  data = first sharedrabund in file
                for(int i=0;i<num;i++){
@@ -112,12 +113,7 @@ SharedRAbundVector::SharedRAbundVector(ifstream& f) : DataVector(), maxRank(0),
                        f >> groupN >> num;
                        count++;
                        
-                       if (globaldata->gGroupmap == NULL) { 
-                               //save group in groupmap
-       
-                               groupmap->namesOfGroups.push_back(groupN);
-                               groupmap->groupIndex[groupN] = count;
-                       }
+                       m->namesOfGroups.push_back(groupN);
                        
                        //add new vector to lookup
                        temp = new SharedRAbundVector();
@@ -135,10 +131,7 @@ SharedRAbundVector::SharedRAbundVector(ifstream& f) : DataVector(), maxRank(0),
                                
                        if (f.eof() != true) { f >> nextLabel; }
                }
-       
-               globaldata->saveNextLabel = nextLabel;
-       
-               if (globaldata->gGroupmap == NULL) { globaldata->gGroupmap = groupmap;  }
+                       m->saveNextLabel = nextLabel;
                
        }
        catch(exception& e) {
@@ -316,8 +309,27 @@ int SharedRAbundVector::size(){
        return data.size();
 }
 
+
+/***********************************************************************/
+void SharedRAbundVector::printHeaders(ostream& output){
+       try {
+               output << "label\tGroup\tnumOtus\t";
+               if (m->sharedHeaderMode == "tax") {
+                       for (int i = 0; i < numBins; i++) {  output << "PhyloType" << (i+1) << '\t'; }
+                       output << endl;
+               }else {
+                       for (int i = 0; i < numBins; i++) {  output << "Otu" << (i+1) << '\t'; }
+                       output << endl;
+               }
+               m->printedHeaders = true;
+       }
+       catch(exception& e) {
+               m->errorOut(e, "SharedRAbundVector", "printHeaders");
+               exit(1);
+       }
+}
 /***********************************************************************/
-void SharedRAbundVector::print(ostream& output){
+void SharedRAbundVector::print(ostream& output) {
        try {
                output << numBins << '\t';
        
@@ -370,12 +382,12 @@ vector<SharedRAbundVector*> SharedRAbundVector::getSharedRAbundVectors(){
                SharedUtil* util;
                util = new SharedUtil();
                
-               util->setGroups(globaldata->Groups, globaldata->gGroupmap->namesOfGroups);
+               util->setGroups(m->Groups, m->namesOfGroups);
                
                bool remove = false;
                for (int i = 0; i < lookup.size(); i++) {
                        //if this sharedrabund is not from a group the user wants then delete it.
-                       if (util->isValidGroup(lookup[i]->getGroup(), globaldata->Groups) == false) { 
+                       if (util->isValidGroup(lookup[i]->getGroup(), m->Groups) == false) { 
                                remove = true;
                                delete lookup[i]; lookup[i] = NULL;
                                lookup.erase(lookup.begin()+i);