+++ /dev/null
-#include "muscle.h"\r
-#include "msa.h"\r
-#include "tree.h"\r
-#include "profile.h"\r
-#include <stdio.h>\r
-\r
-#define TRACE 0\r
-\r
-void RefineTreeE(MSA &msa, const SeqVect &v, Tree &tree, ProgNode *ProgNodes)\r
- {\r
- const unsigned uSeqCount = msa.GetSeqCount();\r
- if (tree.GetLeafCount() != uSeqCount)\r
- Quit("Refine tree, tree has different number of nodes");\r
-\r
- if (uSeqCount < 3)\r
- return;\r
-\r
-#if DEBUG\r
- ValidateMuscleIds(msa);\r
- ValidateMuscleIds(tree);\r
-#endif\r
-\r
- const unsigned uNodeCount = tree.GetNodeCount();\r
- unsigned *uNewNodeIndexToOldNodeIndex= new unsigned[uNodeCount];\r
-\r
- Tree Tree2;\r
- TreeFromMSA(msa, Tree2, g_Cluster2, g_Distance2, g_Root2, g_pstrDistMxFileName2);\r
-\r
-#if DEBUG\r
- ValidateMuscleIds(Tree2);\r
-#endif\r
-\r
- DiffTreesE(Tree2, tree, uNewNodeIndexToOldNodeIndex);\r
-\r
- unsigned uRoot = Tree2.GetRootNodeIndex();\r
- if (NODE_CHANGED == uNewNodeIndexToOldNodeIndex[uRoot])\r
- {\r
- MSA msa2;\r
- RealignDiffsE(msa, v, Tree2, tree, uNewNodeIndexToOldNodeIndex, msa2, ProgNodes);\r
- tree.Copy(Tree2);\r
- msa.Copy(msa2);\r
-#if DEBUG\r
- ValidateMuscleIds(msa2);\r
-#endif\r
- }\r
-\r
- delete[] uNewNodeIndexToOldNodeIndex;\r
-\r
- SetCurrentAlignment(msa);\r
- ProgressStepsDone();\r
- }\r