paml计算dn/ds的小实例

更新:20190319

使用EasyCodeML完成dnds的计算,自己尝试了分支模型和位点模型的计算,简直不要太容易!

更新:20190314 教程 http://wiki.cathdb.info/wiki-beta/doku.php?id=tutorials:eccb_t2_codeml
  • The selevtive presure in protein coding genes can be detected within the framework of comparative genomics.
  • The selective presure is assumed to be defined by the ratio (w) dN/dS.
  • dS represents the synonymous rate (changing the amino acid)
  • dN represents the non-synonymous rate (keeping the amino acid)
  • Under purifying selection, natural selection prevents the replacement of amino acids, so the dN will be lower than the dS.
  • Values of w<1, =1, and > 1 means negative purifying selection, neutral evolution, and positive selection.

更新20190223:重复b站教学视频中dnds的计算过程

(这个视频教程不是我的,我也只是跟着这个教程来学习的!)
以下内容全部在window系统操作
使用到的软件

第一步:下载序列

根据教程中提到的物种拉丁名和myoglboin为关键词在NCBI中检索获得本次分析中使用到的8条肌红蛋白序列,放到同一个文件中,手动去掉终止密码子(有几条序列中不包括终止密码子,不知道为什么)(需要原始序列的同学可以给我留言)

第二步:codeML输入文件的准备

包括:序列比对;进化树构建,控制文件编辑等

  • 使用MEGA进行多序列比对
    读入数据,选择Alignment——Align by Muscle (Codons)
    将比对结果导出为fasta格式
  • 构建NJ树
    读入上一步比对好的数据,构建NJ树:bootstrap1000,kumra两参数模型
    image.png

    生成的结果树
    tree.PNG

    将生成的树文件导出为newick格式
  • 使用EasyCodeml将比对结果转化为PAML要求的格式
    Tools——Seqformat convertor
    将上一步比对好的fasta文件拖入,第二个框输出格式选择PAML即可获得结果
    参考EasyCodeML帮助文档对进化树分支进行标记
  • 按照视频中的内容编辑控制文件
第三步:计算dnds

win+R快捷键输入cmd调出命令行窗口;cd命令切换到保存输出结果的文件夹下,分布输入codeml和控制文件所在的路径,回车(win下也可以拖拽)

  • 零假设 所有支系共有一个omage值
    控制文件内容
      seqfile = C:\Users\mingy\Desktop\practice\dnds\myoglobin.pml * sequence data filename
     treefile = C:\Users\mingy\Desktop\practice\dnds\myoglobin_tree.nwk      * tree structure file name
      outfile = C:\Users\mingy\Desktop\practice\dnds\result_null.txt           * main result file name

        noisy = 9  * 0,1,2,3,9: how much rubbish on the screen
      verbose = 1  * 0: concise; 1: detailed, 2: too much
      runmode = 0  * 0: user tree;  1: semi-automatic;  2: automatic
                   * 3: StepwiseAddition; (4,5):PerturbationNNI; -2: pairwise

      seqtype = 1  * 1:codons; 2:AAs; 3:codons-->AAs
    CodonFreq = 2  * 0:1/61 each, 1:F1X4, 2:F3X4, 3:codon table

*        ndata = 10
        clock = 0  * 0:no clock, 1:clock; 2:local clock; 3:CombinedAnalysis
       aaDist = 0  * 0:equal, +:geometric; -:linear, 1-6:G1974,Miyata,c,p,v,a
   aaRatefile = dat/jones.dat  * only used for aa seqs with model=empirical(_F)
                   * dayhoff.dat, jones.dat, wag.dat, mtmam.dat, or your own

        model = 0
                   * models for codons:
                       * 0:one, 1:b, 2:2 or more dN/dS ratios for branches
                   * models for AAs or codon-translated AAs:
                       * 0:poisson, 1:proportional, 2:Empirical, 3:Empirical+F
                       * 6:FromCodon, 7:AAClasses, 8:REVaa_0, 9:REVaa(nr=189)

      NSsites = 0  * 0:one w;1:neutral;2:selection; 3:discrete;4:freqs;
                   * 5:gamma;6:2gamma;7:beta;8:beta&w;9:beta&gamma;
                   * 10:beta&gamma+1; 11:beta&normal>1; 12:0&2normal>1;
                   * 13:3normal>0

        icode = 0  * 0:universal code; 1:mammalian mt; 2-10:see below
        Mgene = 0
                   * codon: 0:rates, 1:separate; 2:diff pi, 3:diff kapa, 4:all diff
                   * AA: 0:rates, 1:separate

    fix_kappa = 0  * 1: kappa fixed, 0: kappa to be estimated
        kappa = 2  * initial or fixed kappa
    fix_omega = 0  * 1: omega or omega_1 fixed, 0: estimate 
        omega = .4 * initial or fixed omega, for codons or codon-based AAs

    fix_alpha = 1  * 0: estimate gamma shape parameter; 1: fix it at alpha
        alpha = 0. * initial or fixed alpha, 0:infinity (constant rate)
       Malpha = 0  * different alphas for genes
        ncatG = 8  * # of categories in dG of NSsites models

        getSE = 0  * 0: don't want them, 1: want S.E.s of estimates
 RateAncestor = 1  * (0,1,2): rates (alpha>0) or ancestral states (1 or 2)

   Small_Diff = .5e-6
    cleandata = 1  * remove sites with ambiguity data (1:yes, 0:no)?
