Calculate Average Dn And Ds For Gene Families
2
3
Entering edit mode
10.1 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 • 6.4k views
0
Entering edit mode
10.1 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)
?kaks()

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

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.

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).

0
Entering edit mode
3.6 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