Mac binaries
[jabaws.git] / website / archive / binaries / mac / src / muscle / refinetreee.cpp
1 #include "muscle.h"\r
2 #include "msa.h"\r
3 #include "tree.h"\r
4 #include "profile.h"\r
5 #include <stdio.h>\r
6 \r
7 #define TRACE   0\r
8 \r
9 void RefineTreeE(MSA &msa, const SeqVect &v, Tree &tree, ProgNode *ProgNodes)\r
10         {\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
14 \r
15         if (uSeqCount < 3)\r
16                 return;\r
17 \r
18 #if     DEBUG\r
19         ValidateMuscleIds(msa);\r
20         ValidateMuscleIds(tree);\r
21 #endif\r
22 \r
23         const unsigned uNodeCount = tree.GetNodeCount();\r
24         unsigned *uNewNodeIndexToOldNodeIndex= new unsigned[uNodeCount];\r
25 \r
26         Tree Tree2;\r
27         TreeFromMSA(msa, Tree2, g_Cluster2, g_Distance2, g_Root2, g_pstrDistMxFileName2);\r
28 \r
29 #if     DEBUG\r
30         ValidateMuscleIds(Tree2);\r
31 #endif\r
32 \r
33         DiffTreesE(Tree2, tree, uNewNodeIndexToOldNodeIndex);\r
34 \r
35         unsigned uRoot = Tree2.GetRootNodeIndex();\r
36         if (NODE_CHANGED == uNewNodeIndexToOldNodeIndex[uRoot])\r
37                 {\r
38                 MSA msa2;\r
39                 RealignDiffsE(msa, v, Tree2, tree, uNewNodeIndexToOldNodeIndex, msa2, ProgNodes);\r
40                 tree.Copy(Tree2);\r
41                 msa.Copy(msa2);\r
42 #if     DEBUG\r
43                 ValidateMuscleIds(msa2);\r
44 #endif\r
45                 }\r
46 \r
47         delete[] uNewNodeIndexToOldNodeIndex;\r
48 \r
49         SetCurrentAlignment(msa);\r
50         ProgressStepsDone();\r
51         }\r