Vcftools及vcf

一. VCF文件

Pasted image 20221026181450.png

1.1 简介

以“#”开头的注释部分:VCF的介绍信息,通常以##作为起始,其后一般接以FILTER,INFO,FORMAT等字样。

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

没有“#”开头的主体部分:每一行代表一个variant,各列之间用tab空白隔开,前面9列为固定列,第10列开始为样品信息列,可以无限多个

# 主体部分10列的范例
#CHROM  POS     ID      REF     ALT     QUAL    FILTER  INFO    FORMAT  MP16
13      7       13:6    C       T       .       PASS    NS=9;AF=0.500   GT:DP:AD:GQ:GL  0/1:122:81,41:40:-70.65,0.00,-174.69

1.2 10列分别代表的意义

1.CHROM:染色体编号

2.POS:variant所在的left-most位置(1-base position,发生变异的位置的第一个碱基所在的位置)

3.ID:variant的ID,对应着dbSNP数据库中的ID。(SNP/INDEL的dbSNP编号通常以rs开头,一般只有人类基因组才有dbSNP编号,若没有,则默认使用‘.’)

4.REF:参考序列的Allele。(等位碱基,即参考序列该位置的碱基类型及碱基数量,必须是A,C,G,T,N且都大写)

5.ALT:variant的Allele,若有多个,则使用逗号分隔。(变异的碱基类型及碱基数量)这里的碱基类型和碱基数量,对于SNP来说是单个碱基类型的编号,而对于Indel来说是指碱基个数的添加或缺失,以及碱基类型的变化

6.QUAL:variants的质量。PPhred格式(Phred_scaled)的质量值,代表着此位点是纯合的概率,此值越大,则纯合概率越低,表示突变可能性越大。(表示变异碱基的可能性)
计算方法:Phred值 = -10 * log (1-p), p为variant存在的概率; 通过计算公式可以看出值为10的表示错误概率为0.1,该位点为variant的概率为90%。

7.FILTER:使用上一个QUAL值来进行过滤的话,是不够的。GATK能使用其它的方法来进行过滤,过滤结果中通过则该值为”PASS”;若variant不可靠,则该项不为”PASS”或为”.”。

8.INFO:variant的相关信息

9.FORMAT:variants的格式,例如GT:AD:DP:GQ:PL

10.SAMPLES:各个Sample的值,由BAM文件中的@RG下的SM标签所决定,这些值对应着第9列的各个格式,不同格式的值用冒号分开,每一个sample对应着1列;多个samples则对应着多列,这种情况下列的数多余10列。

1.3 FORMAT 及对应 SAMPLES 值说明

FORMAT字段与样本数据列共同构成基因型信息,格式为 FORMAT字段:样本数据。例如:

GT:AD:DP:GQ:PL    0/1:6,5:11:99:138,0,153

1. GT(GenoType)

格式特征

基因型 二倍体含义 单倍体含义
0 - 与REF一致
1 - 与ALT一致
0/0 纯合REF 不适用
0/1 杂合REF/ALT 不适用
1/1 纯合ALT 不适用
./. 数据缺失 数据缺失

2. AD(Allele Depth)

数据格式:逗号分隔的数值
含义:各等位基因的reads覆盖深度
二倍体示例6,5 → REF深度6,ALT深度5

3. DP(Depth)

计算方式DP = SUM(AD)
单倍体特殊性:可能直接表示唯一等位基因深度

4. GQ(Genotype Quality)

特性

5. PL(Genotype Likelihoods)

数据格式

1.4 INFO 信息列

AC=1;AF=0.500;AN=2;BaseQRankSum=0.748;ClippingRankSum=0.000;DB;DP=34;ExcessHet=3.0103;FS=3.424;MLEAC=1;MLEAF=0.500;MQ=31.07;MQRankSum=-0.087;QD=11.87;ReadPosRankSum=-1.349;SOR=2.636

