+++ /dev/null
-#include "muscle.h"\r
-#include "objscore.h"\r
-#include "msa.h"\r
-#include "textfile.h"\r
-#include "pwpath.h"\r
-\r
-const unsigned INDELS = 1;\r
-\r
-static void GetPos(const char Str[], unsigned L, int *pi1, int *pi2)\r
- {\r
- int i1;\r
- for (;;)\r
- {\r
- i1 = rand()%(L-2) + 1;\r
- if (Str[i1] == 'M')\r
- break;\r
- }\r
- int i2;\r
- for (;;)\r
- {\r
- i2 = rand()%(L-2) + 1;\r
- if (i1 != i2 && Str[i2] == 'M')\r
- break;\r
- }\r
- *pi1 = i1;\r
- *pi2 = i2;\r
- }\r
-\r
-static void MakePath(unsigned uSeqLength, unsigned uIndelCount, char Str[])\r
- {\r
- unsigned uPathLength = uSeqLength + uIndelCount;\r
- for (unsigned i = 0; i < uPathLength; ++i)\r
- Str[i] = 'M';\r
-\r
- for (unsigned i = 0; i < uIndelCount; ++i)\r
- {\r
- int i1, i2;\r
- GetPos(Str, uPathLength, &i1, &i2);\r
- Str[i1] = 'D';\r
- Str[i2] = 'I';\r
- }\r
-\r
- Str[uPathLength] = 0;\r
- Log("MakePath=%s\n", Str);\r
- }\r
-\r
-void SPTest()\r
- {\r
- SetPPScore(PPSCORE_SV);\r
-\r
- SetListFileName("c:\\tmp\\muscle.log", false);\r
-\r
- TextFile file1("c:\\tmp\\msa1.afa");\r
- TextFile file2("c:\\tmp\\msa2.afa");\r
-\r
- MSA msa1;\r
- MSA msa2;\r
-\r
- msa1.FromFile(file1);\r
- msa2.FromFile(file2);\r
-\r
- Log("msa1=\n");\r
- msa1.LogMe();\r
- Log("msa2=\n");\r
- msa2.LogMe();\r
-\r
- const unsigned uColCount = msa1.GetColCount();\r
- if (msa2.GetColCount() != uColCount)\r
- Quit("Different lengths");\r
-\r
- const unsigned uSeqCount1 = msa1.GetSeqCount();\r
- const unsigned uSeqCount2 = msa2.GetSeqCount();\r
- const unsigned uSeqCount = uSeqCount1 + uSeqCount2;\r
-\r
- MSA::SetIdCount(uSeqCount);\r
-\r
- for (unsigned uSeqIndex1 = 0; uSeqIndex1 < uSeqCount1; ++uSeqIndex1)\r
- {\r
- msa1.SetSeqWeight(uSeqIndex1, 1.0);\r
- msa1.SetSeqId(uSeqIndex1, uSeqIndex1);\r
- }\r
-\r
- for (unsigned uSeqIndex2 = 0; uSeqIndex2 < uSeqCount2; ++uSeqIndex2)\r
- {\r
- msa2.SetSeqWeight(uSeqIndex2, 1.0);\r
- msa2.SetSeqId(uSeqIndex2, uSeqCount1 + uSeqIndex2);\r
- }\r
-\r
- MSA alnA;\r
- MSA alnB;\r
-\r
- char strPathA[1024];\r
- char strPathB[1024];\r
- MakePath(uColCount, INDELS, strPathA);\r
- MakePath(uColCount, INDELS, strPathB);\r
-\r
- PWPath PathA;\r
- PWPath PathB;\r
- PathA.FromStr(strPathA);\r
- PathB.FromStr(strPathB);\r
-\r
- Log("PathA=\n");\r
- PathA.LogMe();\r
- Log("PathB=\n");\r
- PathB.LogMe();\r
-\r
- AlignTwoMSAsGivenPath(PathA, msa1, msa2, alnA);\r
- AlignTwoMSAsGivenPath(PathB, msa1, msa2, alnB);\r
-\r
- for (unsigned uSeqIndex = 0; uSeqIndex < uSeqCount; ++uSeqIndex)\r
- {\r
- alnA.SetSeqWeight(uSeqIndex, 1.0);\r
- alnB.SetSeqWeight(uSeqIndex, 1.0);\r
- }\r
-\r
- unsigned Seqs1[1024];\r
- unsigned Seqs2[1024];\r
-\r
- for (unsigned uSeqIndex1 = 0; uSeqIndex1 < uSeqCount1; ++uSeqIndex1)\r
- Seqs1[uSeqIndex1] = uSeqIndex1;\r
-\r
- for (unsigned uSeqIndex2 = 0; uSeqIndex2 < uSeqCount2; ++uSeqIndex2)\r
- Seqs2[uSeqIndex2] = uSeqCount1 + uSeqIndex2;\r
-\r
- MSA msaA1;\r
- MSA msaA2;\r
- MSA msaB1;\r
- MSA msaB2;\r
- MSAFromSeqSubset(alnA, Seqs1, uSeqCount1, msaA1);\r
- MSAFromSeqSubset(alnB, Seqs1, uSeqCount1, msaB1);\r
- MSAFromSeqSubset(alnA, Seqs2, uSeqCount2, msaA2);\r
- MSAFromSeqSubset(alnB, Seqs2, uSeqCount2, msaB2);\r
-\r
- for (unsigned uSeqIndex1 = 0; uSeqIndex1 < uSeqCount1; ++uSeqIndex1)\r
- {\r
- msaA1.SetSeqWeight(uSeqIndex1, 1.0);\r
- msaB1.SetSeqWeight(uSeqIndex1, 1.0);\r
- }\r
-\r
- for (unsigned uSeqIndex2 = 0; uSeqIndex2 < uSeqCount2; ++uSeqIndex2)\r
- {\r
- msaA2.SetSeqWeight(uSeqIndex2, 1.0);\r
- msaB2.SetSeqWeight(uSeqIndex2, 1.0);\r
- }\r
-\r
- Log("msaA1=\n");\r
- msaA1.LogMe();\r
-\r
- Log("msaB1=\n");\r
- msaB1.LogMe();\r
-\r
- Log("msaA2=\n");\r
- msaA2.LogMe();\r
-\r
- Log("msaB2=\n");\r
- msaB2.LogMe();\r
-\r
- Log("alnA=\n");\r
- alnA.LogMe();\r
-\r
- Log("AlnB=\n");\r
- alnB.LogMe();\r
-\r
- Log("\nSPA\n---\n");\r
- SCORE SPA = ObjScoreSP(alnA);\r
- Log("\nSPB\n---\n");\r
- SCORE SPB = ObjScoreSP(alnB);\r
-\r
- Log("\nXPA\n---\n");\r
- SCORE XPA = ObjScoreXP(msaA1, msaA2);\r
- Log("\nXPB\n---\n");\r
- SCORE XPB = ObjScoreXP(msaB1, msaB2);\r
-\r
- Log("SPA=%.4g SPB=%.4g Diff=%.4g\n", SPA, SPB, SPA - SPB);\r
- Log("XPA=%.4g XPB=%.4g Diff=%.4g\n", XPA, XPB, XPA - XPB);\r
- }\r