1. 检测基因流的软件
- 基于MCMC算法的:IM,IMA
- 基于似然法的:除了3s外的其他软件只能分析两条序列
- Huristic method:ABBA(基于D统计量的计算,无数学模型,无法估计),Hyde
2. 3s软件简介
3s,3 species的简称。
软件是杨子恒和朱天琪团队开发,基于C语言的,通过计算似然率来检测两个近缘物种/群体间基因流的软件。推荐添加一个外类群,所以称为三个物种(3 species),适用于基因组数据。
- 3s简介
- 3s利用似然率来推断两个物种/群体间的基因流方向和强度
- 3s输入
- 输入:基因组或其他测序序列phylip文件
- 输出:基因流方向和强度
- 3s优势和不足
- 随着数据量线性增加运算时间,运算快,适合基因组数据。
- 一次只能检测三个物种/群体,无法建立系统发育网。
3. 开发历史
- 3s软件主页
- 2012年,朱天琪和杨子恒开发的检测基因流的模型SIM3s,发布了软件3s.v2.1版本,包含6个参数。
- 2017年,提出了Introgression模型,发布了版本3s.v3.1版本,包含9个参数。
- 2020年,据作者朱天琪说开发了新的more general migration model模型,包含15个参数,2022.09还未发表。
- 假设所有物种间都可能有基因,1-2间,2-3间,1-3间,3-5之间都可能存在基因流。
- 这个模型参数太多,最好根据先验知识尽可能设置一些无基因流的群体间参数为0,再进行计算更准确。
- 如果实在没有先验知识,那先打开所有可能基因流,运行一遍,再把基因流强度很低的位置关闭,再运行一遍获取更准确结果。
- 2020年09月据说代码已有,2022.09说还未发表,可以关注着。
4. 3s软件原理
4.1. 模型基础
- Wright-Fisher模型:溯祖模型的逆向过程
- 多物种溯祖模型
- 不区分物种间和群体间,这里的物种=群体
- 无法跨物种边界溯祖
4.2. 3s模型的参数定义
- 三个物种:两个近缘种(1和2)和一个外类群(3)
- 序列数据由中性位点组成
- θ1=4N1μ,θ2=4N2μ,θ4=4N4μ,θ5=4N5μ是物种1,2,4,5的群体大小参数。这里没有物种3是因为假设物种3没有基因流。
- τ0, τ1是两个物种的分化时间
- 迁移率(migration rate)Mij=Njmij。定义是在真实世界,从群体i向群体j的迁移个体的数量,其中Nj代表群体j的群体大小,mij代表迁移比例。
Figure 1. 3个物种的基因流模型参数
图源:https://academic.oup.com/sysbio/article/66/3/379/2670069?login=false
4.3. SIM3s模型
- 通过假设两个参数相等,θ1=θ2=θ;M12=M21=M
- 结果是共有6个参数需要评估:Θ={τ0,τ1,θ4,θ5,θ,M}
- 这个模型是2012年发表的老版本模型SIM3s(symmetric IM model for three species)
4.4. 3s模型背后的计算
基于最大似然法估计参数:先算似然函数,对参数做最优,似然值最大的对应参数即为估计结果。
- 每个位点/序列计算一个似然值,似然值代表的是给定参数后基因树的概率。
- 似然值的计算是通过马尔科夫链来描述和实现的,三个样本的初始状态是123。
- 在比对好的三个样本的序列上对不同模式进行碱基计数。三个样本的碱基一致为同一种模式,12一致3不一致为一种模式,等等。
- 3s软件的突变模型使用JC69模型,即各种碱基的任意方向和类型的替换速率是相等的,适合近缘物种/群体。
- 通过似然比检验(Likelihood Ratio Test,LRT)来判断有无基因流:当按照95%显著临界值,2Δℓ>5.99时,则认为检验是显著的,即存在基因流,基因流的大小即最大似然估计值。
5. 3s的优势
- 3s的计算基于极大似然法,极大似然法的优势在于计算量随着样本数是线性增加的,而比如贝叶斯,MCMC算法则是指数增加。
- 使用的segment/locus数量越多,检验功效(指有基因流存在情况下检出率)越好,所以适合检验基因组这种大数据。
- 假阳性很低(<5%可接受)
- 基因流的方向和强度都可以被估计。
6. 3s模型假设和数据准备
6.1. 3s模型假设和数据选择
- 使用中性位点避免重组的影响。
- 3s假设segment之间是自由重组的,segment内部是不存在重组的。所以建议在基因组上取样的序列不要离得太近(建议50kb,至少大于10kb),序列长度不要太长(50bp-1kb)。
- 使用的segment/locus数量越多,检验功效(指有基因流存在情况下检出率)越好,所以适合检验基因组这种大数据。
6.2. 常用的数据准备方式
- 适用于组装好的基因组数据
- 将基因组切分为1kb的片段
- 每隔50kb取1kb的片段
- 将含有基因和基因上下游10kb的片段去除(基因通常被认为是非中性的)
- 适用于获取的别人的partition数据
- 去除间隔<10kb的partition
- 删除序列长度<50bp或者>1000bp的partition
- 适用于微生物等基因组非常小的样品
- 有许多微生物样品的基因组很小,能取的片段数量有限,影响分析结果。
- 可以通过非独立重抽样增加片段数量。
- 每个物种测序多个个体,共同作为一个数据源,以增加片段数量。比如ABC三个物种都测四个个体,A1B1C1,A2B2C2,A3B3C3,A4B4C4。
7. 3s软件使用
7.1. 3s软件安装
1 | wget http://abacus.gene.ucl.ac.uk/software/3s.v3.1.tgz # 下载软件,只有6.74MB |
7.2. 输入文件
- 三个样本的碱基序列文件
- phylip格式
- 比对好的(aligned)
- 3s.ctl:参数文件基本使用默认即可,不需要变动。
1 | seed = -1 #随机数种子,-1使用时间种子 |
- mapfile
- 用于指定三个物种分别是1,2,3的文本文件。
- 每行两列,空格隔开。第一列物种名,第二列1,2,3。保存mapfile.txt
1 | A 1 |
7.3. 3s软件运行
运行命令3s 3s.ctl
即可
7.4. 运行结果
结果示例
1
2
3
4
5
6
7
8
9
10
11
12
13***Model 0 (M0)***
lnL = -342929.817009
MLEs
theta4 theta5 tau0 tau1 theta1 theta2 theta3
0.002213 0.000337 0.000866 0.000431 0.001156 0.003993 0.000502
***Model 2***
lnL = -342888.249022
2DlnL = +83.135973
MLEs
theta4 theta5 tau0 tau1 theta1 theta2 theta3 M12
0.002248 0.000076 0.000853 0.000759 0.000987 0.001408 0.000500 0.934564结果的解释
- Model 0是没有基因流的情况下估计得到的参数,theta是θ,tau是τ。
- Model 2是存在基因流的情况下估计得到的参数,M12代表的是从物种1到物种2的基因流,强度是0.934564,代表平均每一代有0.934564个个体从物种1迁移到物种2,是很强的基因流。
7.5. 结果有效性
7.5.1. 如何保证收敛
- 同一数据,运行多次保证结果一致,且2dlnL>0。当多次结果不一致时,可以考虑调小small_diff,不行再调大。
- 遇到收敛困难时,可以先在M0(即无基因流的模式)下分析,把M0的MLE作为其他模型的初值。
- 如果估计值触碰到上下界且明显不合理,需多次分析;可以尝试通过修改in.3s文件将初值设置在更合理的地方。
- 将不可能出现迁移的方向迁移率设置为0,减少参数个数。
7.5.2. 如何选择正确模型
- 如估计的树接近星状树,需调整物种树再次分析。这个调整物种树就是调整mapfile.txt文件,使得不同物种成为外类群。如果调整成任意物种树都是星状树,则可以作为辐射进化(即τ0,τ1时间很短)的证据。
- 如果迁移率Mij触碰下界可将该迁移率固定为0后重新分析,如两次分析-lnL相差在1.92内,则认为参数少的模型更加准确。
- 多次分析后找出最优模型
8. reference
这篇笔记主要是参考“朱天琪老师在中国科学院微生物研究所真菌学国家重点实验室主办的2020种群遗传学与基因组学高级培训班(第二期)和2022组学驱动的进化生态高级培训班的讲座和PPT”。
- 欢迎关注微信公众号:生信技工
- 公众号主要分享生信分析、生信软件、基因组学、转录组学、植物进化、生物学概念等相关内容,包括生物信息学工具的基本原理、操作步骤和学习心得。