最近想用自己有的数据做一下基因渗入的分析。由于之前没有了解过太多这方面的知识,于是从github上找到了一份不错的教程,借此机会与大家一起学习一下。
该教程的总结
随机测序生信技术的进步,研究者已经开发了许多基于SNP数据的基因渗入分析方法和流程。其中包括最出名的ABBA-BABA test,该方法使用所谓的D统计量来评估物种的基因渗入程度。最初的ABBA-BABA test,已经以各种方式进行了进一步扩展,包括Dfoil统计量,该数据允许从5种物种中推断出基因渗入的方向,以及更适合基因流鉴定的fD统计量关于基因组某些区域的流动。如果已经鉴定了的杂种个体以及假定的亲本物种,则可以用祖先绘画来研究渐渗的模式,这种方法是在亲本物种和在推定的杂种中的等位基因之间的固定的位点。
SNP数据也可用于系统发育方法去研究基因渗入分析;在最近引入的方法TWISST中实施了一种这样的方法,该方法根据它们被相同物种的不同个体支持的程度来权衡局部SNP系统发育的拓扑。
基本概念
基因渗入(introgression) 是在遗传学(特别是植物遗传学)中,指两个基因库间的基因流动,通常是经过种间杂交产生。基因渗入是一个长期的过程,它可能需要许多代杂交才能产生回交。
ABBA BABA test(也称为D统计)为偏离严格的分叉进化历史提供了简单而有力的统计测试。因此,它们经常使用它研究SNP基因组层面的基因渗入。
不完全谱系分选:基因树与物种谱系树或种群树不一致的现象。
教程概况
在本教程中,将会介绍三种不同方法,用于分析SNP数据的基因渗入:使用ABBA-BABAtest获得的D-统计量,使用TWISST进行拓扑加权和利用血统关系进行绘图分析。由于推荐使用分阶段数据进行TWISST分析,因此在此分析之前将使用BEAGLE软件进行等位基因phasing。
所使用的测试数据
简单来说,该SNP数据集是由下表中列出的14种慈鲷物种的28个样本组成的,并且该SNP数据已经基于读取质量和深度进行过滤。该SNP数据集,只包括能比对到到罗非鱼基因的5号染色体的SNP。
Sample ID | Species ID | Species name | Tribe |
---|---|---|---|
IZA1 | astbur | Astatotilapia burtoni | Haplochromini |
IZC5 | astbur | Astatotilapia burtoni | Haplochromini |
AUE7 | altfas | Altolamprologus fasciatus | Lamprologini |
AXD5 | altfas | Altolamprologus fasciatus | Lamprologini |
JBD5 | telvit | Telmatochromis vittatus | Lamprologini |
JBD6 | telvit | Telmatochromis vittatus | Lamprologini |
JUH9 | neobri | Neolamprologus brichardi | Lamprologini |
JUI1 | neobri | Neolamprologus brichardi | Lamprologini |
LJC9 | neocan | Neolamprologus cancellatus | Lamprologini |
LJD1 | neocan | Neolamprologus cancellatus | Lamprologini |
KHA7 | neochi | Neolamprologus chitamwebwai | Lamprologini |
KHA9 | neochi | Neolamprologus chitamwebwai | Lamprologini |
IVE8 | neocra | Neolamprologus crassus | Lamprologini |
IVF1 | neocra | Neolamprologus crassus | Lamprologini |
JWH1 | neogra | Neolamprologus gracilis | Lamprologini |
JWH2 | neogra | Neolamprologus gracilis | Lamprologini |
JWG8 | neohel | Neolamprologus helianthus | Lamprologini |
JWG9 | neohel | Neolamprologus helianthus | Lamprologini |
JWH3 | neomar | Neolamprologus marunguensis | Lamprologini |
JWH4 | neomar | Neolamprologus marunguensis | Lamprologini |
JWH5 | neooli | Neolamprologus olivaceous | Lamprologini |
JWH6 | neooli | Neolamprologus olivaceous | Lamprologini |
ISA6 | neopul | Neolamprologus pulcher | Lamprologini |
ISB3 | neopul | Neolamprologus pulcher | Lamprologini |
ISA8 | neosav | Neolamprologus savoryi | Lamprologini |
IYA4 | neosav | Neolamprologus savoryi | Lamprologini |
KFD2 | neowal | Neolamprologus walteri | Lamprologini |
KFD4 | neowal | Neolamprologus walteri | Lamprologini |
需要的工具包
- Python的ete3包
在做TWISST拓扑加权分析时需要用到这个包,最简单的方式是直接通过pip来安装:
python -m pip install --user ete3
为了确保安装成功,尝试一下这个包能不能运行:
python -c 'import ete3'
如果没有报错,证明这个包正确被安装可以运行。
-
RAxML
一个经典的做系统发育进化的工具,也很好安装:
git clone https://github.com/stamatak/standard-RAxML
###根据你需求来安装对应的版本,这里我尝试安装的是支持多个cpu的版本
make -f Makefile.PTHREADS.gcc
使用D统计量来测量基因的渗入
在不完全谱系分选的情况下,两种姐妹物种与第三种密切相关的物种共享大约相同比例的衍生等位基因。
因此,如果物种“spc1”和“spc2”是姐妹而“spc3”是密切相关的物种,那么由“spc1”和“spc3”共享但不和“spc2”共享的衍生的等位基因的数量应该和由“spc2”和“spc3”共享但不和“spc1”共享的衍生的等位基因的数量应该大致相似。(有点绕口,如果一次没看懂可以多看几次。)
相反,如果杂交导致物种“spc3”与两个物种“spc1”和“spc2”中的一个之间的发生基因渗入,则“spc3”应该与该物种共享更多的衍生等位基因,而不是与另一个物种共享,导致"spc1"和"spc2"产生不对称在共享衍生等位基因中。
发生这一系列情况的期望,就是所谓的“ABBA-BABA test”的基础,其量化的D统计量可以用来测量基因渗入的程度。除了三种“spc1”,“spc2”和“spc3”之外,ABBA-BABA test还需要第四种“spc4”,它应该是“spc1”,“spc2”和“spc3”的共同外群。
仅用于确定哪个等位基因是祖先等位基因,然后将祖先等位基因标记为“A”,将双等位基因SNP的衍生等位基因标记为“B”。在最简单的情况下,其中仅从四个物种中的每一个中采样单个单倍体序列,“ABBA位点”是物种“spc2”和“spc3”共享衍生的等位基因“B”而“spc1”保留祖先等位基因。类似地,“BABA位点”是其中“spc1”和“spc3”共享衍生的等位基因“B”而“spc2”保留祖先等位基因“A”。然后将D统计量定义为ABBA位点和BABA位点的数量差与两种类型位点的总和的比值。
简单来说可以用该公式表示:
D = [sum(ABBA) – sum(BABA)] / [sum(ABBA) + sum(BABA)]
如果没有基因渗入,这个D统计量预计为0;在没有不完整谱系排序并在“spc2”和“spc3”之间进行基因交流的极端情况下为1;如果不存在不完整的谱系分选,但在“spc1”和"spc3"之间发生基因交流,则为-1 ;但是,按照惯例,如果“spc1”变得更接近“spc3”而“spc2”变为“spc3”,则交换“spc1”和“spc2”,这样D统计量保持在区间[0, 1]。
介绍到这里就结束了,如果有些地方我翻译理解得不够妥当,可以到原文网址查看原文得内容。下次会继续介绍一下,如何进行基因渗入得分析?欢迎大家持续关注