几种基因型数据的转换

文摘   2024-09-11 13:24   北京  

通常我们基于基因型数据进行群体分析或者是定位分析,这些分析涉及的软件很多,他们的输入文件格式不尽相同,我们常常需要在多种格式之间进行转换。

主要涉及的格式有:vcf、hapmap、plink,其中plink涉及的文件类型较多,分类见下图。

01

文件格式介绍

1. vcf文件
vcf文件是用于记录variants (SNP / InDel)的文件格式,VCF文件分为两部分内容:以“#”开头的注释部分和没有“#”开头的主体部分。
主体部分每一行代表一个variant的信息,包含10列以上的数据:
CHROM:参考序列名称
POS:variant所在的left-most位置,即发生变异的位置的第一个碱基所在的位置
ID:variant的ID,同时对应着dbSNP数据库中的ID,若没有,则默认使用‘.’
REF:参考序列的Allele,即参考序列该位置的碱基类型及碱基数量
ALT:variant的Allele,变异所支持的碱基类型及碱基数量
QUAL:variants的质量
Phred格式的数值:代表着此位点是纯合的概率,此值越大,则概率越低,代表着次位点是variants的可能性越大
FILTER :次位点是否要被过滤掉。如果是PASS,则表示此位点可以考虑为variant
INFO:variant的相关信息
FORMAT:variants的格式,例如GT:AD:DP:GQ:PL
SAMPLES :各个Sample的值,由BAM文件中的@RG下的SM标签所决定,这些值对应着第9列的各个格式,不同格式的值用冒号分开,每一个sample对应着1列;多个samples则对应着多列,这种情况下列的数多10列

2.hapmap格式
hapmap文件含表头,主要有以下列:

3.plink格式

plink的数据格式有两套,每套各自的前缀名称相同,一套后缀为.bed、.bin和.fam,另一套后缀为.map和.ped。

fam文件(家族信息文件)有6列,分别为家系编号、个体编号、父系编号(0表示信息缺失)、母系编号(0表示信息缺失)、性别编号(1表示男,2表示女,0表示未知性别)、表型值(1表示对照,2表示病例,0/-9或者其他非数字表示信息缺失)
bim文件(个体信息文件)有6列,分别为染色体编号、SNP标识、以摩根或厘摩为单位的位置(可以用0)、碱基对坐标、Allele1和Allele2(通常是主效等位基因)
bed文件为二进制文件
map文件, 主要是图谱文件信息,有四列,分别为染色体编号、SNP名称称、 以摩根或厘摩为单位的位置、碱基对坐标
ped文件必须有6列,分别是Family ID(可以用个体ID代替)、个体ID、父本ID、母本ID、性别(如果未知用0代替)、表型数据(如果未知, 用0表示)、第七列以后为SNP分型数据(可以是AT CG或11 12, 或者A T C G或1 1 2 2

02


如何进行文件转化


1. vcf <-> hapmap:tassel软件

# vcf转hapmaprun_pipeline.pl -Xms10g -Xmx100g  -vcf in.vcf.gz -sortPositions -export out.hmp.txt -exportType HapmapDiploid
# hapmap转vcf,排序后转换run_pipeline.pl -SortGenotypeFilePlugin -inputFile hmp.txt -outputFile test.sort.hmp.txt -fileType Hapmaprun_pipeline.pl -Xmx100g -fork1 -h test.sort.hmp.txt -export -exportType VCF

2. vcf <-> plink :plink软件

# 有bed/bim/fam文件的时候转换,得到out_vcf.vcf# 如果是ped和fam转换,把-bfile换成-file# plink 1.9plink --bfile input --recode vcf-iid --out out_vcf# plink 2.0plink --bfile input --export vcf --out out_vcf
# vcf转plink的bed/bim/famplink --vcf out_vcf.vcf --make-bed --out out# vcf转plink的ped/mapplink --vcf out_vcf.vcf --recode --out out --double-id 

3. plink <-> hapmap:tassel软件

# hapmap转plink# 还没有找到直接转的方法,目前通过先转成vcf再通过vcf转换方法# 转vcf得到sort.vcfrun_pipeline.pl -SortGenotypeFilePlugin -inputFile hmp.txt -outputFile sort.hmp.txt -fileType Hapmaprun_pipeline.pl -Xmx100g -fork1 -h sort.hmp.txt -export -exportType VCF # 转plink的bed/bim/famplink --vcf out.vcf --make-bed --out out# plink转hapmap# 注意plink读入方式:-plink -ped input.ped -map input.maprun_pipeline.pl -Xms10g -Xmx100g  -plink -ped input.ped -map input.map  -sortPositions -export out.hmp.txt -exportType HapmapDiploid

4. plink <-> plink

# 1. bed/bim/fam 转为 ped/map#input files: test.bed; test.bim; test.fam  #output files: test1.ped; test1.mapplink --file test --recode --out test1 
#2. ped/map转为二进制格式 bed/bim/fam#input files: test.ped; test.map #output files: test2.bed; test2.bim; test2.famplink --file test --make-bed --out test2


参考资料:
vcf文件格式:https://blog.csdn.net/genome_denovo/article/details/78697679
hapmap格式:
https://www.jianshu.com/p/3be40b3a3789
plink数据格式:
https://phantom-aria.github.io/2023/06/20/a.html
plink相互转换:
https://blog.csdn.net/qq_22253901/article/details/121608557
vcf转hapmap:
https://www.jianshu.com/p/538b0a7de951


更多生物信息视频课程:





生信课堂
生信笔记
 最新文章