1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
#include "muscle.h"
#include "distfunc.h"
#include "distcalc.h"
#include "msa.h"
void DistCalcDF::Init(const DistFunc &DF)
{
m_ptrDF = &DF;
}
void DistCalcDF::CalcDistRange(unsigned i, dist_t Dist[]) const
{
for (unsigned j = 0; j < i; ++j)
Dist[j] = m_ptrDF->GetDist(i, j);
}
unsigned DistCalcDF::GetCount() const
{
return m_ptrDF->GetCount();
}
unsigned DistCalcDF::GetId(unsigned i) const
{
return m_ptrDF->GetId(i);
}
const char *DistCalcDF::GetName(unsigned i) const
{
return m_ptrDF->GetName(i);
}
void DistCalcMSA::Init(const MSA &msa, DISTANCE Distance)
{
m_ptrMSA = &msa;
m_Distance = Distance;
}
void DistCalcMSA::CalcDistRange(unsigned i, dist_t Dist[]) const
{
// const unsigned uSeqIndex1 = m_ptrMSA->GetSeqIndex(i);
for (unsigned j = 0; j < i; ++j)
{
// const unsigned uSeqIndex2 = m_ptrMSA->GetSeqIndex(j);
const float PctId = (float) m_ptrMSA->GetPctIdentityPair(i, j);
switch (m_Distance)
{
case DISTANCE_PctIdKimura:
Dist[j] = (float) KimuraDist(PctId);
break;
case DISTANCE_PctIdLog:
Dist[j] = (float) PctIdToMAFFTDist(PctId);
break;
default:
Quit("DistCalcMSA: Invalid DISTANCE_%u", m_Distance);
}
}
}
unsigned DistCalcMSA::GetCount() const
{
return m_ptrMSA->GetSeqCount();
}
unsigned DistCalcMSA::GetId(unsigned i) const
{
return m_ptrMSA->GetSeqId(i);
}
const char *DistCalcMSA::GetName(unsigned i) const
{
return m_ptrMSA->GetSeqName(i);
}
|