AC=2;AF=1.00;AN=2;DB;DP=14;ExcessHet=3.0103;FS=0.000;MLEAC=2;MLEAF=1.00;MQ=31.60;QD=29.36;SOR=5.421
TAG 描述 示例值 备注
AC 等位基因计数(Allele Count),与变异一致的Allele总数 AC=1, AC=2 双倍体样本中,0/1基因型对应AC=1,1/1对应AC=2
AF 等位基因频率(Allele Frequency),AF = AC / AN AF=0.500, AF=1.00 双倍体样本中,0/1基因型对应AF=0.5,1/1对应AF=1.0
AN 总等位基因数(Allele Number) AN=2 双倍体样本固定为2
BaseQRankSum Alt与Ref碱基质量的Wilcoxon秩和检验Z值 0.748 负值表示Alt碱基质量低于Ref
ClippingRankSum Alt与Ref硬剪切碱基数的Wilcoxon秩和检验Z值 0.000 用于检测剪切偏好性
DB 标记该变异位点存在于公共数据库中 无具体值 仅存在标记(如"DB")表示True
DP 过滤后reads覆盖深度 DP=34, DP=14 区别于未过滤的原始DP
ExcessHet 过量杂合性的Phred标准化p值 3.0103 值越大越可能错误
FS Fisher精确检验的链偏好性Phred值 3.424, 0.000 值越大链偏好性越显著,推荐保留FS < 10-20
MLEAC 最大似然估计的等位基因计数 MLEAC=1, MLEAC=2 可能与AC不同
MLEAF 最大似然估计的等位基因频率 MLEAF=0.500 可能与AF不同
MQ 比对质量的均方根值(RMS Mapping Quality) 31.07, 31.60 值越高比对质量越好
MQRankSum Alt与Ref比对质量的Wilcoxon秩和检验Z值 -0.087 负值表示Alt比对质量差于Ref,推荐保留 > -1.65~-3.0
QD 深度标准化变异质量(Variant Confidence/Quality by Depth) 11.87, 29.36 值越高可信度越高
ReadPosRankSum Alt与Ref读段位置的Wilcoxon秩和检验Z值 -1.349 负值表示Alt更靠近reads末端,推荐保留 > -1.65~-3.0
SOR 链偏倚对称比值比(Symmetric Odds Ratio) 2.636, 5.421 值越大链偏好性越强(>3表示可能存在偏好性)
Dels 含跨缺失reads的比例 未显示示例 值为0表示SNP,无此TAG表示INDEL
HaplotypeScore 与最多两个分离单倍型的一致性 未显示示例 值越高表示单倍型不一致风险越高
InbreedingCoeff 基于哈迪-温伯格平衡的近交系数 未显示示例 用于检测群体结构异常
MQ0 比对质量为零的reads总数 未显示示例 值高可能表示比对问题
RPA 串联重复单元的重复次数(每个等位基因) 未显示示例 与STR相关
RU 串联重复单元序列 未显示示例 例如"RU=GAA"表示重复单元为GAA
STR 标记短串联重复变异 未显示示例 存在标记表示该变异为短串联重复

关键过滤建议:

  1. FS:推荐保留 < 10-20
  2. MQRankSum:推荐保留 > -1.65 ~ -3.0
  3. ReadPosRankSum:推荐保留 > -1.65 ~ -3.0
  4. QD:通常过滤低QD值(如 < 2)
  5. SOR:> 3时可能存在链偏好性风险

二. Vcftools用法

2.1 过滤变异类型

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

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

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

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

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

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

2.2 筛选指定位置变异位点

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:没有此参数则不会输出

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

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代表允许全部缺失。

2.4 计算snp缺失率

vcftools中有两个参数可以计算vcf文件中snp的缺失率。
分别是:
–missing-indv:生成一个文件,报告每个样品的缺失情况,该文件的后缀为“.imiss”。
–missing-site:生成一个文件,报告每个snp位点的缺失情况,该文件的后缀为“.lmiss”。

2.4.1 –missing-site

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列为缺失的总数,最后一列为缺失率。

2.4.2 –missing-indv

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列为缺失的总数,最后一列为缺失率。

2.5 随机抽取指定个样品

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

# 随机抽取5个样品,执行以下代码:
vcftools --vcf snp.vcf --max-indv 5 --remove-indels --recode --out outfilename