VCF数据

布莱恩·克瑙斯

2023-12-07

大多数变量调用管道导致文件包含变量信息。这个变量调用格式(VCF)是一个此数据的流行格式。变量调用者通常尝试从下游质量的角度积极调用变体控制步骤将删除低质量的变体。工作的第一步用这些数据是为了了解它们的内容。

三个部分

可以认为VCF文件有三个部分:区域,一个固定区域和agt公司区域。元区域位于文件的顶部。这个元区域中的信息定义了其他地方使用的缩写在文件中。它还可以将用于创建文件的软件记录为以及该软件使用的参数。在元区域下方数据是表格形式的。此表的前八列包含关于每个变体的信息。这些数据可能是通用的变异,如其染色体位置,或总结样本,例如质量指标。这些数据是固定的或相同的,所有样本。VCF文件中需要修复区域,后续列是可选的,但在我的经验中很常见。开始于第十列是每个样本的一列。这些列中的值为每个样本和每个变体的信息。每个人的组织包含基因型和相关信息的细胞在第九列。文件中这三个区域的位置可以是由下面的漫画表示。

VCF文件组织的卡通表示

VCF文件组织的卡通表示

VCF文件规范非常灵活。这意味着有插槽用于某些类型的数据,但任何特定的软件创建VCF文件并不一定要全部使用它们。同样,作者有机会加入新形式的数据已由VCF规范的作者预见。结果所有VCF文件都不包含相同的信息。

对于这个示例,我们将使用vcfR提供的示例数据。

图书馆(vcfR)
数据(vcfR_example)
真空断路器
##类vcfR的*****对象*****##18个样品##1个色谱仪##2533种变体##对象大小:3.2 Mb##8.497%的数据缺失## *****        *****         *****

功能库()加载库,在这种情况下包vcfR。功能数据()加载数据集包含在R及其包中。我们对数据()荷载“vcfR_example”数据集中的对象“gff”、“dna”和“vcf”。在这里我们只对包含示例vcf的对象“vcf”感兴趣数据。当我们不使用函数调用对象名称时,它会调用“show”方法将一些摘要信息打印到控制台。

元区域

