Line | |
---|
1 | #include "muscle.h" |
---|
2 | #include "msa.h" |
---|
3 | #include "tree.h" |
---|
4 | #include "profile.h" |
---|
5 | #include <stdio.h> |
---|
6 | |
---|
7 | #define TRACE 0 |
---|
8 | |
---|
9 | void RefineTreeE(MSA &msa, const SeqVect &v, Tree &tree, ProgNode *ProgNodes) |
---|
10 | { |
---|
11 | const unsigned uSeqCount = msa.GetSeqCount(); |
---|
12 | if (tree.GetLeafCount() != uSeqCount) |
---|
13 | Quit("Refine tree, tree has different number of nodes"); |
---|
14 | |
---|
15 | if (uSeqCount < 3) |
---|
16 | return; |
---|
17 | |
---|
18 | #if DEBUG |
---|
19 | ValidateMuscleIds(msa); |
---|
20 | ValidateMuscleIds(tree); |
---|
21 | #endif |
---|
22 | |
---|
23 | const unsigned uNodeCount = tree.GetNodeCount(); |
---|
24 | unsigned *uNewNodeIndexToOldNodeIndex= new unsigned[uNodeCount]; |
---|
25 | |
---|
26 | Tree Tree2; |
---|
27 | TreeFromMSA(msa, Tree2, g_Cluster2, g_Distance2, g_Root2, g_pstrDistMxFileName2); |
---|
28 | |
---|
29 | #if DEBUG |
---|
30 | ValidateMuscleIds(Tree2); |
---|
31 | #endif |
---|
32 | |
---|
33 | DiffTreesE(Tree2, tree, uNewNodeIndexToOldNodeIndex); |
---|
34 | |
---|
35 | unsigned uRoot = Tree2.GetRootNodeIndex(); |
---|
36 | if (NODE_CHANGED == uNewNodeIndexToOldNodeIndex[uRoot]) |
---|
37 | { |
---|
38 | MSA msa2; |
---|
39 | RealignDiffsE(msa, v, Tree2, tree, uNewNodeIndexToOldNodeIndex, msa2, ProgNodes); |
---|
40 | tree.Copy(Tree2); |
---|
41 | msa.Copy(msa2); |
---|
42 | #if DEBUG |
---|
43 | ValidateMuscleIds(msa2); |
---|
44 | #endif |
---|
45 | } |
---|
46 | |
---|
47 | delete[] uNewNodeIndexToOldNodeIndex; |
---|
48 | |
---|
49 | SetCurrentAlignment(msa); |
---|
50 | ProgressStepsDone(); |
---|
51 | } |
---|
Note: See
TracBrowser
for help on using the repository browser.