]> git.donarmstrong.com Git - mothur.git/blobdiff - tree.cpp
added log10 and log2 scalers for heatmap
[mothur.git] / tree.cpp
index 22892e2cbd7c9738261d5632492eafe674e7471b..f93b9335749b4e79bb8c3e3c1be58684efc1cf65 100644 (file)
--- a/tree.cpp
+++ b/tree.cpp
@@ -13,9 +13,9 @@
 /*****************************************************************/
 Tree::Tree() {
        try {
-       
                globaldata = GlobalData::getInstance();
-               numLeaves = globaldata->gTreemap->getNumSeqs();
+               
+               numLeaves = globaldata->Treenames.size();
                numNodes = 2*numLeaves - 1;
                
                tree.resize(numNodes);
@@ -24,13 +24,13 @@ Tree::Tree() {
                for (int i = 0; i < numNodes; i++) {
                        //initialize leaf nodes
                        if (i <= (numLeaves-1)) {
-                               tree[i].setName(globaldata->gTreemap->namesOfSeqs[i]);
-                               tree[i].setGroup(globaldata->gTreemap->getGroup(globaldata->gTreemap->namesOfSeqs[i]));
+                               tree[i].setName(globaldata->Treenames[i]);
+                               tree[i].setGroup(globaldata->gTreemap->getGroup(globaldata->Treenames[i]));
                                //set pcount and pGroup for groupname to 1.
-                               tree[i].pcount[globaldata->gTreemap->getGroup(globaldata->gTreemap->namesOfSeqs[i])] = 1;
-                               tree[i].pGroups[globaldata->gTreemap->getGroup(globaldata->gTreemap->namesOfSeqs[i])] = 1;
+                               tree[i].pcount[globaldata->gTreemap->getGroup(globaldata->Treenames[i])] = 1;
+                               tree[i].pGroups[globaldata->gTreemap->getGroup(globaldata->Treenames[i])] = 1;
                                //Treemap knows name, group and index to speed up search
-                               globaldata->gTreemap->setIndex(globaldata->gTreemap->namesOfSeqs[i], i);
+                               globaldata->gTreemap->setIndex(globaldata->Treenames[i], i);
        
                        //intialize non leaf nodes
                        }else if (i > (numLeaves-1)) {
@@ -486,7 +486,7 @@ int Tree::findRoot() {
        try {
                for (int i = 0; i < numNodes; i++) {
                        //you found the root
-                       if (tree[i].getParent() == -1) { return i; }
+                       if (tree[i].getParent() == -1) { return i; }  
                }
                return -1;
        }
@@ -511,8 +511,16 @@ void Tree::printBranch(int node) {
                        out << ",";
                        printBranch(tree[node].getRChild());
                        out << ")";
+                       //if there is a branch length then print it
+                       if (tree[node].getBranchLength() != -1) {
+                               out << ":" << tree[node].getBranchLength();
+                       }
                }else { //you are a leaf
-                       out << tree[node].getGroup() << ":" << tree[node].getBranchLength();
+                       out << tree[node].getGroup(); 
+                       //if there is a branch length then print it
+                       if (tree[node].getBranchLength() != -1) {
+                               out << ":" << tree[node].getBranchLength();
+                       }
                }
                
        }