Next version of JABA
[jabaws.git] / binaries / src / muscle / refine.cpp
1 #include "muscle.h"\r
2 #include "textfile.h"\r
3 #include "seqvect.h"\r
4 #include "distfunc.h"\r
5 #include "msa.h"\r
6 #include "tree.h"\r
7 #include "clust.h"\r
8 #include "profile.h"\r
9 #include "clustsetmsa.h"\r
10 \r
11 void Refine()\r
12         {\r
13         SetOutputFileName(g_pstrOutFileName);\r
14         SetInputFileName(g_pstrInFileName);\r
15         SetStartTime();\r
16 \r
17         SetMaxIters(g_uMaxIters);\r
18         SetSeqWeightMethod(g_SeqWeight1);\r
19 \r
20         TextFile fileIn(g_pstrInFileName);\r
21         MSA msa;\r
22         msa.FromFile(fileIn);\r
23 \r
24         const unsigned uSeqCount = msa.GetSeqCount();\r
25         if (0 == uSeqCount)\r
26                 Quit("No sequences in input file");\r
27 \r
28         ALPHA Alpha = ALPHA_Undefined;\r
29         switch (g_SeqType)\r
30                 {\r
31         case SEQTYPE_Auto:\r
32                 Alpha = msa.GuessAlpha();\r
33                 break;\r
34 \r
35         case SEQTYPE_Protein:\r
36                 Alpha = ALPHA_Amino;\r
37                 break;\r
38 \r
39         case SEQTYPE_DNA:\r
40                 Alpha = ALPHA_DNA;\r
41                 break;\r
42 \r
43         case SEQTYPE_RNA:\r
44                 Alpha = ALPHA_RNA;\r
45                 break;\r
46 \r
47         default:\r
48                 Quit("Invalid SeqType");\r
49                 }\r
50         SetAlpha(Alpha);\r
51         msa.FixAlpha();\r
52 \r
53         SetPPScore();\r
54         if (ALPHA_DNA == Alpha || ALPHA_RNA == Alpha)\r
55                 SetPPScore(PPSCORE_SPN);\r
56 \r
57         MSA::SetIdCount(uSeqCount);\r
58 \r
59 // Initialize sequence ids.\r
60 // From this point on, ids must somehow propogate from here.\r
61         for (unsigned uSeqIndex = 0; uSeqIndex < uSeqCount; ++uSeqIndex)\r
62                 msa.SetSeqId(uSeqIndex, uSeqIndex);\r
63         SetMuscleInputMSA(msa);\r
64 \r
65         Tree GuideTree;\r
66         TreeFromMSA(msa, GuideTree, g_Cluster2, g_Distance2, g_Root2);\r
67         SetMuscleTree(GuideTree);\r
68 \r
69         if (g_bAnchors)\r
70                 RefineVert(msa, GuideTree, g_uMaxIters);\r
71         else\r
72                 RefineHoriz(msa, GuideTree, g_uMaxIters, false, false);\r
73 \r
74         ValidateMuscleIds(msa);\r
75         ValidateMuscleIds(GuideTree);\r
76 \r
77 //      TextFile fileOut(g_pstrOutFileName, true);\r
78 //      msa.ToFile(fileOut);\r
79         MuscleOutput(msa);\r
80         }\r