]> git.donarmstrong.com Git - mothur.git/blob - counttable.h
added SequenceCountParser class to parse the count table by group. added count parame...
[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 #include "listvector.hpp"
41
42 class CountTable {
43     
44     public:
45     
46         CountTable() { m = MothurOut::getInstance(); hasGroups = false; total = 0; }
47         ~CountTable() {}
48     
49         int readTable(string);
50     
51         bool hasGroupInfo() { return hasGroups; }
52         int getNumGroups() { return groups.size(); }
53         vector<string> getNamesOfGroups() {  return groups;   }  //returns group names, if no group info vector is blank.
54         
55         int push_back(string); //add a sequence 
56         int push_back(string, int); //add a sequence 
57         int push_back(string, vector<int>); //add a sequence with group info
58         int get(string); //returns unique sequence index for reading distance matrices like NameAssignment
59         int size() { return indexNameMap.size(); }
60     
61         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.
62         int getGroupCount(string, string); //returns number of seqs for that group for that seq
63         int getGroupCount(string); // returns total seqs for that group
64         int getNumSeqs(string); //returns total seqs for that seq
65         int getNumSeqs() { return total; } //return total number of seqs
66         int getNumUniqueSeqs() { return uniques; } //return number of unique/representative seqs
67         int getGroupIndex(string); //returns index in getGroupCounts vector of specific group
68     
69         vector<string> getNamesOfSeqs();
70         int mergeCounts(string, string); //combines counts for 2 seqs, saving under the first name passed in.
71         ListVector getListVector();
72     
73     private:
74         string filename;
75         MothurOut* m;
76         bool hasGroups;
77         int total, uniques;
78         vector<string> groups;
79         vector< vector<int> > counts;
80         vector<int> totals;
81         vector<int> totalGroups;
82         map<string, int> indexNameMap;
83         map<string, int> indexGroupMap;
84     
85 };
86
87 #endif