生信学习笔记:使用SNP data做基因渗入分析 (3)

距离上次更新这个专题后,该教程的原作者更新了一下原教程,使用了一个新的,非常好用的工具,Dsuite进行基因渗入分析,这期的推文就和大家一起回顾并学习一下该工具的使用,加深对基因渗入分析的了解。

首先如果你是第一次或者没有看到之前的文章,先去看看渗入分析的背景介绍和该教程所用的数据的相关背景知识:

然后还有就是旧版的教程,大家有兴趣可以看看,比较一下使用的方法的异同:

准备工作

测试数据的下载

wget https://raw.githubusercontent.com/mmatschiner/tutorials/master/analysis_of_introgression_with_snp_data/data/NC_031969.f5.sub1.vcf.gz

保存好我们的样本名文件,这里除了outgroup物种外有13个物种:

vi samples.txt

###将下面的样本名复制进去
  IZA1  Outgroup
  IZC5  Outgroup
  AUE7  altfas
  AXD5  altfas
  JBD5  telvit
  JBD6  telvit
  JUH9  neobri
  JUI1  neobri
  LJC9  neocan
  LJD1  neocan
  KHA7  neochi
  KHA9  neochi
  IVE8  neocra
  IVF1  neocra
  JWH1  neogra
  JWH2  neogra
  JWG8  neohel
  JWG9  neohel
  JWH3  neomar
  JWH4  neomar
  JWH5  neooli
  JWH6  neooli
  ISA6  neopul
  ISB3  neopul
  ISA8  neosav
  IYA4  neosav
  KFD2  neowal
  KFD4  neowal

对Dsuite进行安装:

git clone https://github.com/millanek/Dsuite.git
cd Dsuite
make

Dsuite主要包含三个:“Dtrios”,“DtriosCombine”和“Dinvestigate”不同命令,这里我们计算D统计量主要用到 Dtrios,下面是该工具的帮助文档,大家可以熟悉一下,主要的参数就是-j,主要用于设定计算窗口的大小范围:

Usage: Dsuite Dtrios [OPTIONS] INPUT_FILE.vcf SETS.txt
Calculate the Dmin-statistic - the ABBA/BABA stat for all trios of species in the dataset (the outgroup being fixed)
the calculation is as definded in Durand et al. 2011
The SETS.txt should have two columns: SAMPLE_ID    SPECIES_ID
The outgroup (can be multiple samples) should be specified by using the keywork Outgroup in place of the SPECIES_ID

-h, --help                              display this help and exit
-j, --JKwindow                          (default=20000) Jackknife block size in SNPs
-r , --region=start,length              (optional) only process a subset of the VCF file
-t , --tree=TREE_FILE.nwk               (optional) a file with a tree in the newick format specifying the relationships between populations/species
                                        D values for trios arranged according to these relationships will be output in a file with _tree.txt suffix
-n, --run-name                          run-name will be included in the output file name

实战演示

如Dsuite帮助文本上面所示,该程序可以运行Dsuite Dtrios [OPTIONS] INPUT_FILE.vcf SETS.txt。在我们的例子中,输入文件是NC_031969.f5.sub1.vcf.gz,而sets文件是包含之前写入的样本和物种ID的表samples.txt。因此,启动我们的测试数据集的Dsuite分析:

Dsuite Dtrios NC_031969.f5.sub1.vcf.gz samples.txt

该运行应该在几分钟内就能完成。

现在使用该ls命令查看当前目录中的文件。应该能看到Dsuite已经编写了一些以sample-table文件命名的文件:

samples__BBAA.txt
samples__Dmin.txt
samples__combine.txt
samples__combine_stderr.txt

接下来,查看文件的内容samples__combine.txt,例如使用less命令。您将看到此文件的第一部分具有以下内容

altfas  neobri  neocan  1378.2  13479.6 4066.95
altfas  neobri  neochi  2281.67 2322.45 8154.16
altfas  neobri  neocra  1610.98 1495.17 14174.6
altfas  neobri  neogra  1618.4  1559.8  14312.1
altfas  neobri  neohel  1549.77 1416.71 14741.8
altfas  neobri  neomar  1980.94 1728.7  13168.8
altfas  neobri  neooli  1668.03 1460.84 14734.4
altfas  neobri  neopul  1279.66 1164.73 14283.7
altfas  neobri  neosav  1729.49 1616.15 12626.2
altfas  neobri  neowal  2525.99 2440.28 8572.34
altfas  neobri  telvit  2581.12 2688.36 8258.12
altfas  neocan  neochi  12306.4 1310.06 3745.6
altfas  neocan  neocra  14200.7 1395.33 4097.46
altfas  neocan  neogra  14825.3 1436.9  4286.4
altfas  neocan  neohel  14063.7 1361.83 4102.08
altfas  neocan  neomar  14794.6 1422.08 4181.25
altfas  neocan  neooli  14834.4 1408.33 4274.5
...