元区域包含有关文件及其创建的信息,如以及解释中其他地方使用的缩写的信息文件。元区域的每一行都以双磅符号开头(‘##’). vcfR附带的示例如下所示。(只有为了简洁起见,显示了前10行。)

strwrap(strwrap)(vcf@元[1:7])
##[1]“##文件格式=VCFv4.1”##[2]“##source=\”GATK单倍型呼叫者,与beagle4\“”##[3]“##FILTER=<ID=LowQual,Description=\”低质量“>”##[4]“##FORMAT=<ID=AD,Number=.,Type=Integer,Description=\”的等位基因深度##[5]“ref和alt等位基因的排列顺序”>“##[6]“##FORMAT=<ID=DP,Number=1,Type=Integer,Description=\”近似读数“##[7]“深度(过滤MQ=255或错误匹配的读取)\”>“##[8]“##FORMAT=<ID=GQ,Number=1,Type=Integer,Description=\”基因型质量“>”##[9]“##FORMAT=<ID=GT,Number=1,Type=String,Description=\”基因型“>”

第一行包含在文件。此行是必需的。第二行指定软件创建了VCF文件。这不是必需的,因此不是所有VCF文件包括它。当他们这样做时,文件就变成了自我记录。请注意此处不包括校准软件,因为它是在上游使用的VCF文件的创建(对齐器通常创建*.SAM或*.BAM格式文件)。因为文件只能包含有关创建它的软件,整个管道没有文档记录。一些VCF文件可能包含每个染色体的一行(或超级染色体或者取决于你的基因组),所以它们可能会变得相当长。这里,剩下的行包含INFO和FORMAT规范定义文件的fix和gt部分中使用的缩写。

元区域可能包含不易查看的长线。在vcfR中,我们创建了一个函数来帮助处理这些数据。

查询META(vcf)
##[1]“过滤器=ID=低质量”##[2]“FORMAT=ID=AD”##[3]“FORMAT=ID=DP”##[4]“FORMAT=ID=GQ”##[5]“FORMAT=ID=GT”##[6]“FORMAT=ID=PL”##[7]“GATKCommandLine=ID=HaplotypeCaller”##[8]“信息=ID=AC”##[9]“信息=ID=AF”##[10]“信息=ID=AN”##[11]“INFO=ID=BaseQRankSum”##[12]“信息=ID=ClippingRankSum”##[13]“信息=ID=DP”##[14]“INFO=ID=DS”##[15]“信息=ID=FS”##[16]“INFO=ID=单倍型得分”##[17]“INFO=ID=InbreedingCoeff”##[18]“信息=ID=MLEAC”##[19]“信息=ID=MLEAF”##[20]“INFO=ID=MQ”##[21]“INFO=ID=MQ0”##[22]“INFO=ID=MQRankSum”##[23]“信息=ID=QD”##[24]“INFO=ID=ReadPosRankSum”##[25]“INFO=ID=SOR”##[26]“1 contig=<从queryMETA中省略的ID”

当函数查询META()仅使用vcfR调用对象作为参数,它试图对元信息进行汇总。并不是所有的信息都会返回。例如,“contig”元素不返回。这是一个试图总结可能对于理解文件内容最有用。

查询META(vcf,元素= “DP”)
## [[1]]##[1]“FORMAT=ID=DP”##[2]“数字=1”##[3]“类型=整数”##[4]“Description=近似读取深度(过滤MQ=255或错误匹配的读取)”## ## [[2]]##[1]“INFO=ID=DP”##[2]“数字=1”##[3]“类型=整数”##[4]“描述=近似读取深度;某些读取可能已被过滤”

当包含元素参数时,只有返回该元素。在本例中,返回元素“DP”。我们看到这个首字母缩略词被定义为“FORMAT”和“INFO”首字母缩写。我们可以通过在中包含更多信息来缩小查询范围元素参数。

查询META(vcf,元素= '格式=<ID=DP')
## [[1]]##[1]“FORMAT=ID=DP”##[2]“数字=1”##[3]“类型=整数”##[4]“Description=近似读取深度(过滤MQ=255或错误匹配的读取)”

这里我们将“DP”的定义隔离为“FORMAT”元素。注意,函数查询META()包括参数美好的默认为TRUE,并尝试显示数据格式良好。然而,我们的查询是在“meta”区域中的实际信息。因此,有时适合设置nice=错误这样我们就可以看到原始的数据。在上例中,尖括号(“<”)从这个nice=真但对于区分“FORMAT”元素和“INFO”元素。

修复区域

修复区域包含以下每个变量的信息:有时对所有样本进行总结。的前八列固定区域,标题为CHROM、POS、ID、REF、ALT、QUAL、FILTER和信息。这是“固定”或相同的每个变量信息,所有样本。前两列表示染色体的变异和染色体内的位置。这里是ID该字段尚未使用,所以它包含缺失数据(NA)。参考和ALT列表示参考和替代等位基因状态。当存在多个替代等位基因状态时,它们被分隔开带逗号。QUAL栏试图总结每种产品的质量所有样本的变异。此处未使用FILTER字段,但可以包含关于变体是否通过某种形式的质量的信息评估。

(获取修复程序(vcf))
##CHROM-POS-ID-REF-ALT-QUAL滤波器##[1],]“Superconting_1.50”“2”NA“T”“A”“44.44”NA##[2],]“Superconting_1.50”“246”NA“C”“G”“144.21”NA##[3],]“Superconting_1.50”“549”NA“A”“C”“68.49”NA##[4,]“Superconting_1.50”“668”NA“G”“C”“108.07”NA##[5,]“Superconting_1.50”“765”NA“A”“C”“92.78”NA##[6,]“Superconting_1.50”“780”NA“G”“T”“58.38”NA

第八列标题为INFO,是一个以分号分隔的信息。它可能相当长且笨重。功能获取FIX()默认情况下将禁止显示此列。每个INFO列中的缩写应在meta部分中定义。我们可以通过查询元部分来验证这一点,就像在上面的“meta”部分。

gt地区

gt(基因型)区域包含关于以下每个变量的信息每个样品。每个变量和每个样本的值都是冒号分隔符。每个基因型的多种数据可以存储在这种方式。数据的格式由format列指定(第九列)。在这里,我们看到了GT、AD、DP、GQ的信息和PL。这些首字母缩写词的定义可以通过查询引用元区域,如前所示。并非所有变体必须具有相同的信息(例如,SNP和indels可以是处理方式不同),因此最好单独处理行。不同的变量调用者可能在此中包含不同的信息区域。

真空断路器@gt公司[1:6,1:4]
##格式BL2009P4_us23 DDR7602##[1],]“GT:AD:DP:GQ:PL”“0|0:62,0:62:99:01902835”“0| 0:12,0:12:39:39:0,39585”##[2],]“GT:AD:DP:GQ:PL”“1|0:5,5:10:99:111,0114”不适用##[3]“GT:AD:DP:GQ:PL”不适用##[4,]“GT:AD:DP:GQ:PL”“0|0:1,0:3:0,3,44”不适用##[5,]“GT:AD:DP:GQ:PL”“0|0:2:0:2:6:0,6,49”“0|1:1,0:0:3,34”##[6,]“GT:AD:DP:GQ:PL”“0|0:2,0:2:6:0,6,49”“0|0:1:0:1:3:0,3,34”##IN2009T1_us22## [1,] "0|0:37,0:37:99:0,114,1709"## [2,] "0|1:2,1:3:16:16,0,48"     ## [3,] "0|0:2,0:2:6:0,6,51"       ## [4,] "1|1:0,1:1:3:25,3,0"       ## [5,] "0|0:1,0:1:3:0,3,31"       ## [6,] "0|0:3,0:3:9:0,9,85"

真空断路器

使用R包vcfR,我们可以将VCF格式的文件读入内存使用函数读取.vcfR()。一旦进入内存,我们就可以使用这个头部()总结三个方面信息的方法VCF区域。

(vcf)
##[1]“*****类“vcfR”的对象*****”##[1]“*****元段*****”##[1]“##文件格式=VCFv4.1”##[1]“##source=\”GATK单倍型呼叫者,与beagle4\“”##[1]“##FILTER=<ID=LowQual,Description=\”低质量“>”##[1]“##FORMAT=<ID=AD,Number=.,Type=Integer,Description=\”[Truncated]的等位深度“##[1]“##FORMAT=<ID=DP,Number=1,Type=Integer,Description=\”近似读取[截断]“##[1]“##FORMAT=<ID=GQ,Number=1,Type=Integer,Description=\”基因型质量“>”##[1]“前6行。”## [1] ##[1]“*****固定段*****”##铬位置ID参考ALT质量过滤器##[1],]“Superconting_1.50”“2”NA“T”“A”“44.44”NA##[2],]“Superconting_1.50”“246”NA“C”“G”“144.21”NA##[3],]“Superconting_1.50”“549”NA“A”“C”“68.49”NA##[4,]“Superconting_1.50”“668”NA“G”“C”“108.07”NA##[5]“超导_1.50”“765”NA“A”“C”“92.78”NA##[6,]“Superconting_1.50”“780”NA“G”“T”“58.38”NA## [1] ##[1]“*****基因型截面*****”##格式BL2009P4_us23 DDR7602##[1],]“GT:AD:DP:GQ:PL”“0|0:62,0:62:99:01902835”“0| 0:12,0:12:39:39:0,39585”##[2]“GT:AD:DP:GQ:PL”“1|0:5,5:10:99:111,0114”NA##[3]“GT:AD:DP:GQ:PL”不适用##[4,]“GT:AD:DP:GQ:PL”“0|0:1,0:3:0,3,44”不适用##[5,]“GT:AD:DP:GQ:PL”“0|0:2:0:2:6:0,6,49”“0|1:1,0:0:3,34”##[6,]“GT:AD:DP:GQ:PL”“0|0:2:0:2:6:0,6,49”“0|1:1,0:0:3,34”##IN2009T1_us22磅5 NL07434##[1,]“0|0:37,0:37:99:01141709”“0|0-12,0:12:39:39:0,39585”不适用##[2]“0|1:2,1:3:16:16,0,48”不适用##[3,]“0|0:2,0:2:6:0,6,51”不适用##[4,]“1|1:0,1:1:3:25,3,0”NA“0|0:1,0:3:0:3,28”## [5,] "0|0:1,0:1:3:0,3,31"        "0|0:1,0:1:3:0,3,34"      "0|0:1,0:1:3:0,3,26"##[6,]“0|0:3,0:3:9:0,9,85”“0|0:1,0:3:0:3,34”不适用##[1]“仅前6列。”## [1] ##[1]“独特的GT格式:”##[1]“GT:AD:DP:GQ:PL”## [1]

我们现在有一个VCF文件的摘要,可以用来帮助了解其中包含的信息形式。这可以使用绘图功能进一步探索信息,并将其用于过滤VCF文件中的高质量变体。