3 #include "objscore.h"
\r
8 TICKS g_ticksObjScore = 0;
\r
11 SCORE ObjScore(const MSA &msa, const unsigned SeqIndexes1[],
\r
12 unsigned uSeqCount1, const unsigned SeqIndexes2[], unsigned uSeqCount2)
\r
15 TICKS t1 = GetClockTicks();
\r
17 const unsigned uSeqCount = msa.GetSeqCount();
\r
19 OBJSCORE OS = g_ObjScore;
\r
20 if (g_ObjScore == OBJSCORE_SPM)
\r
22 if (uSeqCount <= 100)
\r
35 MSAFromSeqSubset(msa, SeqIndexes1, uSeqCount1, msa1);
\r
36 MSAFromSeqSubset(msa, SeqIndexes2, uSeqCount2, msa2);
\r
38 SetMSAWeightsMuscle(msa1);
\r
39 SetMSAWeightsMuscle(msa2);
\r
45 // Yuck -- casting away const (design flaw)
\r
46 SetMSAWeightsMuscle((MSA &) msa);
\r
54 Score = ObjScoreSP(msa);
\r
58 Score = ObjScoreDP(msa1, msa2);
\r
62 Score = ObjScoreXP(msa1, msa2);
\r
66 Score = ObjScorePS(msa);
\r
70 Score = ObjScoreSPDimer(msa);
\r
74 Quit("Invalid g_ObjScore=%d", g_ObjScore);
\r
77 TICKS t2 = GetClockTicks();
\r
78 g_ticksObjScore += (t2 - t1);
\r
83 SCORE ObjScoreIds(const MSA &msa, const unsigned Ids1[],
\r
84 unsigned uCount1, const unsigned Ids2[], unsigned uCount2)
\r
87 TICKS t1 = GetClockTicks();
\r
89 unsigned *SeqIndexes1 = new unsigned[uCount1];
\r
90 unsigned *SeqIndexes2 = new unsigned[uCount2];
\r
92 for (unsigned n = 0; n < uCount1; ++n)
\r
93 SeqIndexes1[n] = msa.GetSeqIndex(Ids1[n]);
\r
95 for (unsigned n = 0; n < uCount2; ++n)
\r
96 SeqIndexes2[n] = msa.GetSeqIndex(Ids2[n]);
\r
99 extern SCORE ObjScoreDA(const MSA &msa, SCORE *ptrLetters, SCORE *ptrGaps);
\r
100 SCORE Letters, Gaps;
\r
101 SCORE dObjScore = ObjScoreDA(msa, &Letters, &Gaps);
\r
103 delete[] SeqIndexes1;
\r
104 delete[] SeqIndexes2;
\r
106 SCORE dObjScore = ObjScore(msa, SeqIndexes1, uCount1, SeqIndexes2, uCount2);
\r
109 TICKS t2 = GetClockTicks();
\r
110 g_ticksObjScore += (t2 - t1);
\r