Change Eclipse configuration
[jabaws.git] / website / archive / binaries / mac / src / muscle / refinetree.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 void RefineTree(MSA &msa, Tree &tree)\r
8         {\r
9         const unsigned uSeqCount = msa.GetSeqCount();\r
10         if (tree.GetLeafCount() != uSeqCount)\r
11                 Quit("Refine tree, tree has different number of nodes");\r
12 \r
13         if (uSeqCount < 3)\r
14                 return;\r
15 \r
16 #if     DEBUG\r
17         ValidateMuscleIds(msa);\r
18         ValidateMuscleIds(tree);\r
19 #endif\r
20 \r
21         unsigned *IdToDiffsLeafNodeIndex = new unsigned[uSeqCount];\r
22         unsigned uDiffsCount = uSeqCount;\r
23         Tree Tree2;\r
24         for (unsigned uIter = 0; uIter < g_uMaxTreeRefineIters; ++uIter)\r
25                 {\r
26                 TreeFromMSA(msa, Tree2, g_Cluster2, g_Distance2, g_Root2, g_pstrDistMxFileName2);\r
27 \r
28 #if     DEBUG\r
29                 ValidateMuscleIds(Tree2);\r
30 #endif\r
31 \r
32                 Tree Diffs;\r
33                 DiffTrees(Tree2, tree, Diffs, IdToDiffsLeafNodeIndex);\r
34 \r
35                 tree.Copy(Tree2);\r
36 \r
37                 const unsigned uNewDiffsNodeCount = Diffs.GetNodeCount();\r
38                 const unsigned uNewDiffsCount = (uNewDiffsNodeCount - 1)/2;\r
39 \r
40                 if (0 == uNewDiffsCount || uNewDiffsCount >= uDiffsCount)\r
41                         {\r
42                         ProgressStepsDone();\r
43                         break;\r
44                         }\r
45                 uDiffsCount = uNewDiffsCount;\r
46 \r
47                 MSA msa2;\r
48                 RealignDiffs(msa, Diffs, IdToDiffsLeafNodeIndex, msa2);\r
49 \r
50 #if     DEBUG\r
51                 ValidateMuscleIds(msa2);\r
52 #endif\r
53 \r
54                 msa.Copy(msa2);\r
55                 SetCurrentAlignment(msa);\r
56                 }\r
57 \r
58         delete[] IdToDiffsLeafNodeIndex;\r
59         }\r