vcf格式文件基础知识与编辑操作的方法是什么

2023-06-02

这篇文章主要介绍“vcf格式文件基础知识与编辑操作的方法是什么”,在日常操作中,相信很多人在vcf格式文件基础知识与编辑操作的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vcf格式文件基础知识与编辑操作的方法是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1. VCF文件基础知识介绍:

VCF文件介绍:
做过DNA重测序,群体遗传进化,BSA,GWAS等项目的人都会遇到VCF文件,这个文件记录了所有样品基因组中所有位置变异(主要包括SNP和InDel)信息。后续几乎所有的分析内容都是基于此文件,比如进化树分析、群体结构分析、PCA分析、GWAS关联分析等等。

因此了解VCF文件格式及其记录结果的意义非常重要。VCF文件其实是文本文件,可以用Windows当中文本编辑器软件打开,比如editplus等。由于VCF文件往往很大(通常超过1G),在Windows系统下直接打开会消耗大量内存进而造成卡死的现象。如果想顺利打开的话,这里建议使用pilotedit。

下面是一个典型VCF文件的部分示例(可左右拖动):

##fileformat=VCFv4.0
##fileDate=20090805
##source=myImputationProgramV3.1
##reference=1000GenomesPilot-NCBI36
##phasing=partial
##INFO=<ID=NS,Number=1,Type=Integer,Description="Number of Samples With Data">
##INFO=<ID=DP,Number=1,Type=Integer,Description="Total Depth">
##INFO=<ID=AF,Number=.,Type=Float,Description="Allele Frequency">
##INFO=<ID=AA,Number=1,Type=String,Description="Ancestral Allele">
##INFO=<ID=DB,Number=0,Type=Flag,Description="dbSNP membership, build 129">
##INFO=<ID=H2,Number=0,Type=Flag,Description="HapMap2 membership">
##FILTER=<ID=q10,Description="Quality below 10">
##FILTER=<ID=s50,Description="Less than 50% of samples have data">
##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
##FORMAT=<ID=GQ,Number=1,Type=Integer,Description="Genotype Quality">
##FORMAT=<ID=DP,Number=1,Type=Integer,Description="Read Depth">
##FORMAT=<ID=HQ,Number=2,Type=Integer,Description="Haplotype Quality">
#CHROM POS     ID        REF ALT    QUAL FILTER INFO                              FORMAT      NA00001        NA00002        NA00003
20     14370   rs6054257 G      A       29   PASS   NS=3;DP=14;AF=0.5;DB;H2           GT:GQ:DP:HQ 0|0:48:1:51,51 1|0:48:8:51,51 1/1:43:5:.,.
20     17330   .         T      A       3    q10    NS=3;DP=11;AF=0.017               GT:GQ:DP:HQ 0|0:49:3:58,50 0|1:3:5:65,3   0/0:41:3
20     1110696 rs6040355 A      G,T     67   PASS   NS=2;DP=10;AF=0.333,0.667;AA=T;DB GT:GQ:DP:HQ 1|2:21:6:23,27 2|1:2:0:18,2   2/2:35:4
20     1230237 .         T      .       47   PASS   NS=3;DP=13;AA=T                   GT:GQ:DP:HQ 0|0:54:7:56,60 0|0:48:4:51,51 0/0:61:2
20     1234567 microsat1 GTCT   G,GTACT 50   PASS   NS=3;DP=9;AA=G                    GT:GQ:DP    0/1:35:4       0/2:17:2       1/1:40:3
整体说明信息(Meta-information lines)

VCF文件的开头是整体注释信息,通常以##作为起始,其后一般接以FILTER,INFO,FORMAT等字样。

例如:以##FILTER开头的行,表示注释VCF文件当中第7列中缩写词的说明,比如q10为Quality below 10;##INFO开头的行注释VCF第8列中的缩写字母说明,比如AF代表Allele Frequency也就是等位基因频率;##FILTER开头的行注释VCF第9列中的缩写字母说明;另外还有其他的一些信息,文件版本"fileformat=VCFv4.0"等等。

VCF各列意义说明

