Next version of JABA
[jabaws.git] / binaries / src / muscle / muscleout.cpp
1 #include "muscle.h"\r
2 #include "msa.h"\r
3 #include "params.h"\r
4 #include "textfile.h"\r
5 \r
6 static void DoOutput(MSA &msa)\r
7         {\r
8         bool AnyOutput = false;\r
9 \r
10 // Value options\r
11         if (g_pstrFASTAOutFileName)\r
12                 {\r
13                 TextFile File(g_pstrFASTAOutFileName, true);\r
14                 msa.ToFASTAFile(File);\r
15                 AnyOutput = true;\r
16                 }\r
17 \r
18         if (g_pstrMSFOutFileName)\r
19                 {\r
20                 TextFile File(g_pstrMSFOutFileName, true);\r
21                 msa.ToMSFFile(File);\r
22                 AnyOutput = true;\r
23                 }\r
24 \r
25         if (g_pstrClwOutFileName)\r
26                 {\r
27                 TextFile File(g_pstrClwOutFileName, true);\r
28                 msa.ToAlnFile(File);\r
29                 AnyOutput = true;\r
30                 }\r
31 \r
32         if (g_pstrClwStrictOutFileName)\r
33                 {\r
34                 g_bClwStrict = true;\r
35                 TextFile File(g_pstrClwStrictOutFileName, true);\r
36                 msa.ToAlnFile(File);\r
37                 AnyOutput = true;\r
38                 }\r
39 \r
40         if (g_pstrHTMLOutFileName)\r
41                 {\r
42                 TextFile File(g_pstrHTMLOutFileName, true);\r
43                 msa.ToHTMLFile(File);\r
44                 AnyOutput = true;\r
45                 }\r
46 \r
47         if (g_pstrPHYIOutFileName)\r
48                 {\r
49                 TextFile File(g_pstrPHYIOutFileName, true);\r
50                 msa.ToPhyInterleavedFile(File);\r
51                 AnyOutput = true;\r
52                 }\r
53 \r
54         if (g_pstrPHYSOutFileName)\r
55                 {\r
56                 TextFile File(g_pstrPHYSOutFileName, true);\r
57                 msa.ToPhySequentialFile(File);\r
58                 AnyOutput = true;\r
59                 }\r
60 \r
61 // Flag options, at most one used (because only one -out filename)\r
62         TextFile fileOut(g_pstrOutFileName, true);\r
63         if (g_bFASTA)\r
64                 {\r
65                 msa.ToFASTAFile(fileOut);\r
66                 AnyOutput = true;\r
67                 }\r
68         else if (g_bMSF)\r
69                 {\r
70                 msa.ToMSFFile(fileOut);\r
71                 AnyOutput = true;\r
72                 }\r
73         else if (g_bAln)\r
74                 {\r
75                 msa.ToAlnFile(fileOut);\r
76                 AnyOutput = true;\r
77                 }\r
78         else if (g_bHTML)\r
79                 {\r
80                 msa.ToHTMLFile(fileOut);\r
81                 AnyOutput = true;\r
82                 }\r
83         else if (g_bPHYI)\r
84                 {\r
85                 msa.ToPhyInterleavedFile(fileOut);\r
86                 AnyOutput = true;\r
87                 }\r
88         else if (g_bPHYS)\r
89                 {\r
90                 msa.ToPhySequentialFile(fileOut);\r
91                 AnyOutput = true;\r
92                 }\r
93 \r
94 // If -out option was given but no flags, output as FASTA\r
95         if (!AnyOutput)\r
96                 msa.ToFASTAFile(fileOut);\r
97         \r
98         fileOut.Close();\r
99 \r
100         if (0 != g_pstrScoreFileName)\r
101                 WriteScoreFile(msa);\r
102         }\r
103 \r
104 void MuscleOutput(MSA &msa)\r
105         {\r
106         MHackEnd(msa);\r
107         if (g_bStable)\r
108                 {\r
109                 MSA msaStable;\r
110                 Stabilize(msa, msaStable);\r
111                 msa.Clear();    // save memory\r
112                 DoOutput(msaStable);\r
113                 }\r
114         else\r
115                 DoOutput(msa);\r
116         }\r