]> git.donarmstrong.com Git - mothur.git/blobdiff - sharedordervector.cpp
filterseqscommand added
[mothur.git] / sharedordervector.cpp
index 6aeb4ce5ab19a655c832343cb601c715777c2534..2830cec3011c4ff713172d198ae03fd93955c0a6 100644 (file)
@@ -11,8 +11,7 @@ using namespace std;
 
 
 #include "sharedordervector.h"
-#include "utilities.hpp"
-#include <exception>
+#include "sharedutilities.h"
 
 /***********************************************************************/
 
@@ -30,9 +29,10 @@ 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;
                
                if (globaldata->gGroupmap == NULL) {  groupmap = new GroupMap(); }
                
@@ -53,8 +53,9 @@ SharedOrderVector::SharedOrderVector(ifstream& f) : DataVector() {
                
                for(int i=0;i<num;i++){
                        f >> inputData;
+                       
                        for (int j = 0; j < inputData; j++) {
-                               push_back(i+1, i+1, groupN);
+                               push_back(i, i, groupN);
                                numSeqs++;
                        }
                }
@@ -77,8 +78,9 @@ SharedOrderVector::SharedOrderVector(ifstream& f) : DataVector() {
                        
                        for(int i=0;i<num;i++){
                                f >> inputData;
+                               
                                for (int j = 0; j < inputData; j++) {
-                                       push_back(i+1, i+1, groupN);
+                                       push_back(i, i, groupN);
                                        numSeqs++;
                                }
                        }
@@ -94,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";
@@ -109,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;
 }
 
@@ -137,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();
 }
 
 /***********************************************************************/
@@ -156,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();
 }
 
 /***********************************************************************/
@@ -294,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) {
@@ -317,6 +341,7 @@ SharedSAbundVector SharedOrderVector::getSharedSAbundVector(string group) {
 /***********************************************************************/
 
 SharedOrderVector SharedOrderVector::getSharedOrderVector(){
+       random_shuffle(data.begin(), data.end());
        return *this;                   
 }