*  fix_blength = 1  * 0: ignore, -1: random, 1: initial, 2: fixed, 3: proportional
       method = 0  * Optimization method 0: simultaneous; 1: one branch a time

* Genetic codes: 0:universal, 1:mammalian mt., 2:yeast mt., 3:mold mt.,
* 4: invertebrate mt., 5: ciliate nuclear, 6: echinoderm mt., 
* 7: euplotid mt., 8: alternative yeast nu. 9: ascidian mt., 
* 10: blepharisma nu.
* These codes correspond to transl_table 1 to 11 of GENEBANK.

这里的参数很多都不明白,前几天大体看了一下paml的文档,里面有很详细的介绍,需要花时间多看

1.PNG

关键输出结果

lnL(ntime: 13  np: 15):  -1284.006906      +0.000000

kappa (ts/tv) =  1.86874
omega (dN/dS) =  0.13353

dN & dS for each branch

 branch          t       N       S   dN/dS      dN      dS  N*dN  S*dS

   9..10     0.050   382.1    79.9  0.1335  0.0079  0.0588   3.0   4.7
  10..11     0.108   382.1    79.9  0.1335  0.0170  0.1271   6.5  10.2
  11..12     0.040   382.1    79.9  0.1335  0.0062  0.0467   2.4   3.7
  12..1      0.079   382.1    79.9  0.1335  0.0124  0.0932   4.8   7.4
  12..6      0.106   382.1    79.9  0.1335  0.0166  0.1242   6.3   9.9
  11..13     0.073   382.1    79.9  0.1335  0.0114  0.0853   4.4   6.8
  13..4      0.000   382.1    79.9  0.1335  0.0000  0.0000   0.0   0.0
  13..8      0.027   382.1    79.9  0.1335  0.0042  0.0314   1.6   2.5
  10..14     0.172   382.1    79.9  0.1335  0.0270  0.2024  10.3  16.2
  14..2      0.052   382.1    79.9  0.1335  0.0081  0.0608   3.1   4.9
  14..5      0.037   382.1    79.9  0.1335  0.0059  0.0440   2.2   3.5
   9..7      0.116   382.1    79.9  0.1335  0.0182  0.1361   6.9  10.9
   9..3      0.113   382.1    79.9  0.1335  0.0177  0.1326   6.8  10.6

tree length for dN:       0.1526
tree length for dS:       1.1425

这里的输出结果和视频教程中的略有差别,视频中的ntime和np分别是14和16,暂时还没有搞懂问题出在哪里

  • 备择假设:特定支系拥有不同的omega值
    只需要将树文件替换为标记分支的树文件,model值改为2即可
lnL(ntime: 13  np: 16):  -1282.758923      +0.000000
kappa (ts/tv) =  1.86014

w (dN/dS) for branches:  0.11905 0.37136

dN & dS for each branch

 branch          t       N       S   dN/dS      dN      dS  N*dN  S*dS

   9..10     0.053   382.2    79.8  0.1190  0.0077  0.0647   2.9   5.2
  10..11     0.095   382.2    79.8  0.3714  0.0245  0.0661   9.4   5.3
  11..12     0.040   382.2    79.8  0.1190  0.0058  0.0486   2.2   3.9
  12..1      0.081   382.2    79.8  0.1190  0.0118  0.0990   4.5   7.9
  12..6      0.105   382.2    79.8  0.1190  0.0154  0.1290   5.9  10.3
  11..13     0.073   382.2    79.8  0.1190  0.0106  0.0893   4.1   7.1
  13..4      0.000   382.2    79.8  0.1190  0.0000  0.0000   0.0   0.0
  13..8      0.027   382.2    79.8  0.1190  0.0039  0.0328   1.5   2.6
  10..14     0.177   382.2    79.8  0.1190  0.0259  0.2176   9.9  17.4
  14..2      0.054   382.2    79.8  0.1190  0.0078  0.0658   3.0   5.3
  14..5      0.036   382.2    79.8  0.1190  0.0052  0.0439   2.0   3.5
   9..7      0.117   382.2    79.8  0.1190  0.0171  0.1434   6.5  11.5
   9..3      0.114   382.2    79.8  0.1190  0.0167  0.1406   6.4  11.2

