Mac binaries
[jabaws.git] / website / archive / binaries / mac / src / muscle / ppscore.cpp
diff --git a/website/archive/binaries/mac/src/muscle/ppscore.cpp b/website/archive/binaries/mac/src/muscle/ppscore.cpp
new file mode 100644 (file)
index 0000000..813b8a2
--- /dev/null
@@ -0,0 +1,93 @@
+#include "muscle.h"\r
+#include "textfile.h"\r
+#include "msa.h"\r
+#include "tree.h"\r
+#include "profile.h"\r
+#include "objscore.h"\r
+\r
+bool g_bTracePPScore = false;\r
+MSA *g_ptrPPScoreMSA1 = 0;\r
+MSA *g_ptrPPScoreMSA2 = 0;\r
+\r
+static ProfPos *ProfileFromMSALocal(MSA &msa, Tree &tree)\r
+       {\r
+       const unsigned uSeqCount = msa.GetSeqCount();\r
+       for (unsigned uSeqIndex = 0; uSeqIndex < uSeqCount; ++uSeqIndex)\r
+               msa.SetSeqId(uSeqIndex, uSeqIndex);\r
+\r
+       TreeFromMSA(msa, tree, g_Cluster2, g_Distance2, g_Root1);\r
+       SetMuscleTree(tree);\r
+       return ProfileFromMSA(msa);\r
+       }\r
+\r
+void PPScore()\r
+       {\r
+       if (0 == g_pstrFileName1 || 0 == g_pstrFileName2)\r
+               Quit("-ppscore needs -in1 and -in2");\r
+\r
+       SetSeqWeightMethod(g_SeqWeight1);\r
+\r
+       TextFile file1(g_pstrFileName1);\r
+       TextFile file2(g_pstrFileName2);\r
+\r
+       MSA msa1;\r
+       MSA msa2;\r
+\r
+       msa1.FromFile(file1);\r
+       msa2.FromFile(file2);\r
+\r
+       const unsigned uLength1 = msa1.GetColCount();\r
+       const unsigned uLength2 = msa2.GetColCount();\r
+\r
+       if (uLength1 != uLength2)\r
+               Quit("Profiles must have the same length");\r
+\r
+       ALPHA Alpha = ALPHA_Undefined;\r
+       switch (g_SeqType)\r
+               {\r
+       case SEQTYPE_Auto:\r
+               Alpha = msa1.GuessAlpha();\r
+               break;\r
+\r
+       case SEQTYPE_Protein:\r
+               Alpha = ALPHA_Amino;\r
+               break;\r
+\r
+       case SEQTYPE_DNA:\r
+               Alpha = ALPHA_DNA;\r
+               break;\r
+\r
+       case SEQTYPE_RNA:\r
+               Alpha = ALPHA_RNA;\r
+               break;\r
+\r
+       default:\r
+               Quit("Invalid SeqType");\r
+               }\r
+       SetAlpha(Alpha);\r
+\r
+       msa1.FixAlpha();\r
+       msa2.FixAlpha();\r
+\r
+       if (ALPHA_DNA == Alpha || ALPHA_RNA == Alpha)\r
+               SetPPScore(PPSCORE_SPN);\r
+\r
+       const unsigned uSeqCount1 = msa1.GetSeqCount();\r
+       const unsigned uSeqCount2 = msa2.GetSeqCount();\r
+       const unsigned uMaxSeqCount = (uSeqCount1 > uSeqCount2 ? uSeqCount1 : uSeqCount2);\r
+       MSA::SetIdCount(uMaxSeqCount);\r
+\r
+       Tree tree1;\r
+       Tree tree2;\r
+       ProfPos *Prof1 = ProfileFromMSALocal(msa1, tree1);\r
+       ProfPos *Prof2 = ProfileFromMSALocal(msa2, tree2);\r
+\r
+       g_bTracePPScore = true;\r
+       g_ptrPPScoreMSA1 = &msa1;\r
+       g_ptrPPScoreMSA2 = &msa2;\r
+\r
+       SCORE Score = ObjScoreDP_Profs(Prof1, Prof2, uLength1);\r
+\r
+       Log("Score=%.4g\n", Score);\r
+       printf("Score=%.4g\n", Score);\r
+       }\r