在这里,每一行显示分析一个三个物种的分析结果,例如在第一行中,Altolamprologus fasciatus(“altfas”)用作P1,Neolamprologus brichardi被认为是P2,而Neolamprologus cancellatus被放置在P3。然后该行的第五和第六列中的数字分别代表着:ABBA位点在该三个物种中的数量(C-ABBA)(其中衍生的等位基因由“neobri”和“neocan”共享)和BABA位点的计数,C-BABA(衍生的等位基因由“altfas”和“neocan”共享)。除了第5和第6列中BABA和ABBA位点的数量之外,第4列列出了“BBAA”位点的数量(C-BBAA),P1和P2共享衍生的等位基因(因此通过“altfas”和“ neobri“共享)。

你可能会注意到,在此文件中,所有三元组都按字母顺序排序; 因此,P1在P2之前按字母顺序排列,P2在P3之前。然而,如上所述,ABBA-BABA测试基于P1和P2是姊妹物种的假设。当计算给定三个物种的D-统计量时,Dsuite首先重新排列分配给P1,P2和P3的物种(因此ABBA,BABA和BBAA位点的数量也重新排列),这是根据某些规则:

  • 在第一组计算中,测试所有可能的重新排列,并且报告每给定三个物种的最低D-统计量,称为D min。因此,D min是给定三个物种中D-统计量的保守估计。此输出将写入具有__Dmin.txt结尾的文件。
  • 这样的排列使得P1和P2是给定三个物种的两种物种,它们共享最大数量的衍生地点。换句话说,进行重排以使C-BBAA > C-ABBA和C-BBAA > C-BABA。另外,旋转P1和P2,使得在P2和P3之间共享的派生位点的数量大于P1和P3之间的派生站点的数量。总之,这意味着C-BBAA > C-ABBA >C-BABA。这种类型的重排背后的想法是,共享最大数量的衍生地点的两个物种很可能是给定三个物种中真正的两个姊妹物种,因此正确地放置在位置P1和P2。预计这种假设在某些条件下会持续存在(例如时钟式演化,缺乏同质性,缺乏渐渗,以及泛化的祖先种群),但有时候很难说真实数据集的可靠性。基于这种类型的重新排列的D-统计被写入具有结尾__BBAA.txt的文件。
  • 要直接告诉Dsuite哪个给定三个物种应该被视为姊妹物种(因此,应该将其分配给P1和P2),我们可以使用参数-t或提供包含所有数据集种类的树文件--tree。然后输出将被写入带有结尾__tree.txt的附加文件。这里后面会讲到。

那么,让我们看看如何基于给定三个物种的前两条规则计算D统计量。看看文件samples__Dmin.txt,例如使用less命令:

less samples__Dmin.txt

你应该看到文件的第一部分,如下所示:

 P1      P2      P3      Dstatistic      p-value
  altfas  neocan  neobri  0.493787        0
  neobri  neochi  altfas  0.00885755      0.3836
  neocra  neobri  altfas  0.0372849       0.013765
  neogra  neobri  altfas  0.0184394       0.258714
  neohel  neobri  altfas  0.0448571       0.113967
  neomar  neobri  altfas  0.0679957       0.0195241
  neooli  neobri  altfas  0.0662179       0.0133793
  neopul  neobri  altfas  0.0470166       0.10957
  neosav  neobri  altfas  0.0338796       0.103889
  neowal  neobri  altfas  0.0172581       0.266909
  neobri  telvit  altfas  0.0203511       0.199163
  altfas  neocan  neochi  0.481745        0
  altfas  neocan  neocra  0.491942        0
  altfas  neocan  neogra  0.497877        0
  altfas  neocan  neohel  0.501518        0
  altfas  neocan  neomar  0.492416        0
  altfas  neocan  neooli  0.504355        0
  ...

