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