1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
#ifndef LIST_H
#define LIST_H
#include "datavector.hpp"
/* DataStructure for a list file.
This class is a child to datavector. It represents OTU information at a certain distance.
A list vector can be converted into and ordervector, rabundvector or sabundvector.
Each member of the internal container "data" represents an individual OTU.
So data[0] = "a,b,c,d,e,f".
example: listvector = a,b,c,d,e,f g,h,i j,k l m
rabundvector = 6 3 2 1 1
sabundvector = 2 1 1 0 0 1
ordervector = 1 1 1 1 1 1 2 2 2 3 3 4 5 */
class ListVector : public DataVector {
public:
ListVector();
ListVector(string);
ListVector(int);
ListVector(int, string);
ListVector(string, vector<string>, string&);
ListVector(const ListVector& lv) : DataVector(lv.label), data(lv.data), maxRank(lv.maxRank), numBins(lv.numBins), numSeqs(lv.numSeqs), binLabels(lv.binLabels), otuTag(lv.otuTag), printListHeaders(lv.printListHeaders) {};
ListVector(ifstream&, string&, string&);
~ListVector(){};
int getNumBins() { return numBins; }
int getNumSeqs() { return numSeqs; }
int getMaxRank() { return maxRank; }
void set(int, string);
string get(int);
vector<string> getLabels();
string getOTUName(int bin);
int getOTUTotal(string otuLabel); //returns 0 if otuLabel is not found
void setLabels(vector<string>);
bool getPrintedLabels();
void setPrintedLabels(bool pl) { printListHeaders = pl; }
void push_back(string);
int push_back(string, int, string binLabel="");
void resize(int);
void clear();
int size();
void print(ostream&);
void print(ostream&, bool);
void print(ostream&, map<string, int>&);
RAbundVector getRAbundVector();
SAbundVector getSAbundVector();
OrderVector getOrderVector(map<string,int>*);
private:
vector<string> data; //data[i] is a list of names of sequences in the ith OTU.
int maxRank;
int numBins;
int numSeqs;
vector<string> binLabels;
string otuTag;
bool printListHeaders;
void printHeaders(ostream&, map<string, int>&, bool);
};
#endif
|