X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=blobdiff_plain;f=sharedordervector.h;h=7d383ac84f431830e2324cd51d4777d80a3390e0;hp=ef9d6a75b9821ff013a7e94d0c3f67f57886bcf8;hb=b206f634aae1b4ce13978d203247fb64757d5482;hpb=20a2d0350a737a434c89f303662d64a8eeea7b05 diff --git a/sharedordervector.h b/sharedordervector.h index ef9d6a7..7d383ac 100644 --- a/sharedordervector.h +++ b/sharedordervector.h @@ -2,25 +2,48 @@ #define SHAREDORDER_H /* * sharedorder.h - * Dotur + * Mothur * * Created by Sarah Westcott on 12/9/08. - * Copyright 2008 __MyCompanyName__. All rights reserved. + * Copyright 2008 Schloss Lab UMASS Amherst. All rights reserved. * */ + + /* This class is a child to datavector. It represents OTU information at a certain distance. + It is similiar to an order vector except each member of data knows which group it belongs to. + Each member of the internal container "data" represents is an individual which knows the OTU from which it came, + the group it is in and the abundance is equal to the OTU number. */ + -#include #include "datavector.hpp" -#include "sabundvector.hpp" -#include "rabundvector.hpp" struct individual { string group; int bin; int abundance; + bool operator()(const individual& i1, const individual& i2) { + return (i1.abundance > i2.abundance); + } + individual() { group = ""; bin = 0; abundance = 0; } +}; + +struct individualFloat { + string group; + int bin; + float abundance; + bool operator()(const individual& i1, const individual& i2) { + return (i1.abundance > i2.abundance); + } + individualFloat() { group = ""; bin = 0; abundance = 0.0; } }; +#include "sabundvector.hpp" +#include "rabundvector.hpp" +#include "sharedrabundvector.h" +#include "sharedsabundvector.h" +#include "groupmap.h" + class SharedOrderVector : public DataVector { public: @@ -29,18 +52,19 @@ public: SharedOrderVector(const SharedOrderVector& ov) : DataVector(ov.label), data(ov.data), maxRank(ov.maxRank), numBins(ov.numBins), numSeqs(ov.numSeqs), needToUpdate(ov.needToUpdate) {if(needToUpdate == 1){ updateStats();}}; SharedOrderVector(string, vector); -// SharedOrderVector(ifstream&); + SharedOrderVector(ifstream&); ~SharedOrderVector(){}; - void set(int, int, int, string); + individual get(int); - void push_back(int, int, string); void resize(int); int size(); void print(ostream&); vector::iterator begin(); vector::iterator end(); - + void push_back(int, int, string); //OTU, abundance, group MUST CALL UPDATE STATS AFTER PUSHBACK!!! + void updateStats(); + void clear(); int getNumBins(); int getNumSeqs(); @@ -50,15 +74,20 @@ public: SAbundVector getSAbundVector(); OrderVector getOrderVector(map*); SharedOrderVector getSharedOrderVector(); + SharedRAbundVector getSharedRAbundVector(string); //get the sharedRabundvector for a sepecific group + SharedSAbundVector getSharedSAbundVector(string); //get the sharedSabundvector for a sepecific group + vector getSharedRAbundVector(); //returns sharedRabundVectors for all the users groups private: + GroupMap* groupmap; vector data; map< int, vector >::iterator it; int maxRank; int numBins; int numSeqs; bool needToUpdate; - void updateStats(); + void set(int, int, int, string); //index, OTU, abundance, group + }; #endif