1. 背景知识
- dNdS(KAKS),以及 omega(ω) 的定义,以及 ω 用于检测选择压可以参考博客一文说清KAKS、dNdS、DnDs,以及ω:https://yanzhongsino.github.io/2023/10/09/evolution_selection_dNdS_intro
- 选择分析的概况、PAML的安装和选择分析的常用模型可以参考博客用PAML的codeML进行选择分析:(一)概况简介:https://yanzhongsino.github.io/2023/10/10/evolution_selection_paml_intro
2. 分支模型 (branch model) 选择分析的目的
- 绝大多数情况下 ω < 1,因此选择分析通常是为了检测到较少见的正选择 (ω > 1)
- 结合系统发育树,分析 ω 在进化树上的变化。两种结果都是有意义的:
- 如果某一支(前景支)上的 ω > 1,而其他所有支(背景支)上的 ω < 1,并且似然率检验(LRT)的显著性分析支持备择假设(正选择),那么可认为前景支受到了正选择。
- 虽然进化树上的 ω 都小于1,但某一支比其他所有支的 ω 都要小,这也说明这一支受到负选择的放松。
3. 使用PAML的codeML中的分支模型 (branch model) 来检测分支的选择方向和强度
3.1. 假设
- 零假设 (null hypothesis):所有分支都有相同的 ω 值
- 备择假设 (alternative hypothesis):一些分支具有与背景分支不同的 ω 值
3.2. 准备输入文件
输入的序列比对文件和树文件的格式可以参考https://github.com/abacus-gene/paml-tutorial/tree/main/positive-selection/00_data 中的 Mx_aln.phy Mx_root.tree,Mx_unroot.tre。
- 序列比对文件 (cds_aln.phy)
- phylip格式,加上样品数量和序列长度两个数字组成的首行。
- 比对好的编码序列 (cds) 文件,碱基数量是3的倍数(codon模式比对)
- 建议删除gaps和难以align的区域,但要按密码子删除(删除和保留都是3的倍数个碱基)
- 树文件 (tree.newick)
- newick格式,并在首行前加上一行,包括两个数字,第一个是物种/样本数量,第二个是树的数量(一般是1),空格隔开。
- 只需要拓扑结构,删除枝长、支持率等信息。
- 配置文件 (codeml.ctl)
- codeml.ctl 的例子在安装的程序包paml/examples/下有,可以复制到分析目录下,修改后使用
- 基础的配置参数如下,后续分析可基于这套参数修改:
1 | seqfile = cds_aln.phy |
- 配置参数的含义和选择
1 | seqfile = cds_aln.phy * sequence data filename |
3.3. 执行codeML
- 零假设模型(null model)的运算——one ratio model
- 在基础的配置参数上修改以下参数,保存为codeml_null.ctl
1 | model = 0 * model = 0 代表零假设(即所有分支的 ω 值都一样) |
- 执行命令
codeml codeml_null.ctl
- 结果文件out_null.txt,这个模型得到的 ω 值代表整个系统发育树上的平均 ω 值。
- 备择假设模型(branch model)的运算———two ratio model
- 标记前景分支:在树文件tree.newick的基础上标记前景分支,保存为tree_branch.newick文件。
- 标记方法:标记某一支为前景支 (#1),标记某一支及所有子分支都为前景支($1)。如只标记A和B的祖先枝为前景支,则可用
((((A,B)$1,C),D),E);
;标记A和B祖先支以及A、B分支都为前景支:((((A,B)$1,C),D),E);
。 - 如果需要标记多个前景分支,则分别使用#1,#2,…(或者$1,$2,…)来标记。做过测试,同时标记多个前景支来运算和只标记一个前景支单独运算多次的结果是很接近的。
- 在基础的配置参数上修改以下参数,保存为codeml_branch.ctl
1 | model = 2 * model = 2 代表备择假设(不同分支的 ω 值有2种或以上的类别) |
- 执行命令
codeml codeml_branch.ctl
,得到结果文件out_branch.txt
3.4. 比较结果
3.4.1. 似然率检验 (Likelihood Ratio Test,LRT)
如果零假设被数据支持,那么两种假设的似然值差异不会超过抽样误差。LRT检验的是,两种假设的似然值的比值与1是否有显著差异,或者似然值的自然对数的差值与0是否有显著差异。
在两次运算的结果文件out_null.txt
和out_branch.txt
中分别寻找LRT的结果lnL值:
- 零假设模型的似然值的对数:
lnL(ntime:14 np:16): -1296.438022 +0.000000
- 备择假设模型的似然值的对数:
lnL(ntime:14 np:17): -1292.210434 +0.000000
- np代表参数的数量number of parameters
3.4.2. 用卡方检验(chi^2)计算p值,分析似然值差异的显著性
lnL1-lnL0 满足卡方分布(chi^2):;计算p值
- ▲LRT= abs (2 × (lnL1 - lnL0)) = abs (2 × (-1292.210434+1296.438022)) = 8.455176
- 自由度df = np1 - np0 = 17 - 16 = 1
- 卡方分布的显著性p值计算:在linux系统中之间使用命令
chi2 1 8.455176
来计算p值
- 在屏幕得到结果
df = 1 prob = 0.003640060 = 3.640e-03
- p=0.00364, 远小于0.01。可以拒绝零假设,接收备择假设。即前景分支的 ω 值对系统发育树的平均 ω 值来说有显著差异。
- 如果p值没有小于0.01,则无法拒绝零假设。
3.4.3. omega(ω) 值
在两次运算的结果文件out_null.txt
和out_branch.txt
中分别寻找omega(ω) 值的结果:
- 零假设模型的 ω 值:
omega (dN/dS) = 0.12795
- 代表零假设下,整个树上的平均 ω 值为0.12795
- 备择假设模型的 ω 值:
ω (dN/dS) for branches: 0.08179 0.21097
- 代表备择假设下,背景支的平均 ω 值为 0.08179 ,前景支的平均 ω 值为 0.21097。
- 由于p值<0.01,接受备择假设,代表前景支的 ω 值明显比背景支大,由于前景支和背景支的 ω 值都<1。所以前景支应该经历了负选择的放松。
4. reference
- PAML User Guide:https://github.com/abacus-gene/paml/blob/master/doc/pamlDOC.pdf
- PAML 中文用户手册:https://blog.sciencenet.cn/blog-3433349-1241310.html
- PAML开发者网站:http://abacus.gene.ucl.ac.uk/software/#phylogenetic-analysis-by-maximum-likelihood-paml
- 陈连福博客-基因正选择分析原理:http://www.chenlianfu.com/?p=3084%E5%92%8Chttp://blog.sciencenet.cn/blog-460481-1163040.html
- 视频-使用codeml的分支模型(branch test)检测进化树上某一支的选择压力:https://www.bilibili.com/video/av10469605/?from=search&seid=8859495264060497812&vd_source=86d4997d664e6bb659b1d0f0dcd15267
- wiki-Ka/Ks ratio:https://en.wikipedia.org/wiki/Ka/Ks_ratio
- paml检测正选择的初学者指南:https://wap.sciencenet.cn/blog-3434047-1389140.html?mobile=1
- 欢迎关注微信公众号:生信技工
- 公众号主要分享生信分析、生信软件、基因组学、转录组学、植物进化、生物学概念等相关内容,包括生物信息学工具的基本原理、操作步骤和学习心得。