]> git.donarmstrong.com Git - mothur.git/blob - sharedrabundvector.h
added modify names parameter to set.dir
[mothur.git] / sharedrabundvector.h
1 #ifndef SHAREDRABUNDVECTOR_H
2 #define SHAREDRABUNDVECTOR_H
3
4 /*
5  *  sharedrabundvector.h
6  *  Dotur
7  *
8  *  Created by Sarah Westcott on 12/5/08.
9  *  Copyright 2008 Schloss Lab UMASS Amherst. All rights reserved.
10  *
11  */
12
13 #include "datavector.hpp"
14 #include "sharedordervector.h"
15 #include "sharedsabundvector.h"
16 #include "sharedrabundfloatvector.h"
17 #include "rabundvector.hpp"
18 //#include "groupmap.h"
19
20 /*  DataStructure for a shared file.
21         This class is a child to datavector.  It represents OTU information at a certain distance. 
22         It is similiar to an rabundvector except each member of data knows which group it belongs to.
23         Each member of the internal container "data" is a struct of type individual. 
24         An individual which knows the OTU from which it came, 
25         the group it is in and its abundance.  */
26
27
28 class SharedRAbundVector : public DataVector {
29         
30 public:
31         SharedRAbundVector();
32         SharedRAbundVector(int);
33         //SharedRAbundVector(string, vector<int>);
34         SharedRAbundVector(const SharedRAbundVector& bv) : DataVector(bv), data(bv.data), maxRank(bv.maxRank), numBins(bv.numBins), numSeqs(bv.numSeqs), group(bv.group), index(bv.index){};
35     SharedRAbundVector(ifstream&);
36         ~SharedRAbundVector();
37
38         int getNumBins();               
39         int getNumSeqs();                                                       
40         int getMaxRank();
41         string getGroup();
42         void setGroup(string);
43         string getBinLabel();
44         void setBinLabel(string);
45         int getGroupIndex();
46         void setGroupIndex(int);                                                                
47
48         void set(int, int, string);                     //OTU, abundance, groupname
49         void setData(vector <individual>);
50         individual get(int);
51         vector <individual> getData();
52         int getAbundance(int);
53     vector<int> getAbundances();
54         int numNZ();
55         void sortD();  //Sorts the data in descending order.
56         void push_front(int, int, string); //abundance, otu, groupname
57         void insert(int, int, string); //abundance, otu, groupname
58         void push_back(int, string);  //abundance, groupname
59         void pop_back();
60         void resize(int);
61         int size();
62         void clear();
63         vector<individual>::reverse_iterator rbegin();
64         vector<individual>::reverse_iterator rend();
65         
66         void print(ostream&);
67         void printHeaders(ostream&);
68                 
69         RAbundVector getRAbundVector();
70         RAbundVector getRAbundVector2();
71         SAbundVector getSAbundVector();
72         OrderVector getOrderVector(map<string,int>*);
73         SharedOrderVector getSharedOrderVector();
74         SharedSAbundVector getSharedSAbundVector();
75         SharedRAbundVector getSharedRAbundVector();
76         vector<SharedRAbundVector*> getSharedRAbundVectors();
77         vector<SharedRAbundFloatVector*> getSharedRAbundFloatVectors(vector<SharedRAbundVector*>);
78         
79 private:
80         vector<individual>  data; 
81         vector<SharedRAbundVector*> lookup;
82         //GlobalData* globaldata;
83         //GroupMap* groupmap;
84         int maxRank;
85         int numBins;
86         int numSeqs;
87         string group;
88         int index;      
89         
90         int eliminateZeroOTUS(vector<SharedRAbundVector*>&);
91 };
92
93
94 #endif
95