--- /dev/null
+#ifndef TREEMAP_H
+#define TREEMAP_H
+/*
+ * treemap.h
+ * Mothur
+ *
+ * Created by Sarah Westcott on 1/26/09.
+ * Copyright 2009 Schloss Lab UMASS Amherst. All rights reserved.
+ *
+ */
+
+#include "mothur.h"
+#include "listvector.hpp"
+
+/* This class is used by the read.tree command to build the tree container. */
+
+struct GroupIndex {
+ string groupname;
+ int vectorIndex;
+};
+
+class TreeMap {
+public:
+ TreeMap() { m = MothurOut::getInstance(); }
+ TreeMap(string);
+ ~TreeMap();
+
+ int readMap();
+ int readMap(string);
+ 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);
+ void addSeq(string, string);
+ void addGroup(string s) { setNamesOfGroups(s); }
+ vector<string> getNamesOfGroups() {
+ sort(namesOfGroups.begin(), namesOfGroups.end());
+ return namesOfGroups;
+ }
+
+ 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.
+ vector<string> getNamesSeqs();
+ vector<string> getNamesSeqs(vector<string>); //get names of seqs belonging to a group or set of groups
+ int getCopy(TreeMap&);
+
+ vector<string> namesOfSeqs;
+ map<string,int> seqsPerGroup; //groupname, number of seqs in that group.
+ map<string, GroupIndex> treemap; //sequence name and <groupname, vector index>
+
+
+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;
+
+
+};
+
+#endif