tree length for dN:       0.1525
tree length for dS:       1.1409

lnl_null - lnl_alternative 符合卡方分布
使用R语言的phisq函数计算显著性
自己得到的结果是1,没搞清楚问题出在哪里

步骤应该就是这么个步骤,关于结果的解读和其他模型的设置多看paml的帮助手册

1、下载安装

第一种方法

下载地址 http://abacus.gene.ucl.ac.uk/software/paml4.9h.tgz
安装教程 http://abacus.gene.ucl.ac.uk/software/paml.html

第二种方法

直接用conda,conda的安装方法可以参考公众号 生信技能树 的文章价值999的全外显子教学视频--免费送
conda安装好以后直接使用命令

conda install paml

2、准备分析dnds比值所需要的文件

将CDS序列进行基于密码子的比对,这一步可借助mega完成,然后导出比对结果为fasta格式,然后按照视频教程去掉终止密码子并整理成所需要的格式(所需要的格式第一行是tab+数字+tab+数字,第一个数字是几条序列,第二个数字是每条序列有几个位点,自己获得以上信息的做法是将fasta格式的比对文件转换成phylip格式,可以实现比对文件格式转换的小工具http://sing.ei.uvigo.es/ALTER/);树文件可以用IQ-tree获得,IQ-tree下载及安装http://www.iqtree.org/#download

3、实例:计算五种植物叶绿体的ccsA基因的dn/ds值

A、比对:打开mega, File——Open a File 选择文件,提示
1.PNG

选择Align,弹出
2.PNG
然后选择Alignment——Alignment by ClustalW(codons),然后点OK在点OK,之后Data——Export Alignment——Fasta format,比对完成,之后将比对结果转换成要求的格式
3.PNG
这里需要注意的地方是序列名后有两个空格

B、建树:IQ-tree解压出来后bin目录下有可执行的程序iqtree,运行

./iqtree

获得帮助信息
4.PNG

建树用到的命令是

./iqtree -s alignment.file -alrt 1000 -bb 1000

C、按照视频教程的内容修改控制文件的内容,然后执行程序即可。获得的结果

5.PNG

以上分析用到的CDS序列文件https://pan.baidu.com/s/1xyNj_cvR68An-Lkf2HGBgQ

发现一个小问题:如果使用conda install paml 安装paml 好像找不到需要的控制文件在哪

以上内容基本在linux系统操作完成,如果没有linux系统,目前想到三种解决办法:
1、如果自己电脑是win10系统可以直接安装linux系统,百度搜索相关教程即可;
2、购买腾讯云,学生套餐10块每月还挺划算的,1核2G运行内存,50G存储空间;
3、安装虚拟机,自己之前也尝试过,个人感觉稍微有些麻烦。
关于linux系统的入门学习个人强推 网易云课堂 细说linux 视频教程

更新

配置文件的参数修改
前三个参数用来指定文件位置
runmode = 0 user tree
seqtype = 1 codons
ndata = 自己暂时还不知道这个参数是用来做什么的,视频教程里的配置文件没有这个参数
model = 0

Reference

https://www.plob.org/article/6943.html codeml的配置文件
https://www.bilibili.com/video/av10469605?from=search&seid=8859495264060497812 b站教学视频
微信文章: Ka/Ks比值:核酸分子进化的指标
微信文章: 从人见人爱的向日葵说起——Ks与全基因组多倍化事件
微信文章: 价值999的全外显子教学视频--免费送
微信文章: 基于ML法重建系统发育树-IQ-TREE篇
http://www.biotrainee.com/thread-1685-1-1.html 生信技能树
https://wenku.baidu.com/view/39c6d6f30029bd64783e2c60.html 百度文库

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,893评论 2 89
  • 〇、序 Python是一种面向对象的解释型计算机程序设计语言,其使用,具有跨平台的特点,可以在Linux、macO...
    Raxxie阅读 1,384,617评论 33 581
  • 我是怎么想到爱情的呢,想想我曾经算不算有过爱情呢?我在二十出头的年纪,有时候总觉得自己好像已经经历了很多事,有...
    舞台上的独角戏阅读 165评论 0 1
  • 今天收拾东西准备把去年的日历丢掉,丢之前翻看了几页,几乎每一页都写着计划要求,可回忆起来,日历写的计划只存在纸上...
    羊蹄wei阅读 573评论 0 1