如标题行所示,第四列现在显示每一个给定三个物种的的D-统计量,第五列显示基于对D = 0 的零假设的归一化的p值。

让我们选择一个给定三个物种的例子,看看它是如何出现在三个不同的文件samples__combine.txtsamples__Dmin.txt,和samples__BBAA.txt。我们将选择第一个给定三个物种的例子,包括“altfas”,“neocan”和“neobri”的那一行。要仅从三个文件中查看此给定三个物种的例子的行,可以使用此命令:

cat samples__combine.txt | grep altfas | grep neocan | grep neobri
cat samples__Dmin.txt | grep altfas | grep neocan | grep neobri
cat samples__BBAA.txt | grep altfas | grep neocan | grep neobri

这应该会分别输出以下三行:

###samples__combine.txt
altfas  neobri  neocan  1378.2  13479.6 4066.95
###samples__Dmin.txt
altfas  neocan  neobri  0.493787    0
###samples__BBAA.txt
altfas  neocan  neobri  0.493787    0

这里简单解析一下结果,首先samples__combine.txt品种名字母排序的方式与其它两个文件有点不同,P1在三个文件中保持相同(“altfas”),但是P2和P3的顺序被交换了(“neocan”和“neobri”)。此交换还暗示ABBA,BABA和BBAA模式的计数相应地交换。因此在交换之后并且P1 =“altfas”,P2 =“neocan”,P3 =“neobri”,计数如下:C-ABBA = 4066.95,C-BABA = 1378.2,C-BBAA = 13479.6。因此,“neocan”和“neobri”共享4066.95个衍生位点,“altfas”和“neobri”共享1378.2个衍生位站,“altfas”和“neocan”共享13479.6个衍生位站。有了这些数量,D=(4066.95 - 1378.2)/(4066.95 + 1378.2)= 0.493787。这个数字与Dsuite在这两个文件(samples__Dmin.txtsamples__BBAA.txt。)生成的报告一致。

重复与上一步相同的操作,但这一次使用给定开头为neo的三个物种的,文件samples__Dmin.txt和重新排列不同samples__BBAA.txt。三个“neobri”,“neocra”和“neogra”就是这样一个例子。使用这些命令可以在所有三个文件中查看此给定开头为neo的行:

cat samples__combine.txt | grep neobri | grep neocra | grep neogra
cat samples__Dmin.txt | grep neobri | grep neocra | grep neogra
cat samples__BBAA.txt | grep neobri | grep neocra | grep neogra

结果会分别输出以下的行:

###samples__combine.txt
neobri  neocra  neogra  3788.23 3552.38 2992.93
###samples__Dmin.txt
neogra  neocra  neobri  0.0321294   0.145298
###samples__BBAA.txt
neocra  neobri  neogra  0.0854723   8.58201e-07

文件中的结果samples__BBAA.txt表明,当P1 =“neocra”,P2 =“neobri”,P3 =“neogra”时,则C-BBAA = 3788.23,C-ABBA = 3552.38,C-BABA = 2992.93,因此D =(3552.38 - 2992.93)/(3552.38 + 2992.93)= 0.0854723。

然而,文件中的结果samples__Dmin.txt显示,这次发生了另一次重新排列(因此C-BBAA不大于其他两个计数的重新排列)产生较低的D-统计:P1 =“neogra”,P2 =“neocra” ,并且P3 =“neobri”,则C-BBAA = 2992.93,C-ABBA = 3788.23,并且C-BABA = 3552.38,因此D =(3788.23-3552.38)/(3788.23 + 3552.38)= 0.0321294。

这说明了D-min值,报告了可能的最低D值对于给定三物种的统计,有时选择该三个物种的重新排列,其中P1和P2实际上彼此共享较少的派生位点,而不是它们两者与P3共享。这与ABBA-BABA测试的原始假设相冲突,即P1和P2彼此之间的关系比P3更紧密。在解释Dsuite分析的结果时,应该记住,在文件中报告的D min值__Dmin.txt实际上是D -statistic的保守估计文件中报告的值以__BBAA.txt结尾为基础,这些值基于确保C-BBAA > C-ABBA > C-BABA的重新排列,通常可以更好地测量D -statistic,但是,最好的选择可能是使用--tree选项运行分析,提供一个输入树,直接告诉Dsuite如何重新排列所有三个物种,这部分就留下次再讲吧,要不然信息量太大大家也不好吸收。

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

推荐阅读更多精彩内容