*
*/
-#include <map>
-#include <string>
-#include <iostream>
-#include <fstream>
-#include "utilities.hpp"
+#include "mothur.h"
+#include "groupmap.h"
+#include "listvector.hpp"
/* This class is used by the read.tree command to build the tree container. */
int vectorIndex;
};
-
+class GroupMap;
+class ListVector;
class TreeMap {
public:
- TreeMap() {};
+ TreeMap() { m = MothurOut::getInstance(); }
TreeMap(string);
~TreeMap();
- void readMap();
+ int readMap();
int getNumGroups();
int getNumSeqs();
void setIndex(string, int); //sequencename, index
int getIndex(string); //returns vector index of sequence
+ bool isValidGroup(string); //return true if string is a valid group
+ void removeSeq(string); //removes a sequence, this is to accomadate trees that do not contain all the seqs in your groupfile
string getGroup(string);
- vector<string> namesOfGroups;
+ void addSeq(string, string);
+ void addGroup(string s) { setNamesOfGroups(s); }
+ vector<string> getNamesOfGroups() {
+ sort(namesOfGroups.begin(), namesOfGroups.end());
+ return namesOfGroups;
+ }
vector<string> namesOfSeqs;
map<string,int> seqsPerGroup; //groupname, number of seqs in that group.
- map<string, GroupIndex> treemap; //sequence name and groupname
+ map<string, GroupIndex> treemap; //sequence name and <groupname, vector index>
void print(ostream&);
+ void makeSim(vector<string>); //takes groupmap info and fills treemap for use by tree.shared command.
+ void makeSim(ListVector*); //takes listvector info and fills treemap for use by tree.shared command.
private:
+ vector<string> namesOfGroups;
ifstream fileHandle;
string groupFileName;
int numGroups;
map<string, GroupIndex>::iterator it;
map<string, int>::iterator it2;
void setNamesOfGroups(string);
+ MothurOut* m;
+
};