+++ /dev/null
-#include "muscle.h"\r
-#include "msa.h"\r
-#include "objscore.h"\r
-#include "profile.h"\r
-#include "timing.h"\r
-\r
-#if TIMING\r
-TICKS g_ticksObjScore = 0;\r
-#endif\r
-\r
-SCORE ObjScore(const MSA &msa, const unsigned SeqIndexes1[],\r
- unsigned uSeqCount1, const unsigned SeqIndexes2[], unsigned uSeqCount2)\r
- {\r
-#if TIMING\r
- TICKS t1 = GetClockTicks();\r
-#endif\r
- const unsigned uSeqCount = msa.GetSeqCount();\r
-\r
- OBJSCORE OS = g_ObjScore;\r
- if (g_ObjScore == OBJSCORE_SPM)\r
- {\r
- if (uSeqCount <= 100)\r
- OS = OBJSCORE_XP;\r
- else\r
- OS = OBJSCORE_SPF;\r
- }\r
-\r
- MSA msa1;\r
- MSA msa2;\r
-\r
- switch (OS)\r
- {\r
- case OBJSCORE_DP:\r
- case OBJSCORE_XP:\r
- MSAFromSeqSubset(msa, SeqIndexes1, uSeqCount1, msa1);\r
- MSAFromSeqSubset(msa, SeqIndexes2, uSeqCount2, msa2);\r
-\r
- SetMSAWeightsMuscle(msa1);\r
- SetMSAWeightsMuscle(msa2);\r
- break;\r
-\r
- case OBJSCORE_SP:\r
- case OBJSCORE_SPF:\r
- case OBJSCORE_PS:\r
- // Yuck -- casting away const (design flaw)\r
- SetMSAWeightsMuscle((MSA &) msa);\r
- break;\r
- }\r
-\r
- SCORE Score = 0;\r
- switch (OS)\r
- {\r
- case OBJSCORE_SP:\r
- Score = ObjScoreSP(msa);\r
- break;\r
-\r
- case OBJSCORE_DP:\r
- Score = ObjScoreDP(msa1, msa2);\r
- break;\r
-\r
- case OBJSCORE_XP:\r
- Score = ObjScoreXP(msa1, msa2);\r
- break;\r
-\r
- case OBJSCORE_PS:\r
- Score = ObjScorePS(msa);\r
- break;\r
-\r
- case OBJSCORE_SPF:\r
- Score = ObjScoreSPDimer(msa);\r
- break;\r
- \r
- default:\r
- Quit("Invalid g_ObjScore=%d", g_ObjScore);\r
- }\r
-#if TIMING\r
- TICKS t2 = GetClockTicks();\r
- g_ticksObjScore += (t2 - t1);\r
-#endif\r
- return Score;\r
- }\r
-\r
-SCORE ObjScoreIds(const MSA &msa, const unsigned Ids1[],\r
- unsigned uCount1, const unsigned Ids2[], unsigned uCount2)\r
- {\r
-#if TIMING\r
- TICKS t1 = GetClockTicks();\r
-#endif\r
- unsigned *SeqIndexes1 = new unsigned[uCount1];\r
- unsigned *SeqIndexes2 = new unsigned[uCount2];\r
-\r
- for (unsigned n = 0; n < uCount1; ++n)\r
- SeqIndexes1[n] = msa.GetSeqIndex(Ids1[n]);\r
-\r
- for (unsigned n = 0; n < uCount2; ++n)\r
- SeqIndexes2[n] = msa.GetSeqIndex(Ids2[n]);\r
-\r
-#if DOUBLE_AFFINE\r
- extern SCORE ObjScoreDA(const MSA &msa, SCORE *ptrLetters, SCORE *ptrGaps);\r
- SCORE Letters, Gaps;\r
- SCORE dObjScore = ObjScoreDA(msa, &Letters, &Gaps);\r
-\r
- delete[] SeqIndexes1;\r
- delete[] SeqIndexes2;\r
-#else\r
- SCORE dObjScore = ObjScore(msa, SeqIndexes1, uCount1, SeqIndexes2, uCount2);\r
-#endif\r
-#if TIMING\r
- TICKS t2 = GetClockTicks();\r
- g_ticksObjScore += (t2 - t1);\r
-#endif\r
- return dObjScore;\r
- }\r