]> git.donarmstrong.com Git - mothur.git/blob - counttable.h
8c970199babf9d45f3a624d3456d39732fc3e5e2
[mothur.git] / counttable.h
1 #ifndef Mothur_counttable_h
2 #define Mothur_counttable_h
3
4
5 //
6 //  counttable.h
7 //  Mothur
8 //
9 //  Created by Sarah Westcott on 6/26/12.
10 //  Copyright (c) 2012 Schloss Lab. All rights reserved.
11 //
12
13 //This class is designed to read a count table file and store its data.
14 //count table files look like:
15
16 /*
17  Representative_Sequence        total   F003D000        F003D002        F003D004        F003D006        F003D008        F003D142        F003D144        F003D146        F003D148        F003D150        MOCK.GQY1XT001  
18  GQY1XT001C296C 6051    409     985     923     937     342     707     458     439     387     464     0       
19  GQY1XT001A3TJI 4801    396     170     413     442     306     769     581     576     497     651     0       
20  GQY1XT001CS2B8 3018    263     226     328     460     361     336     248     290     187     319     0       
21  GQY1XT001CD9IB 2736    239     177     256     405     306     286     263     248     164     392     0       
22  
23  or if no group info was used to create it
24  
25  Representative_Sequence        total   
26  GQY1XT001C296C 6051
27  GQY1XT001A3TJI 4801
28  GQY1XT001CS2B8 3018
29  GQY1XT001CD9IB 2736
30  GQY1XT001ARCB1 2183
31  GQY1XT001CNF2P 2796
32  GQY1XT001CJMDA 1667
33  GQY1XT001CBVJB 3758
34  
35  
36  */
37
38
39 #include "mothurout.h"
40
41 class CountTable {
42     
43     public:
44     
45         CountTable() { m = MothurOut::getInstance(); hasGroups = false; total = 0; }
46         ~CountTable() {}
47     
48         int readTable(string);
49     
50         bool hasGroupInfo() { return hasGroups; }
51         int getNumGroups() { return groups.size(); }
52         vector<string> getNamesOfGroups() {  return groups;   }  //returns group names, if no group info vector is blank.
53     
54         vector<int> getGroupCounts(string);  //returns group counts for a seq passed in, if no group info is in file vector is blank. Order is the same as the groups returned by getGroups function.
55         int getGroupCount(string, string); //returns number of seqs for that group for that seq
56         int getGroupCount(string); // returns total seqs for that group
57         int getNumSeqs(string); //returns total seqs for that seq
58         int getNumSeqs() { return total; } //return total number of seqs
59         int getNumUniqueSeqs() { return uniques; } //return number of unique/representative seqs
60         int getGroupIndex(string); //returns index in getGroupCounts vector of specific group
61         vector<string> getNamesOfSeqs();
62     
63     private:
64         string filename;
65         MothurOut* m;
66         bool hasGroups;
67         int total, uniques;
68         vector<string> groups;
69         vector< vector<int> > counts;
70         vector<int> totals;
71         vector<int> totalGroups;
72         map<string, int> indexNameMap;
73         map<string, int> indexGroupMap;
74     
75 };
76
77 #endif