]> git.donarmstrong.com Git - mothur.git/blobdiff - sharedrabundvector.cpp
fixed bug in read.tree updates help and validparameters strings, added ability for...
[mothur.git] / sharedrabundvector.cpp
index ba8f94d2e03b85589c62238748bc1b4fa8e01676..3d6a2debbc05540cb5d4cb38cba1dab5638c7346 100644 (file)
 using namespace std;
 
 #include "sharedrabundvector.h" 
-#include "datavector.hpp"
 #include "utilities.hpp"
-#include <exception>
-#include "sharedrabundvector.h"
 #include "sabundvector.hpp"
 #include "ordervector.hpp"
+#include <algorithm>
 
 
 /***********************************************************************/
@@ -65,10 +63,11 @@ SharedRAbundVector::SharedRAbundVector(string id, vector<individual> rav) : Data
 
 SharedRAbundVector::SharedRAbundVector(ifstream& f) : DataVector(), maxRank(0), numBins(0), numSeqs(0) {
        try {
-               int i, hold;
+               int i, num;
+               string holdLabel, group
                individual newGuy;
                
-               f >> label >> hold;
+               f >> label >> group >> num;
                
                //initialize data
                for (i=0; i<hold; i++) {
@@ -121,6 +120,11 @@ void SharedRAbundVector::set(int binNumber, int newBinSize, string groupname){
                exit(1);
        }
 }
+/***********************************************************************/
+
+void SharedRAbundVector::setData(vector <individual> newData){
+       data = newData;
+}
 
 /***********************************************************************/
 
@@ -128,14 +132,32 @@ int SharedRAbundVector::getAbundance(int index){
        return data[index].abundance;
        
 }
+/***********************************************************************/
 
+int SharedRAbundVector::numNZ(){
+       int sum = 0;
+       for(int i = 1; i < numBins; i++)
+               if(data[i].abundance > 0)
+                       sum++;
+       return sum;
+}
+/***********************************************************************/
+
+void SharedRAbundVector::sortD(){
+       struct individual indObj;
+       sort(data.begin()+1, data.end(), indObj);
+}
 /***********************************************************************/
 
 individual SharedRAbundVector::get(int index){
        return data[index];
        
 }
+/***********************************************************************/
 
+vector <individual> SharedRAbundVector::getData(){
+       return data;
+}
 /***********************************************************************/
 
 void SharedRAbundVector::push_back(int binSize, int otu, string groupName){
@@ -164,8 +186,36 @@ void SharedRAbundVector::push_back(int binSize, int otu, string groupName){
        }
 }
 
+
 /***********************************************************************/
 
+void SharedRAbundVector::push_front(int binSize, int otu, string groupName){
+       try {
+               individual newGuy;
+               newGuy.abundance = binSize;
+               newGuy.group = groupName;
+               newGuy.bin = otu;
+               
+               data.insert(data.begin(), newGuy);
+               numBins++;
+       
+               if(binSize > maxRank){
+                       maxRank = binSize;
+               }
+       
+               numSeqs += binSize;
+       }
+       catch(exception& e) {
+               cout << "Standard Error: " << e.what() << " has occurred in the SharedRAbundVector class Function push_front. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               exit(1);
+       }
+       catch(...) {
+               cout << "An unknown error has occurred in the SharedRAbundVector class function push_front. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               exit(1);
+       }
+}
+
+/***********************************************************************/
 void SharedRAbundVector::pop_back(){
 
        return data.pop_back();
@@ -223,7 +273,10 @@ string SharedRAbundVector::getGroup(){
 void SharedRAbundVector::setGroup(string groupName){
        group = groupName;
 }
-
+/***********************************************************************/
+int SharedRAbundVector::getGroupIndex()  { return index; }
+/***********************************************************************/
+void SharedRAbundVector::setGroupIndex(int vIndex)     { index = vIndex; }
 /***********************************************************************/
 int SharedRAbundVector::getNumBins(){
        return numBins;
@@ -240,7 +293,6 @@ int SharedRAbundVector::getNumSeqs(){
 int SharedRAbundVector::getMaxRank(){
        return maxRank;
 }
-
 /***********************************************************************/
 
 SharedRAbundVector SharedRAbundVector::getSharedRAbundVector(){
@@ -267,7 +319,25 @@ RAbundVector SharedRAbundVector::getRAbundVector() {
                exit(1);
        }
 }
+/***********************************************************************/
 
+RAbundVector SharedRAbundVector::getRAbundVector2() {
+       try {
+               RAbundVector rav;
+               for(int i = 0; i < numBins; i++)
+                       if(data[i].abundance != 0)
+                               rav.push_back(data[i].abundance-1);
+               return rav;
+       }
+       catch(exception& e) {
+               cout << "Standard Error: " << e.what() << " has occurred in the SharedRAbundVector class Function getRAbundVector. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               exit(1);
+       }
+       catch(...) {
+               cout << "An unknown error has occurred in the SharedRAbundVector class function getRAbundVector. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               exit(1);
+       }
+}
 /***********************************************************************/
 
 SharedSAbundVector SharedRAbundVector::getSharedSAbundVector(){