VCF详细介绍
学习资料
VCF头部信息
##fileformat=VCFv4.2
##FILTER=<ID=PASS,Description="All filters passed">
##ALT=<ID=NON_REF,Description="Represents any possible alternative allele not already represented at this location by REF and ALT">
##FILTER=<ID=LowQual,Description="Low quality">
##FORMAT=<ID=AD,Number=R,Type=Integer,Description="Allelic depths for the ref and alt alleles in the order listed">
##GATKCommandLine=<ID=CombineGVCFs,CommandLine="CombineGVCFs --output output/gvcf/cohort.g.vcf.gz --variant output/gvcf/mother.sorted.markdup.g.vcf --referen>
##INFO=<ID=AC,Number=A,Type=Integer,Description="Allele count in genotypes, for each ALT allele, in the same order as listed">
##contig=<ID=20,length=63025520>
- 第一行是VCF的版本信息;
- FILTER行是说过滤了什么内容;
- FORMAT和INFO 相当于变异位点的注释信息;
- CommandLine 是说使用的call variant工具信息;
- contig和reference 是当重复别人数据时,恰好没告诉你数据来源,这时就可以参考这个。
VCF记录的信息
这一部分至少包括8列tab分割的常规信息(用来描述变异位点),第9列及以后表示各个样本的变异信息(可以包括成百上千个样本)。
- CHROM:变异发生的chromosome或者contig
- POS:变异发生的基因组坐标(对缺失来讲,显示的是缺失开始的位置)
- ID:一般是dbSNP的ID(可有可无)
- REF:Forward strand(正链)上的参考等位基因
- ALT:正链上对应的改变的等位基因(可以有多个)
- QUAL:REF/ALT 变异位点存在的概率(和FASTQ的质量值、SAM的MAPQ一样,都是Phred值 -10 * log(1-p))
- FILTER:数据一般都要经过适当的过滤后才能继续使用variant callset(变异位点数据集),关于是否完成过滤会给出三种说明: 一是给出没有通过过滤的变异位点;二是PASS表示全部通过了过滤;三是. 表示这个位点没有任何过滤
- INFO:以tag=value的形式给出位点注释信息;分号;分割
- FORMAT:针对样本的注释;冒号:分割,并且对应后面各个sample中的信息
补充一下正链上的参考等位基因的知识:
具体的 REF/ALT
开始想象场景:我们用软件发现,在60bp处发现了一个变异,是A变成了T,那么应该这么表示:
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT align.bam
AF086833 60 . A T 54 . DP=43 GT:PL 0/1:51,0,48
如果同一个位置检测到有两种可能发生的变异呢?
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT align.bam
AF086833 60 . A T,C 43.2 . DP=95 GT:PL 1/2:102,124,42,108,0,48
事情还没完,刚刚两个例子都只是一个变异位点,但实际上有可能多个位点发生缺失(而这才是VCF复杂的开始),例如:58、59、60碱基(GGA)发生了缺失
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT align.bam
AF086833 55 . TGAGGA TGA 182 . INDEL;IDV=42 GT:PL 0/1:215,0,255
AF086833 60 . A C,T 39.8 . DP=126 GT:PL 1/2:99,87,47,86,0,49
这里注意:虽然我们看到缺失是从58碱基开始发生的,但是记录的是从55碱基。你会不会好奇:为什么是55而不是准确的58?为什么要表示成TGAGGA->TGA,而不是GAGGA->GA或者GGA->空 呢?这个需要引入一个新词汇”variant normalizatoin“,也就是说,所有的结果展示都是有规定的。
VCF的标准化,为了方便交流,规定以下几点:
- 用尽可能少的字母来表示变异位点;
- 等位基因长度不为0;
- 变异向左”贪婪比对“ (也就是说:一直向左比对,直到不匹配为止,然后以最左边的碱基位置表示变异的起始位置)
因此,这里写成TGAGGA->TGA就是表示缺失位点GGA向左最远可以匹配到第55号T碱基处
具体 FORMAT
GT:AD:DP:GQ:PL 0/1:17,15:32:99:399,0,439 0/1:11,12:23:99:291,0,292
GT:AD:DP:GQ:PL 0/1:13,10:23:99:243,0,341 0/1:21,14:35:99:355,0,526
从VCF的头部可以看到这些字段的解释如下:
GT
:GenotypeAD
: Allelic depths for the ref and alt alleles in the order listedDP
: Approximate read depth (reads with MQ=255 or with bad mates are filtered)GQ
: Genotype QualityPL
: List of Phred-scaled genotype likelihoods
关于PL
与GQ
的解释可以参考GATK4 HaplotypeCaller
GT的解释
尽管我们可以根据REF和ALT知道了碱基发生了怎样的变化,但是我们想知道这个变化是只是发生在一个DNA拷贝中,还是两个拷贝都有?需要用一个指标来量化这种变异~基因型(Genotype)。GT就是用来表示样本中这个位点的基因型,其中0表示参考REF,1表示变异ALT的第一个entry,2表示ALT的第二个entry(以此类推)
对于二倍体生物,GT表示了一个样本中的等位基因:
- 0/0 表示样本是纯合子,并且和参考的等位基因一样
- 0/1表示样本是杂合子,有一个参考的等位基因,一个变异的等位基因
- 1/2 样本是杂合子,两个都是变异的等位基因
- 1/1 样本是纯合子,且两个都是变异的第一个等位基因
- 2/2样本是纯合子,且两个都是变异的第二个等位基因(以此类推)
当然,如果不是二倍体,命名原理也是一样:单倍体(Haploid)只有一个GT值;多倍体有多个GT值
从INFO列也可以看出等位基因的相关信息(A开头的大多和等位基因Allele相关)
AC=2;AF=0.5;AN=4;
AC=3;AF=0.75;AN=4;
- AC(Allele Count):该Allele数目
- AF(Allele Frequency):该Allele频率
- AN(Allel Number):Allele总数目
对于二倍体样本(Diploid sample),基因型为0/1表示杂合子:AC=1表示Allele数为1(即该位点只有1个等位基因发生变异);AF=0.5频率为0.5(该位点只有50%的等位基因发生变异);AN=2表示总Allele为2
基因型为1/1表示纯合子,AC=2,AF=1,AN=2
正常人的二倍体基因组位点只有杂合和纯合两种情况,因此杂合AF一定是0.5,纯合AF一定是1,但实际的VCF数据是通过测序数据来的,随机性加上测序深度不够带来的系统误差,就使得结果变得不那么理想
PL的解释
List of Phred-scaled genotype likelihoods,直白来说就是一组等位基因的可能性,用来衡量不同基因型可能发生的概率,该值越小可能性越大,例如:
GT:PL 0/1:99:399,0,439
其中PL这一项有三个数值,分别对应三种可能的基因型(0/0,0/1,1/1)发生的概率:
- 第一个数值
291
表示基因型为0/0的概率是Phred值291,表示-10*log10( 10^(-29) )=290
,及基因型是0/0
纯合子的概率大约是10^{-29}; - 第二个数值
0
表示基因型为0/1的概率是Phred值0,表示-10*log10( 1 )=0
,及基因型是0/1
杂合子的概率大约是1; - 第三个数值
439
表示基因型为1/1的概率是Phred值439,表示-10*log10( 10^(-44) )=440
,及基因型是1/1
纯合子的概率大约是10^{-44}。
AD与DP的解释
软件判断是那种基因型,到底是不是发生了变异,是需要一定的统计方法的,主体就是之前比对的结果BAM文件,其中包含了reads的比对信息,这里就是根据reads比对的数量进行判断
GT:AD:DP 0/1:17,15
AD
(DepthPerAlleleBySample):unfiltered allele depth 就是有多少reads出现了某个等位基因(其中也包含了没有经过variant caller过滤的reads),但是不包括没意义的reads(就是那些统计结果不过关的,没法说服软件相信这个等位基因)。在二倍体样本中表示为:逗号分隔的两个值,前者为对应的ref基因型,后者为对应alt的基因型DP
:(Approximate read depth ):(Coverage,即reads覆盖度,指一些reads被过滤后的覆盖度)filtered depth, at the sample level 只有通过variant caller软件过滤后的reads才能计算入内,但是DP也纳入了那些经过过滤但没有意义的reads(uninformative reads),这一点又和AD不同
具体 Genotype Quality
GQ就是用Phred值来表示GT判断的准确性,它和PL相似,但是取值不同。PL最小值0表示最准确,GQ一般取PL的第二个小的值(除非第二小的PL大于99)。在GATK分析中,GQ最大就限制在99,因为超过99其实是没有什么意义的,并且还多占字符。因此,如果GATK中发现PL值中第二个小的值比99还要大,软件就将GQ标为99。用GQ值就可以得到,第一位和第二位之间到底差了多少,因此可以快速判断分析的准不准,选择第一个靠不靠谱
做一个小总结–VCF帮助判断基因型
1 899282 rs28548431 C T [CLIPPED] GT:AD:DP:GQ:PL 0/1:1,3:4:26:103,0,26
这个位点的GT=0/1,可以判断基因型是C/T;GQ=26表示排名第二基因型的可能性是0.0025,结果不是很好,因为虽然判断的第一位基因型的PL 为0很可靠,但是毕竟相差不多,很难推翻第二位(如果GQ值再大一些,我们就更有信心说明判断的C/T基因型是正确的)。当然,这里GQ的原因很有可能是取样太少,只有4条reads在这个位点作为参考(DP=4),这四条中有1条带参考的碱基信息,另外3条与参考不一致,存在变异(AD=1,3)
因此,重点的结论来啦!尽管我们相信,这个位点确实存在变异,但是假阳性依然存在,也就意味着基因型判断结果不一定是杂合子C/T,有一定的可能是变异纯合T/T(PL(1/1)=26),但一定不可能是参考纯合C/C (PL(0/0)=103)