2 #include "textfile.h"
\r
6 #include "objscore.h"
\r
8 bool g_bTracePPScore = false;
\r
9 MSA *g_ptrPPScoreMSA1 = 0;
\r
10 MSA *g_ptrPPScoreMSA2 = 0;
\r
12 static ProfPos *ProfileFromMSALocal(MSA &msa, Tree &tree)
\r
14 const unsigned uSeqCount = msa.GetSeqCount();
\r
15 for (unsigned uSeqIndex = 0; uSeqIndex < uSeqCount; ++uSeqIndex)
\r
16 msa.SetSeqId(uSeqIndex, uSeqIndex);
\r
18 TreeFromMSA(msa, tree, g_Cluster2, g_Distance2, g_Root1);
\r
19 SetMuscleTree(tree);
\r
20 return ProfileFromMSA(msa);
\r
25 if (0 == g_pstrFileName1 || 0 == g_pstrFileName2)
\r
26 Quit("-ppscore needs -in1 and -in2");
\r
28 SetSeqWeightMethod(g_SeqWeight1);
\r
30 TextFile file1(g_pstrFileName1);
\r
31 TextFile file2(g_pstrFileName2);
\r
36 msa1.FromFile(file1);
\r
37 msa2.FromFile(file2);
\r
39 const unsigned uLength1 = msa1.GetColCount();
\r
40 const unsigned uLength2 = msa2.GetColCount();
\r
42 if (uLength1 != uLength2)
\r
43 Quit("Profiles must have the same length");
\r
45 ALPHA Alpha = ALPHA_Undefined;
\r
49 Alpha = msa1.GuessAlpha();
\r
52 case SEQTYPE_Protein:
\r
53 Alpha = ALPHA_Amino;
\r
65 Quit("Invalid SeqType");
\r
72 if (ALPHA_DNA == Alpha || ALPHA_RNA == Alpha)
\r
73 SetPPScore(PPSCORE_SPN);
\r
75 const unsigned uSeqCount1 = msa1.GetSeqCount();
\r
76 const unsigned uSeqCount2 = msa2.GetSeqCount();
\r
77 const unsigned uMaxSeqCount = (uSeqCount1 > uSeqCount2 ? uSeqCount1 : uSeqCount2);
\r
78 MSA::SetIdCount(uMaxSeqCount);
\r
82 ProfPos *Prof1 = ProfileFromMSALocal(msa1, tree1);
\r
83 ProfPos *Prof2 = ProfileFromMSALocal(msa2, tree2);
\r
85 g_bTracePPScore = true;
\r
86 g_ptrPPScoreMSA1 = &msa1;
\r
87 g_ptrPPScoreMSA2 = &msa2;
\r
89 SCORE Score = ObjScoreDP_Profs(Prof1, Prof2, uLength1);
\r
91 Log("Score=%.4g\n", Score);
\r
92 printf("Score=%.4g\n", Score);
\r