2 #include "textfile.h"
\r
10 static void MSAFromFileName(const char *FileName, MSA &a)
\r
12 TextFile File(FileName);
\r
16 static ProfPos *ProfileFromMSALocal(MSA &msa, Tree &tree)
\r
18 const unsigned uSeqCount = msa.GetSeqCount();
\r
19 for (unsigned uSeqIndex = 0; uSeqIndex < uSeqCount; ++uSeqIndex)
\r
20 msa.SetSeqId(uSeqIndex, uSeqIndex);
\r
22 TreeFromMSA(msa, tree, g_Cluster1, g_Distance1, g_Root1);
\r
23 SetMuscleTree(tree);
\r
24 return ProfileFromMSA(msa);
\r
29 if (0 == g_pstrFileName1 || 0 == g_pstrFileName2)
\r
30 Quit("Must specify both -in1 and -in2 for -sw");
\r
32 SetSeqWeightMethod(g_SeqWeight1);
\r
37 MSAFromFileName(g_pstrFileName1, msa1);
\r
38 MSAFromFileName(g_pstrFileName2, msa2);
\r
40 ALPHA Alpha = ALPHA_Undefined;
\r
44 Alpha = msa1.GuessAlpha();
\r
47 case SEQTYPE_Protein:
\r
48 Alpha = ALPHA_Amino;
\r
60 Quit("Invalid SeqType");
\r
67 if (ALPHA_DNA == Alpha || ALPHA_RNA == Alpha)
\r
68 SetPPScore(PPSCORE_SPN);
\r
70 const unsigned uSeqCount1 = msa1.GetSeqCount();
\r
71 const unsigned uSeqCount2 = msa2.GetSeqCount();
\r
72 const unsigned uMaxSeqCount = (uSeqCount1 > uSeqCount2 ? uSeqCount1 : uSeqCount2);
\r
73 MSA::SetIdCount(uMaxSeqCount);
\r
75 unsigned uLength1 = msa1.GetColCount();
\r
76 unsigned uLength2 = msa2.GetColCount();
\r
81 ProfPos *Prof1 = ProfileFromMSALocal(msa1, tree1);
\r
82 ProfPos *Prof2 = ProfileFromMSALocal(msa2, tree2);
\r
85 SW(Prof1, uLength1, Prof2, uLength2, Path);
\r
92 AlignTwoMSAsGivenPathSW(Path, msa1, msa2, msaOut);
\r
98 TextFile fileOut(g_pstrOutFileName, true);
\r
99 msaOut.ToFile(fileOut);
\r