+++ /dev/null
-#include "muscle.h"\r
-#include "distfunc.h"\r
-#include "distcalc.h"\r
-#include "msa.h"\r
-\r
-void DistCalcDF::Init(const DistFunc &DF)\r
- {\r
- m_ptrDF = &DF;\r
- }\r
-\r
-void DistCalcDF::CalcDistRange(unsigned i, dist_t Dist[]) const\r
- {\r
- for (unsigned j = 0; j < i; ++j)\r
- Dist[j] = m_ptrDF->GetDist(i, j);\r
- }\r
-\r
-unsigned DistCalcDF::GetCount() const\r
- {\r
- return m_ptrDF->GetCount();\r
- }\r
-\r
-unsigned DistCalcDF::GetId(unsigned i) const\r
- {\r
- return m_ptrDF->GetId(i);\r
- }\r
-\r
-const char *DistCalcDF::GetName(unsigned i) const\r
- {\r
- return m_ptrDF->GetName(i);\r
- }\r
-\r
-void DistCalcMSA::Init(const MSA &msa, DISTANCE Distance)\r
- {\r
- m_ptrMSA = &msa;\r
- m_Distance = Distance;\r
- }\r
-\r
-void DistCalcMSA::CalcDistRange(unsigned i, dist_t Dist[]) const\r
- {\r
- for (unsigned j = 0; j < i; ++j)\r
- {\r
- switch (m_Distance)\r
- {\r
- case DISTANCE_PctIdKimura:\r
- {\r
- const float PctId = (float) m_ptrMSA->GetPctIdentityPair(i, j);\r
- Dist[j] = (float) KimuraDist(PctId);\r
- break;\r
- }\r
- case DISTANCE_PctIdLog:\r
- {\r
- const float PctId = (float) m_ptrMSA->GetPctIdentityPair(i, j);\r
- Dist[j] = (float) PctIdToMAFFTDist(PctId);\r
- break;\r
- }\r
- case DISTANCE_ScoreDist:\r
- {\r
- double GetScoreDist(const MSA &msa, unsigned SeqIndex1, unsigned SeqIndex2);\r
- Dist[j] = (float) GetScoreDist(*m_ptrMSA, i, j);\r
- continue;\r
- }\r
- case DISTANCE_Edit:\r
- {\r
- const float PctId = (float) m_ptrMSA->GetPctIdentityPair(i, j);\r
- if (PctId > 1.0)\r
- Quit("Internal error, DISTANCE_Edit, pct id=%.3g", PctId);\r
- Dist[j] = (float) 1.0 - PctId;\r
- break;\r
- }\r
- default:\r
- Quit("DistCalcMSA: Invalid DISTANCE_%u", m_Distance);\r
- }\r
- }\r
- }\r
-\r
-unsigned DistCalcMSA::GetCount() const\r
- {\r
- return m_ptrMSA->GetSeqCount();\r
- }\r
-\r
-unsigned DistCalcMSA::GetId(unsigned i) const\r
- {\r
- return m_ptrMSA->GetSeqId(i);\r
- }\r
-\r
-const char *DistCalcMSA::GetName(unsigned i) const\r
- {\r
- return m_ptrMSA->GetSeqName(i);\r
- }\r