]> git.donarmstrong.com Git - mothur.git/blobdiff - sharedrabundvector.cpp
added concensus command and updated calcs
[mothur.git] / sharedrabundvector.cpp
index a2b79362e273d3dd8168fb51231b66d381254f34..9634613ded396633062188934cab9f1f4a40e9dc 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"
 
@@ -122,6 +118,11 @@ void SharedRAbundVector::set(int binNumber, int newBinSize, string groupname){
                exit(1);
        }
 }
+/***********************************************************************/
+
+void SharedRAbundVector::setData(vector <individual> newData){
+       data = newData;
+}
 
 /***********************************************************************/
 
@@ -129,14 +130,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){
@@ -167,8 +186,64 @@ void SharedRAbundVector::push_back(int binSize, int otu, string groupName){
 
 /***********************************************************************/
 
-void SharedRAbundVector::pop_back(){
+void SharedRAbundVector::insert(int binSize, int otu, string groupName){
+       try {
+               individual newGuy;
+               newGuy.abundance = binSize;
+               newGuy.group = groupName;
+               newGuy.bin = otu;
+               
+               data.insert(data.begin()+otu, newGuy);
+               numBins++;
+       
+               if(binSize > maxRank){
+                       maxRank = binSize;
+               }
+       
+               numSeqs += binSize;
+       }
+       catch(exception& e) {
+               cout << "Standard Error: " << e.what() << " has occurred in the SharedRAbundVector class Function insert. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               exit(1);
+       }
+       catch(...) {
+               cout << "An unknown error has occurred in the SharedRAbundVector class function insert. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               exit(1);
+       }
+}
+
+/***********************************************************************/
+
+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(){
+       numSeqs -= data[data.size()-1].abundance;
+       numBins--;
        return data.pop_back();
 }
 
@@ -202,7 +277,7 @@ void SharedRAbundVector::print(ostream& output){
        try {
                output << numBins << '\t';
        
-               for(int i=0;i<numBins;i++){             output << data[i].abundance << '\t';            }
+               for(int i=0;i<data.size();i++){         output << data[i].abundance << '\t';            }
                output << endl;
        }
        catch(exception& e) {
@@ -244,7 +319,6 @@ int SharedRAbundVector::getNumSeqs(){
 int SharedRAbundVector::getMaxRank(){
        return maxRank;
 }
-
 /***********************************************************************/
 
 SharedRAbundVector SharedRAbundVector::getSharedRAbundVector(){
@@ -271,7 +345,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(){