--- /dev/null
+#ifndef DOTAXONOMY_H
+#define DOTAXONOMY_H
+
+/*
+ * phylotree.h
+ *
+ *
+ * Created by Pat Schloss on 6/17/09.
+ * Copyright 2009 Patrick D. Schloss. All rights reserved.
+ *
+ */
+
+#include "mothur.h"
+#include "mothurout.h"
+
+/**************************************************************************************************/
+
+struct TaxNode {
+ vector<string> accessions; //names of seqs in this branch of tree
+ map<string, int> children; //childs name to index in tree
+ int parent, childNumber, level;
+ string name, heirarchyID;
+
+ TaxNode(string n) : name(n), level(0), parent(-1) { }
+ TaxNode(){}
+};
+
+/**************************************************************************************************/
+
+class PhyloTree {
+
+public:
+ PhyloTree();
+ PhyloTree(string); //pass it a taxonomy file and it makes the tree
+ PhyloTree(ifstream&, string); //pass it a taxonomy file and it makes the train.tree
+ ~PhyloTree() {};
+ int addSeqToTree(string, string);
+ void assignHeirarchyIDs(int);
+ void printTreeNodes(string); //used by bayesian to save time
+ vector<int> getGenusNodes();
+ vector<int> getGenusTotals();
+ void setUp(string); //used to create file needed for summary file if you use () constructor and add seqs manually instead of passing taxonomyfile
+
+ TaxNode get(int i);
+ TaxNode get(string seqName);
+ string getName(int i);
+ int getIndex(string seqName);
+ string getFullTaxonomy(string); //pass a sequence name return taxonomy
+
+ int getMaxLevel() { return maxLevel; }
+ int getNumSeqs() { return numSeqs; }
+ int getNumNodes() { return tree.size(); }
+
+ bool ErrorCheck(vector<string>);
+
+private:
+ string getNextTaxon(string&, string);
+ void print(ofstream&, vector<TaxNode>&); //used to create static reference taxonomy file
+ void fillOutTree(int, vector<TaxNode>&); //used to create static reference taxonomy file
+ void binUnclassified(string);
+
+ vector<TaxNode> tree;
+ vector<int> genusIndex; //holds the indexes in tree where the genus level taxonomies are stored
+ vector<int> totals; //holds the numSeqs at each genus level taxonomy
+ map<string, int> name2Taxonomy; //maps name to index in tree
+ map<int, int> uniqueTaxonomies; //map of unique taxonomies
+ map<int, int> leafNodes; //used to create static reference taxonomy file
+ //void print(int, ofstream&);
+ int numNodes;
+ int numSeqs;
+ int maxLevel;
+ bool calcTotals;
+ MothurOut* m;
+};
+
+/**************************************************************************************************/
+
+#endif
+
+