9 void RefineTreeE(MSA &msa, const SeqVect &v, Tree &tree, ProgNode *ProgNodes)
\r
11 const unsigned uSeqCount = msa.GetSeqCount();
\r
12 if (tree.GetLeafCount() != uSeqCount)
\r
13 Quit("Refine tree, tree has different number of nodes");
\r
19 ValidateMuscleIds(msa);
\r
20 ValidateMuscleIds(tree);
\r
23 const unsigned uNodeCount = tree.GetNodeCount();
\r
24 unsigned *uNewNodeIndexToOldNodeIndex= new unsigned[uNodeCount];
\r
27 TreeFromMSA(msa, Tree2, g_Cluster2, g_Distance2, g_Root2, g_pstrDistMxFileName2);
\r
30 ValidateMuscleIds(Tree2);
\r
33 DiffTreesE(Tree2, tree, uNewNodeIndexToOldNodeIndex);
\r
35 unsigned uRoot = Tree2.GetRootNodeIndex();
\r
36 if (NODE_CHANGED == uNewNodeIndexToOldNodeIndex[uRoot])
\r
39 RealignDiffsE(msa, v, Tree2, tree, uNewNodeIndexToOldNodeIndex, msa2, ProgNodes);
\r
43 ValidateMuscleIds(msa2);
\r
47 delete[] uNewNodeIndexToOldNodeIndex;
\r
49 SetCurrentAlignment(msa);
\r
50 ProgressStepsDone();
\r