]> git.donarmstrong.com Git - mothur.git/blobdiff - sharedrabundvector.cpp
made sorting optional but sort by default, in case the user wants to see the heatmap...
[mothur.git] / sharedrabundvector.cpp
index a2b79362e273d3dd8168fb51231b66d381254f34..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>
 
 
 /***********************************************************************/
@@ -122,6 +120,11 @@ void SharedRAbundVector::set(int binNumber, int newBinSize, string groupname){
                exit(1);
        }
 }
+/***********************************************************************/
+
+void SharedRAbundVector::setData(vector <individual> newData){
+       data = newData;
+}
 
 /***********************************************************************/
 
@@ -129,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){
@@ -165,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();
@@ -244,7 +293,6 @@ int SharedRAbundVector::getNumSeqs(){
 int SharedRAbundVector::getMaxRank(){
        return maxRank;
 }
-
 /***********************************************************************/
 
 SharedRAbundVector SharedRAbundVector::getSharedRAbundVector(){
@@ -271,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(){