plink是目前使用的最为广泛的关联分析软件,其定义的ped/map文件系统,及其对应的二进制bed/bim/fam已经成为关联分析的标准文件格式。在进行关联分析之前,我们首先要做的就是将其他格式的文件转换为plink对应的文件格式。
VCF格式作为存储分型结果的一种标准格式,在实际分析中也广泛应用。本文总结了将vcf文件转换为plink对应文件格式的3种方式,详细展示如下
1. gatk3
在gatk3中,提供了一个名为VariantsToBinaryPed
的功能,可以将VCF格式转换为plink对应的二进制bed文件,基本用法如下
java -jar GenomeAnalysisTK.jar
-T VariantsToBinaryPed
-R reference.fasta
-V input.vcf
-m input.fam
-bed output.bed
-bim output.bim
-fam output.fam
要求三个输入文件,-R
参数指定参考基因组的fasta文件,-V
参数指定VCF文件,-m
参数称之为metadata, 保存了样本对应的家系信息,支持两种文件格式,第一种示意如下
对应ped文件的前六列内容,如果样本双亲信息不明确,则用unknown表示,简写成UNKN
, 表型信息没有的话用-9表示。第二种示意如下
由于VCF文件中只保存了样本的分型结果,所以家系信息通过一个额外的文件来补充。更多详情请参考以下文档
https://software.broadinstitute.org/gatk/documentation/tooldocs/3.8-0/org_broadinstitute_gatk_tools_walkers_variantutils_VariantsToBinaryPed.php
2. vcftools
vcftools是操作vcf文件的一款常用工具,支持将vcf文件转换成plink对应的ped/map格式,基本用法如下
代码语言:javascript复制vcftools --vcf input.vcf --plink --out output
没有额外的家系信息,在输出结果中,family id和sample id是重复的,其他列全部为0,示意如下
3. plink
plink1.9版本支持直接读取vcf/gen等多种文件格式,所以使用该版本时其实不需要专门进行格式转换,软件默认会将不同的格式转换为二进制bed文件格式。这里只是展示下其格式转换的用法,基本用法如下
代码语言:javascript复制plink --vcf input.vcf --recode --out output --double-id
默认转换为二进制的bed格式,对于分析更加适用,这里添加--recode
参数将输出结果调整为ped格式,可以更好的查看其转换的规则。
plink默认用下划线对样本名进行分隔,分隔的两个字段分别作为ped文件中的family id和sample id, 如果vcf中的样本名含有多个下划线,无法正确进行划分,软件会报错,此时可以修改--id-delim
参数,该参数设定了分隔符,默认是下划线,可以设置成其他字符,以达到正确区分的目的。
除此之外,还有一种解决方案,通过参数指定family_id的设定方式,有两种参数,第一种如上述示例中的--double_id
, 将family id和sample id保持相同,输出的ped文件的前六列示意如下
第二种参数用法如下所示
代码语言:javascript复制plink --vcf input.vcf --recode --out output --const-fid family_id
通过--const-fid
将family id设置成一个常量,默认值是0,上述示例输出的ped文件的前六列示意如下
双亲,性别默认用0填充,表型默认用-9填充。