Mac binaries
[jabaws.git] / website / archive / binaries / mac / src / muscle / validateids.cpp
diff --git a/website/archive/binaries/mac/src/muscle/validateids.cpp b/website/archive/binaries/mac/src/muscle/validateids.cpp
new file mode 100644 (file)
index 0000000..b1d9e3d
--- /dev/null
@@ -0,0 +1,112 @@
+#include "muscle.h"\r
+#include "msa.h"\r
+#include "tree.h"\r
+#include "seqvect.h"\r
+\r
+#if    DEBUG\r
+static SeqVect *g_ptrMuscleSeqVect = 0;\r
+static MSA MuscleInputMSA;\r
+\r
+void SetMuscleInputMSA(MSA &msa)\r
+       {\r
+       MuscleInputMSA.Copy(msa);\r
+       }\r
+\r
+void SetMuscleSeqVect(SeqVect &v)\r
+       {\r
+       g_ptrMuscleSeqVect = &v;\r
+       }\r
+\r
+void ValidateMuscleIdsSeqVect(const MSA &msa)\r
+       {\r
+       const unsigned uSeqCount = msa.GetSeqCount();\r
+       for (unsigned uSeqIndex = 0; uSeqIndex < uSeqCount; ++uSeqIndex)\r
+               {\r
+               const unsigned uId = msa.GetSeqId(uSeqIndex);\r
+               const char *ptrNameMSA = msa.GetSeqName(uSeqIndex);\r
+               const char *ptrName = g_ptrMuscleSeqVect->GetSeqName(uId);\r
+               if (0 != strcmp(ptrNameMSA, ptrName))\r
+                       Quit("ValidateMuscleIdsSeqVect, names don't match");\r
+               }\r
+       }\r
+\r
+void ValidateMuscleIdsMSA(const MSA &msa)\r
+       {\r
+       const unsigned uSeqCount = msa.GetSeqCount();\r
+       for (unsigned uSeqIndex = 0; uSeqIndex < uSeqCount; ++uSeqIndex)\r
+               {\r
+               const unsigned uId = msa.GetSeqId(uSeqIndex);\r
+               const char *ptrNameMSA = msa.GetSeqName(uSeqIndex);\r
+               const char *ptrName = MuscleInputMSA.GetSeqName(uId);\r
+               if (0 != strcmp(ptrNameMSA, ptrName))\r
+                       {\r
+                       Log("Input MSA:\n");\r
+                       MuscleInputMSA.LogMe();\r
+                       Log("MSA being tested:\n");\r
+                       msa.LogMe();\r
+                       Log("Id=%u\n", uId);\r
+                       Log("Input name=%s\n", ptrName);\r
+                       Log("Test name=%s\n", ptrNameMSA);\r
+                       Quit("ValidateMuscleIdsMSA, names don't match");\r
+                       }\r
+               }\r
+       }\r
+\r
+void ValidateMuscleIds(const MSA &msa)\r
+       {\r
+       if (0 != g_ptrMuscleSeqVect)\r
+               ValidateMuscleIdsSeqVect(msa);\r
+       else if (0 != MuscleInputMSA.GetSeqCount())\r
+               ValidateMuscleIdsMSA(msa);\r
+       else\r
+               Quit("ValidateMuscleIds, ptrMuscleSeqVect=0 && 0 == MuscleInputMSA.SeqCount()");\r
+\r
+       }\r
+\r
+void ValidateMuscleIdsSeqVect(const Tree &tree)\r
+       {\r
+       const unsigned uSeqCount = g_ptrMuscleSeqVect->GetSeqCount();\r
+       const unsigned uNodeCount = tree.GetNodeCount();\r
+       for (unsigned uNodeIndex = 0; uNodeIndex < uNodeCount; ++uNodeIndex)\r
+               {\r
+               if (!tree.IsLeaf(uNodeIndex))\r
+                       continue;\r
+               const unsigned uId = tree.GetLeafId(uNodeIndex);\r
+               if (uId >= uSeqCount)\r
+                       {\r
+                       tree.LogMe();\r
+                       Quit("Leaf with node index %u has id=%u, there are %u seqs",\r
+                         uNodeIndex, uId, uSeqCount);\r
+                       }\r
+               const char *ptrNameTree = tree.GetLeafName(uNodeIndex);\r
+               const char *ptrName = g_ptrMuscleSeqVect->GetSeqName(uId);\r
+               if (0 != strcmp(ptrNameTree, ptrName))\r
+                       Quit("ValidateMuscleIds: names don't match");\r
+               }\r
+       }\r
+\r
+void ValidateMuscleIdsMSA(const Tree &tree)\r
+       {\r
+       const unsigned uNodeCount = tree.GetNodeCount();\r
+       for (unsigned uNodeIndex = 0; uNodeIndex < uNodeCount; ++uNodeIndex)\r
+               {\r
+               if (!tree.IsLeaf(uNodeIndex))\r
+                       continue;\r
+               const unsigned uId = tree.GetLeafId(uNodeIndex);\r
+               const char *ptrNameTree = tree.GetLeafName(uNodeIndex);\r
+               const char *ptrName = MuscleInputMSA.GetSeqName(uId);\r
+               if (0 != strcmp(ptrNameTree, ptrName))\r
+                       Quit("ValidateMuscleIds: names don't match");\r
+               }\r
+       }\r
+\r
+void ValidateMuscleIds(const Tree &tree)\r
+       {\r
+       if (0 != g_ptrMuscleSeqVect)\r
+               ValidateMuscleIdsSeqVect(tree);\r
+       else if (0 != MuscleInputMSA.GetSeqCount())\r
+               ValidateMuscleIdsMSA(tree);\r
+       else\r
+               Quit("ValidateMuscleIds, ptrMuscleSeqVect=0 && 0 == MuscleInputMSA.SeqCount");\r
+       }\r
+#endif\r