各列之间用tab空白隔开;前面9列为固定列,第10列开始为样品信息列,可以无限多个;

  • #CHROM

  • POS

  • ID

  • REF

  • ALT

  • QUAL

  • FILTER

  • INFO

  • FORMAT

  • 后面的列都为样品基因型信息列

具体说明如下
  1. CHROM  记录染色体编号

  2. POS 记录染色体位置信息

  3. ID  SNP/INDEL的dbSNP编号通常以rs开头,一般只有人类基因组才有dbSNP编号

  4. REF 参考基因组碱基类型,必须是A,C,G,T,N且都大写。

  5. ALT 变异碱基类型,必须是A,C,G,T,N,. 且都大写,多个用逗号分割。"."表示这个地方没有reads覆盖为缺失。

  6. QUAL 变异信息的检测质量值,越高越可靠。

  7. FILTER  标记过滤结果的列,通常我们把VCF文件中的变异信息进行质控,过滤掉低质量的变异位点,如果该位点通过过滤标准那么我们可以在该列标记为"PASS",说明该列质量值高。标记完之后我们就可以用其他工具,把标记为"PASS"的列给筛选出来,这样方便后续分析。如果没有应用缺失值"."代替。

  8. INFO 为附加信息列,一般以=;形式添加额外的注释信息列,常见的如DP=18 表示该位点测序深度为18X;AF=0.1表示等位基因频率为0.1;

  9. FORMAT 为后面10列信息的说明列,通常以":"隔开各个缩写词。不同的变异检测软件可能会有差异,以下用GATK的检测结果为例:

  10. 10列(包含)以后为样品基因型列,各信息以":"分隔与FORMAT列一一对应;

  • GT 表示genotype,通常用”/” or “|”分隔两个数字,“|”phase过也就是杂合的两个等位基因知道哪个等位基因来自哪条染色体;0代表参考基因组的碱基类型;1代表ALT碱基类型的第一个碱基(多个碱基用","分隔),2代表ALT第二个碱基,以此类推;比如 REF列为:A, ALT列为G,T;那么0/1基因型为AG 杂合,1/1基因型为GG纯合SNP;1/2代表GT基因型;./.表示缺失;

  • AD 两种碱基各自支持的碱基数量,用","分开两个数据,分别代表两个等位基因的深度;

  • DP 该样品该变异位点的测序深度总和,也就是AD两个数字的和;

  • PL 归一化后各基因型的可能性,通常有三个数字用','隔开,顺序对应AA,AB,BB基因型,A代表REF,B代表ALT(也就是0/0, 0/1, and 1/1),由于是归一化之后,数值越小代表基因型越可靠;那么最小的数字对应的基因型判读为该样品的最可能的基因型;

  • GQ 针对PL的判读得到的基因型的质量值,此值越大基因型质量值越好。由于PL归一化之后通常最小的数字为0;那么基因型的质量值取PL中第二小的数字,如果第二小的数字大于99,我们只取99,因为在GATK中再大的值是没有意义的,第二小的数大于99的话一般说明基因型的判读是很可靠的,只有当第二小的数小于99的时候,才有必要怀疑基因型的可靠性。

介绍到这里,大家应该对VCF文件有了一个初步理解,如有其他问题请下方留言。

2. VCF文件处理工具介绍:

筛选特定条件下的SNP/Indel信息是比较常见的个性化分析需求,不过VCF文件通常比较大,不建议在Windows当中处理。那么我们怎么筛选处理VCF文件呢?这里介绍一个Linux中非常好用的vcf处理工具,vcftools http://vcftools.sourceforge.net/man_latest.html。这是他的帮助链接; 功能非常丰富;vcftools是一款处理vcf文件的工具,体积小、运行速度快,可以按位点信息、碱基位置等信息筛选特定条件下的变异信息,也可以比较两个vcf文件之间变异信息的差异,还可以对VCF文件拆分,格式转换,质量过滤筛选等等功能;强烈推荐使用;这里介绍一下我在工作中用过的一些命令选项。

过滤变异类型

vcf文件中可能会同时包含snp以及indel两种变异类型,vcftools可以很快的将两者进行分离。

