X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=tree.cpp;fp=tree.cpp;h=d9b4a9c1e8f4e31475aa5127adb38d339d1a8631;hb=dec4333b64891e0b923c862446cf2e3befa7e3d3;hp=7c9671bf9a91e02b23cfd40b44804c38e3e4354d;hpb=9d241ddf4c0e2467298a523e21a3b0de46902448;p=mothur.git diff --git a/tree.cpp b/tree.cpp index 7c9671b..d9b4a9c 100644 --- a/tree.cpp +++ b/tree.cpp @@ -92,7 +92,6 @@ Tree::Tree(TreeMap* t, vector< vector >& sims) : tmap(t) { m = MothurOut::getInstance(); if (m->runParse == true) { parseTreeFile(); m->runParse = false; } - //for(int i = 0; i < globaldata->Treenames.size(); i++) { cout << i << '\t' << globaldata->Treenames[i] << endl; } numLeaves = m->Treenames.size(); numNodes = 2*numLeaves - 1; @@ -134,12 +133,11 @@ Tree::Tree(TreeMap* t, vector< vector >& sims) : tmap(t) { //build tree from matrix //initialize indexes map indexes; //maps row in simMatrix to vector index in the tree - int numGroups = (tmap->getNamesOfGroups()).size(); - for (int g = 0; g < numGroups; g++) { indexes[g] = g; } + for (int g = 0; g < numLeaves; g++) { indexes[g] = g; } //do merges and create tree structure by setting parents and children //there are numGroups - 1 merges to do - for (int i = 0; i < (numGroups - 1); i++) { + for (int i = 0; i < (numLeaves - 1); i++) { float largest = -1000.0; if (m->control_pressed) { break; } @@ -154,11 +152,11 @@ Tree::Tree(TreeMap* t, vector< vector >& sims) : tmap(t) { //set non-leaf node info and update leaves to know their parents //non-leaf - tree[numGroups + i].setChildren(indexes[row], indexes[column]); + tree[numLeaves + i].setChildren(indexes[row], indexes[column]); //parents - tree[indexes[row]].setParent(numGroups + i); - tree[indexes[column]].setParent(numGroups + i); + tree[indexes[row]].setParent(numLeaves + i); + tree[indexes[column]].setParent(numLeaves + i); //blength = distance / 2; float blength = ((1.0 - largest) / 2); @@ -168,12 +166,12 @@ Tree::Tree(TreeMap* t, vector< vector >& sims) : tmap(t) { tree[indexes[column]].setBranchLength(blength - tree[indexes[column]].getLengthToLeaves()); //set your length to leaves to your childs length plus branchlength - tree[numGroups + i].setLengthToLeaves(tree[indexes[row]].getLengthToLeaves() + tree[indexes[row]].getBranchLength()); + tree[numLeaves + i].setLengthToLeaves(tree[indexes[row]].getLengthToLeaves() + tree[indexes[row]].getBranchLength()); //update index - indexes[row] = numGroups+i; - indexes[column] = numGroups+i; + indexes[row] = numLeaves+i; + indexes[column] = numLeaves+i; //remove highest value that caused the merge. sims[row][column] = -1000.0;