Question: Calculate Average Dn And Ds For Gene Families
3
8.6 years ago by
Plantae390
Plantae390 wrote:

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?

gene selection • 5.6k views
modified 2.0 years ago by mariamcurbelo20610 • written 8.6 years ago by Plantae390
0
8.6 years ago by
Leonor Palmeira3.8k
Liège, Belgium
Leonor Palmeira3.8k wrote:

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

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

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

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
2.0 years ago by
Cuba/Havana/Faculty of Biology
mariamcurbelo20610 wrote:

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