📄 validateids.cpp
字号:
#include "muscle.h"
#include "msa.h"
#include "tree.h"
#include "seqvect.h"
#if DEBUG
static SeqVect *g_ptrMuscleSeqVect = 0;
static MSA MuscleInputMSA;
void SetMuscleInputMSA(MSA &msa)
{
MuscleInputMSA.Copy(msa);
}
void SetMuscleSeqVect(SeqVect &v)
{
g_ptrMuscleSeqVect = &v;
}
void ValidateMuscleIdsSeqVect(const MSA &msa)
{
const unsigned uSeqCount = msa.GetSeqCount();
for (unsigned uSeqIndex = 0; uSeqIndex < uSeqCount; ++uSeqIndex)
{
const unsigned uId = msa.GetSeqId(uSeqIndex);
const char *ptrNameMSA = msa.GetSeqName(uSeqIndex);
const char *ptrName = g_ptrMuscleSeqVect->GetSeqName(uId);
if (0 != strcmp(ptrNameMSA, ptrName))
Quit("ValidateMuscleIdsSeqVect, names don't match");
}
}
void ValidateMuscleIdsMSA(const MSA &msa)
{
const unsigned uSeqCount = msa.GetSeqCount();
for (unsigned uSeqIndex = 0; uSeqIndex < uSeqCount; ++uSeqIndex)
{
const unsigned uId = msa.GetSeqId(uSeqIndex);
const char *ptrNameMSA = msa.GetSeqName(uSeqIndex);
const char *ptrName = MuscleInputMSA.GetSeqName(uId);
if (0 != strcmp(ptrNameMSA, ptrName))
{
Log("Input MSA:\n");
MuscleInputMSA.LogMe();
Log("MSA being tested:\n");
msa.LogMe();
Log("Id=%u\n", uId);
Log("Input name=%s\n", ptrName);
Log("Test name=%s\n", ptrNameMSA);
Quit("ValidateMuscleIdsMSA, names don't match");
}
}
}
void ValidateMuscleIds(const MSA &msa)
{
if (0 != g_ptrMuscleSeqVect)
ValidateMuscleIdsSeqVect(msa);
else if (0 != MuscleInputMSA.GetSeqCount())
ValidateMuscleIdsMSA(msa);
else
Quit("ValidateMuscleIds, ptrMuscleSeqVect=0 && 0 == MuscleInputMSA.SeqCount()");
}
void ValidateMuscleIdsSeqVect(const Tree &tree)
{
const unsigned uSeqCount = g_ptrMuscleSeqVect->GetSeqCount();
const unsigned uNodeCount = tree.GetNodeCount();
for (unsigned uNodeIndex = 0; uNodeIndex < uNodeCount; ++uNodeIndex)
{
if (!tree.IsLeaf(uNodeIndex))
continue;
const unsigned uId = tree.GetLeafId(uNodeIndex);
if (uId >= uSeqCount)
{
tree.LogMe();
Quit("Leaf with node index %u has id=%u, there are %u seqs",
uNodeIndex, uId, uSeqCount);
}
const char *ptrNameTree = tree.GetLeafName(uNodeIndex);
const char *ptrName = g_ptrMuscleSeqVect->GetSeqName(uId);
if (0 != strcmp(ptrNameTree, ptrName))
Quit("ValidateMuscleIds: names don't match");
}
}
void ValidateMuscleIdsMSA(const Tree &tree)
{
const unsigned uNodeCount = tree.GetNodeCount();
for (unsigned uNodeIndex = 0; uNodeIndex < uNodeCount; ++uNodeIndex)
{
if (!tree.IsLeaf(uNodeIndex))
continue;
const unsigned uId = tree.GetLeafId(uNodeIndex);
const char *ptrNameTree = tree.GetLeafName(uNodeIndex);
const char *ptrName = MuscleInputMSA.GetSeqName(uId);
if (0 != strcmp(ptrNameTree, ptrName))
Quit("ValidateMuscleIds: names don't match");
}
}
void ValidateMuscleIds(const Tree &tree)
{
if (0 != g_ptrMuscleSeqVect)
ValidateMuscleIdsSeqVect(tree);
else if (0 != MuscleInputMSA.GetSeqCount())
ValidateMuscleIdsMSA(tree);
else
Quit("ValidateMuscleIds, ptrMuscleSeqVect=0 && 0 == MuscleInputMSA.SeqCount");
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -