Calculate Average Dn And Ds For Gene Families
2
3
Entering edit mode
11.8 years ago
Plantae ▴ 390

hi, all

I have several single-copy gene families identified from 12 genomes, Now I want to know evolution rate differences between these gene families, I got average DN/DS from PAML package: average DN/DS can be calculated through codeml 's M0 model (model=0, NSsites=0),

but how to calculate average DN and average DS?

should I run codeml using runmode=-2 to get all pairwise DN and DS estimates, then average between them? or using the "tree length for DN" "tree length for DS" in M0 model output?

selection gene • 7.2k views
ADD COMMENT
0
Entering edit mode
11.8 years ago

You can run this under R and get the values for dN and dS separately (named Ka and Ks in seqinR, but it's the same computation):

library(seqinr)
x=read.alignment("myalignment",format="fasta")
?kaks()
ADD COMMENT
1
Entering edit mode

FWIW, that will get the pairwise dNs and dSs for the alignment, the same result as the -2 mode in codeml. I think the OP is asking for an estimate of dN and dS across the tree? Which is subtly different and something I'm surprised to see does come in all the layers of guff codeml spits out

ADD REPLY
0
Entering edit mode

codeml reports DN or DS in each branch on the tree, but without average estimates. One simple methods was calculate averages values by summing all branch DN or DS values, then divided by branch numbers. I also calcuated the average DN and DS using codeml's runmode "-2", then averaging the values come from all pairwise comparisons. But the two method gave out quite different results.

ADD REPLY
2
Entering edit mode

I would rather average values with the dN and dS values from the branches rather than averaging on the pairwise comparisons. Somehow, because pairwise computations are combinatorial in the number of sequences, averaging does not seem like the appropriate mathematical tool to me (because of intrinsic correlation between values).

ADD REPLY
0
Entering edit mode
5.3 years ago

Using PALM on python worked for me. It generates a dictionary, and you can access to all the variables, including of course dn and ds separately

ADD COMMENT

Login before adding your answer.

Traffic: 2477 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6