| Line | |
|---|
| 1 | #include "muscle.h" |
|---|
| 2 | #include "distfunc.h" |
|---|
| 3 | #include "msa.h" |
|---|
| 4 | #include "seqvect.h" |
|---|
| 5 | #include "pwpath.h" |
|---|
| 6 | |
|---|
| 7 | void DistPWKimura(const SeqVect &v, DistFunc &DF) |
|---|
| 8 | { |
|---|
| 9 | SEQWEIGHT SeqWeightSave = GetSeqWeightMethod(); |
|---|
| 10 | SetSeqWeightMethod(SEQWEIGHT_Henikoff); |
|---|
| 11 | |
|---|
| 12 | const unsigned uSeqCount = v.Length(); |
|---|
| 13 | DF.SetCount(uSeqCount); |
|---|
| 14 | |
|---|
| 15 | const unsigned uPairCount = (uSeqCount*(uSeqCount + 1))/2; |
|---|
| 16 | unsigned uCount = 0; |
|---|
| 17 | SetProgressDesc("PWKimura distance"); |
|---|
| 18 | for (unsigned uSeqIndex1 = 0; uSeqIndex1 < uSeqCount; ++uSeqIndex1) |
|---|
| 19 | { |
|---|
| 20 | const Seq &s1 = v.GetSeq(uSeqIndex1); |
|---|
| 21 | MSA msa1; |
|---|
| 22 | msa1.FromSeq(s1); |
|---|
| 23 | for (unsigned uSeqIndex2 = 0; uSeqIndex2 < uSeqIndex1; ++uSeqIndex2) |
|---|
| 24 | { |
|---|
| 25 | if (0 == uCount%20) |
|---|
| 26 | Progress(uCount, uPairCount); |
|---|
| 27 | ++uCount; |
|---|
| 28 | const Seq &s2 = v.GetSeq(uSeqIndex2); |
|---|
| 29 | MSA msa2; |
|---|
| 30 | msa2.FromSeq(s2); |
|---|
| 31 | |
|---|
| 32 | PWPath Path; |
|---|
| 33 | MSA msaOut; |
|---|
| 34 | AlignTwoMSAs(msa1, msa2, msaOut, Path, false, false); |
|---|
| 35 | |
|---|
| 36 | double dPctId = msaOut.GetPctIdentityPair(0, 1); |
|---|
| 37 | float f = (float) KimuraDist(dPctId); |
|---|
| 38 | |
|---|
| 39 | DF.SetDist(uSeqIndex1, uSeqIndex2, f); |
|---|
| 40 | } |
|---|
| 41 | } |
|---|
| 42 | ProgressStepsDone(); |
|---|
| 43 | |
|---|
| 44 | SetSeqWeightMethod(SeqWeightSave); |
|---|
| 45 | } |
|---|
Note: See
TracBrowser
for help on using the repository browser.