Admixtools的使用 - 以D统计和f4统计(qpDstat)为例

-2. 仅作笔记,仅介绍软件的使用,不涉及原理

-1. 使用的是SNP的数据/vcf文件

https://github.com/DReichLab/AdmixTools


0. 安装

wget https://github.com/DReichLab/AdmixTools/archive/v7.0.1.tar.gz

tar -zxvf v7.0.1.tar.gz

cd AdmixTools-7.0.1

cd src

make clobber

make install

#Admixtools依赖的库/包有GNU Scientific library(gsl), BLAS, gfortran, lapack;请确保都安装上了。

##BLAS和LAPACK的编译与安装

https://www.jianshu.com/p/fe6c4f42aa0b

https://www.linuxidc.com/linux/2015-02/113169.html


后续共两步

第一步即转换格式./bin/convert -p parfile1

第二步./bin/qp3Pop -p parfile2


1.确定parfile

 (D统计的parfile2为parqpDstat,根据此要求的输入文件来决定第一步的parfile1,此处为.ind/snp/geno, .geno 文件即.eigenstratgeno文件,可知第一步转换格式所需要的parfile1为par.PED.EIGENSTRAT)

parfile2
parfile1,输出格式正好是parfile2要求的

(各种parfile1的具体格式在./AdmixTools-7.0.1/convertf中,可以将相应parfile直接cp出来在其基础上改)

(各种parfile2的具体格式在./AdmixTools-7.0.1/examples中,可以将相应parfile直接cp出来在其基础上改)

另:par.PED.EIGENSTRAT中第二、三行如果用plink生成的 .map文件和.ped文件,会报错,具体原因不明

所以改用fcgene生成的.pedsnp  .pedind文件代替


2.convertf转换格式

2.1 vcftools --vcf B_stacei2.vcf --plink --out B   (获得B.map  B.ped文件)

2.2 plink --noweb --file B --recode --allele1234 --out B2  (获得B2.map  B2.ped B2.nosex文件)

2.3 fcgene --map B2.map --ped B2.ped --oformat eigensoft --group-label ./popfile --out B3

popfile共两列,第一列是个体名,第二列是群体名。tab分隔符

此步骤得到B3.ped  B3.pedsnp  B3.pedind文件便是下一步的输入文件,但其中B3.pedsnp文件是存在问题的,如果直接把这3个文件拿来运行,会报错:  


问题出在 B3.pedsnp,报错中已经提示了,bad chrom: 0 scaffold_xxxxxx

问题出在第一列,即染色体编号,admixtools只能识别1-22号染色体,0号则会报错,故将第一列全部改为1。Tab分隔符。(PS: 如果这里使用B2.map/ped,就算把B2.map做下面相同的处理,也会报错,具体报错为FDXXX ignored……ES_9 ignored allindividuals set ignored.  Likely inputproblem )

awk'{print$1+1"\t"$2"\t"$3"\t"$4"\t"$5"\t"$6}'B3.pedsnp > B4.pedsnp


用B3.ped  B4.pedsnp  B3.pedind文件作为下一步的输入文件

配置par.PED.EIGENSTRAT如下图


2.4 ../bin/convertf -p par.PED.EIGENSTRAT 

获得B4.eigenstratgeno/snp/ind三个文件,用作下一步


3.D统计与f4统计

配置parqpDstat1和list_qpDstat2  (这里文件命名随意)

parqpDstat1

PS :

printsd: 是否输出标准差

在这个文件中加入这一行  f4mode: YES,就是运行f4统计

不加就是运行D统计

list_qpDstat2 文件的内容,每一行是:

P1 P2 P3 Out

....

输出文件是:

The program will write all the output to stdout. The output file prints the parfile entered by the user, number of snps and individuals, jackknife block size, number of blocks for jackknife and the results.

The results have the following format -

result:  Pop1 (W)  Pop2 (X) : Pop3 (Y)  Pop4 (Z)  D-stat Z BABA ABBA #_of_SNPs_that_all_populations_have_data

The result for each quadrppule is shown on a separate line.

如果D值显著大于0,则可以认为是P1和P3之间有基因流;显著小于0则是P2和P3之间有基因流。

摘自 https://github.com/DReichLab/AdmixTools/blob/master/README.Dstatistics

这点倒是和其他做D统计的软件恰恰是相反数,别的都是D大于0,P2和 P3有基因流


3.5 接触过Dsuite,Dsuite要求的vcf文件是分型的,admixtools没有明确要求

但是用分型之后的vcf文件同时运行Dsuite和admixtools

这个我做过,从统计检验上,从直观的箱线图上,二者结果完全相同




4.

其他分析都一样比如f3统计、f4统计,只要找到相应的parfile1转换格式/bin/convert

-p parfile1和parfile2运行代码/bin/XXX

-p parfile2即可。


最后附上f3统计、f4统计原理的简单介绍和应用

https://gaworkshop.readthedocs.io/en/latest/contents/06_f3/f3.html

https://compvar-workshop.readthedocs.io/en/latest/contents/03_f3stats/f3stats.html#f4-statistics

汪鸿儒老师对D统计和基因流的讲解

https://www.bilibili.com/video/BV1XQ4y1N7sx?spm_id_from=333.999.0.0

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容