]> git.donarmstrong.com Git - mothur.git/blobdiff - sharedordervector.cpp
added concensus command and updated calcs
[mothur.git] / sharedordervector.cpp
index 2092706d8cf5a5c429fb937820663ff0a5738be1..2830cec3011c4ff713172d198ae03fd93955c0a6 100644 (file)
@@ -11,8 +11,7 @@ using namespace std;
 
 
 #include "sharedordervector.h"
-#include "utilities.hpp"
-
+#include "sharedutilities.h"
 
 /***********************************************************************/
 
@@ -30,7 +29,7 @@ SharedOrderVector::SharedOrderVector(string id, vector<individual>  ov) :
 //This function is used to read a .shared file for the collect.shared, rarefaction.shared and summary.shared commands
 //if you don't use a list and groupfile.  
 
-SharedOrderVector::SharedOrderVector(ifstream& f) : DataVector() {
+SharedOrderVector::SharedOrderVector(ifstream& f) : DataVector() {  //reads in a shared file
        try {
                globaldata = GlobalData::getInstance();
                maxRank = 0; numBins = 0; numSeqs = 0;
@@ -56,7 +55,7 @@ SharedOrderVector::SharedOrderVector(ifstream& f) : DataVector() {
                        f >> inputData;
                        
                        for (int j = 0; j < inputData; j++) {
-                               push_back(i+1, i+1, groupN);
+                               push_back(i, i, groupN);
                                numSeqs++;
                        }
                }
@@ -81,7 +80,7 @@ SharedOrderVector::SharedOrderVector(ifstream& f) : DataVector() {
                                f >> inputData;
                                
                                for (int j = 0; j < inputData; j++) {
-                                       push_back(i+1, i+1, groupN);
+                                       push_back(i, i, groupN);
                                        numSeqs++;
                                }
                        }
@@ -97,8 +96,9 @@ SharedOrderVector::SharedOrderVector(ifstream& f) : DataVector() {
                f.seekg(pos, ios::beg);
        
                if (globaldata->gGroupmap == NULL) { globaldata->gGroupmap = groupmap; }
-       
+               
                updateStats();
+               
        }
        catch(exception& e) {
                cout << "Standard Error: " << e.what() << " has occurred in the SharedOrderVector class Function SharedOrderVector. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
@@ -112,21 +112,18 @@ SharedOrderVector::SharedOrderVector(ifstream& f) : DataVector() {
 /***********************************************************************/
 
 int SharedOrderVector::getNumBins(){
-       if(needToUpdate == 1){  updateStats();  }
        return numBins;
 }
 
 /***********************************************************************/
 
 int SharedOrderVector::getNumSeqs(){
-       if(needToUpdate == 1){  updateStats();  }
        return numSeqs;
 }
 
 /***********************************************************************/
 
 int SharedOrderVector::getMaxRank(){
-       if(needToUpdate == 1){  updateStats();  }
        return maxRank;
 }
 
@@ -140,8 +137,8 @@ void SharedOrderVector::set(int index, int binNumber, int abund, string groupNam
        data[index].group = groupName;
        data[index].bin = binNumber;
        data[index].abundance = abund;
-       needToUpdate = 1;
-       
+       //if (abund > maxRank) { maxRank = abund; }
+       updateStats();
 }
 
 /***********************************************************************/
@@ -159,8 +156,10 @@ void SharedOrderVector::push_back(int binNumber, int abund, string groupName){
        newGuy.abundance = abund;
        newGuy.bin = binNumber;
        data.push_back(newGuy);
-       needToUpdate = 1;
-       
+       //numSeqs++;
+       //numBins++;
+       //if (abund > maxRank) { maxRank = abund; }
+       updateStats();
 }
 
 /***********************************************************************/
@@ -297,6 +296,28 @@ SharedRAbundVector SharedOrderVector::getSharedRAbundVector(string group) {
                exit(1);
        }
        
+}
+/***********************************************************************/
+vector<SharedRAbundVector*> SharedOrderVector::getSharedRAbundVector() {
+       try {
+               SharedUtil* util;
+               util = new SharedUtil();
+               vector<SharedRAbundVector*> lookup;
+               
+               util->setGroups(globaldata->Groups, globaldata->gGroupmap->namesOfGroups);
+               util->getSharedVectors(globaldata->Groups, lookup, this);
+               
+               return lookup;
+       }
+       catch(exception& e) {
+               cout << "Standard Error: " << e.what() << " has occurred in the SharedOrderVector class Function getSharedRAbundVector. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               exit(1);
+       }
+       catch(...) {
+               cout << "An unknown error has occurred in the SharedOrderVector class function getSharedRAbundVector. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               exit(1);
+       }
+       
 }
 /***********************************************************************/
 SharedSAbundVector SharedOrderVector::getSharedSAbundVector(string group) {
@@ -320,6 +341,7 @@ SharedSAbundVector SharedOrderVector::getSharedSAbundVector(string group) {
 /***********************************************************************/
 
 SharedOrderVector SharedOrderVector::getSharedOrderVector(){
+       random_shuffle(data.begin(), data.end());
        return *this;                   
 }