使用方法:

过滤掉indel,只保留snp,用到的命令选项:--remove-indels。  

执行以下命令:

vcftools --remove-indels --recode --recode-INFO-all --vcf raw.vcf --stdout >raw.snp.vcf

过滤掉snp,只保留indel,用到的命令选项:--keep-only-indels。  

执行以下命令:

vcftools --keep-only-indels  --recode --recode-INFO-all --vcf raw.vcf --stdout >raw.indel.vcf

这样,就可以分别得到只包含snp和indel的vcf文件。

筛选指定位置变异位点

vcftools还可以挑选出基因组上某些区域的变异信息。

使用方法:

vcftools --vcf Variants.snp.unknown_multianno.vcf --chr A03 --from-bp 577700 --to-bp 607700 --out out_prefix --recode --recode-INFO-all

这里解释一下各个参数:

--vcf:后面跟的是vcf文件      

--chr:后面跟筛选区域所在的染色体      

--form-bp:后跟筛选区域的起始位置      

--to-bp:后跟筛选区域的终止位置      

--out:输出文件的前缀      

--recode:没有此参数则不会输出

过滤指定缺失率的变异位点

vcf 文件中很多snp在某些样品中是缺失的,也就是基因型为 "./." 。如果缺失率较高,这种snp位点在很多分析中是不能用的,需要去掉。这里用到的选项是 --max-missing

使用方法:

vcftools  --vcf snp.vcf  --recode --recode-INFO-all --stdout  --max-missing 1 > snp.new.vcf

--max-missing 后跟的值为 0-1 ,1代表不允许缺失,0代表允许全部缺失。

计算snp缺失率

vcftools中有两个参数可以计算vcf文件中snp的缺失率。 

 分别是:  

--missing-indv:生成一个文件,报告每个样品的缺失情况,该文件的后缀为“.imiss”。  

--missing-site:生成一个文件,报告每个snp位点的缺失情况,该文件的后缀为“.lmiss”。

使用方法:

vcftools --vcf  snp.vcf.   --missing-site

运行以上命令后会在当前目录生成一个 out.lmiss 文件,其格式如下:

CHR     POS     N_DATA  N_GENOTYPE_FILTERED     N_MISS  F_MISS
chr01   194921  988     0       368     0.37247
chr01   384714  988     0       204     0.206478
chr01   384719  988     0       202     0.204453
chr01   518438  988     0       488     0.493927
chr01   518473  988     0       452     0.45749
chr01   518579  988     0       418     0.423077
chr01   518635  988     0       428     0.433198
chr01   680786  988     0       346     0.350202
chr01   680834  988     0       412     0.417004

前两列为snp所在位置,第三列为等位基因总数,第5列为缺失的总数,最后一列为缺失率。

vcftools --vcf  snp.vcf.   --missing-indv

运行以上命令后会在当前目录生成一个 out.imiss 文件,其格式如下:

INDV    N_DATA  N_GENOTYPES_FILTERED    N_MISS  F_MISS
1       8747    0       3632    0.415228
10      8747    0       1264    0.144507
102     8747    0       2016    0.230479
105     8747    0       6322    0.722762
106     8747    0       2365    0.270378
107     8747    0       4376    0.500286
108     8747    0       5682    0.649594
109     8747    0       1877    0.214588
11      8747    0       1039    0.118784

第一列为样品名称,第二列为总的snp数,第4列为缺失的总数,最后一列为缺失率。

随机抽取指定个样品

vcftools可以随机抽取指定个样品的vcf文件,用到的选项为  --max-indv  ,指定要从vcf文件中随机抽取指定个样品。

使用方法:

随机抽取5个样品,执行以下代码:

vcftools --vcf snp.vcf --max-indv 5 --remove-indels --recode --out outfilename

到此,关于“vcf格式文件基础知识与编辑操作的方法是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注本站网站,小编会继续努力为大家带来更多实用的文章!

《vcf格式文件基础知识与编辑操作的方法是什么.doc》

下载本文的Word格式文档,以方便收藏与打印。