了解 BigQuery 变异片段架构

Variant Transforms 流水线可直接转换 VCF 文件并将其加载到 BigQuery 中。

您还可以使用 BigQuery 并行与数百或数千台计算机一起对基因组变体运行临时交互式查询。

此外,您还可以浏览现有的已发布数据集,它们已从 Cloud Life Sciences 导出到 BigQuery。

术语

要理解导出格式和架构,您需要熟悉我们所用的术语。

基因组术语

样本
在单个标识符下收集和处理的 DNA。一个样本通常涉及单个生物,但也可以是异质样本(如脸颊拭子)。
参考基因序列名称
DNA 参考基因序列片段的名称,这通常为染色体,但也可以是参考基因组中的其他已命名区域。
变体
已被确认为与参考基因组不同的基因组区域。变体必须具有参考基因序列名称、起始位置、结束位置以及一个或多个参考碱基。
无变异片段

与参照基因组匹配的基因组区域。 这有时也称为“参考基因序列片段”。以前,基因组数据不包括带有变体的无变异片段。

如需详细了解无变异片段,请参阅 gVCF 文档

检出 (Call)

单个样本确定出现一次变体或无变异片段的情况。它表示针对特定变体确定了基因型,并且可能包括质量和定相等相关信息。

INFO 字段

可添加到变体和检出信息中的可选字段。例如,虽然所有检出都具有 genotype 字段,但并非所有数据集都具有“Genotype Quality”(GQ) 字段。因此,genotype 字段是 VariantCall 架构的固定部分,但没有 GQ 字段。GQ 字段和值可作为键值对导入到 VariantCall info 字段中。

如需详细了解基因组命名法,请参阅以下文档:

BigQuery 术语

简单字段
BigQuery 表格中的简单数据元素,例如数字和字符串。
嵌套字段
BigQuery 表格中的复杂数据元素。嵌套字段可以包含多个字段,包括简单字段和嵌套字段。
重复字段
BigQuery 表格中可包含多个值的字段,如列表。重复字段可以是简单字段,也可以是嵌套字段。

如需详细了解 BigQuery 的复杂数据类型,请参阅介绍标准 SQL 中的嵌套和重复字段的文档。

Variants 表结构

BigQuery 表格的名称会在运行 Variant Transforms 流水线时指定。按照管理,此表格的名称为 variants

Variants 表格记录结构

variants 表格的顶层记录可以是变体和无变异片段。每个 variants 表格记录将包含一个或多个检出。

下表说明了此结构,其中显示了两条变体记录:Variant1 和 Variant2。此数据集内有三个样本:Sample1、Sample2 和 Sample3。已为 Sample1 和 Sample2 检出了 Variant1,而为 Sample1 和 Sample3 检出了 Variant2。

Variant1 Sample1

Sample2
Variant2 Sample1

Sample3

Variants 表格字段结构

每个 variants 表格都包含一组固定字段和一组可变字段。概括来讲,该表格的结构如下所示:

     
固定变体字段 检出 变体 INFO 字段
固定检出字段          检出 INFO 字段

可变字段的名称分别是 Variant Resource INFO 字段键和 VariantCall INFO 字段键。

Variants 表的固定字段

固定的记录层面(变体)字段如下:

  • reference_name
  • start_position
  • end_position
  • reference_bases
  • alternate_bases
  • names
  • quality
  • filter

固定的检出层面 (VariantCall) 字段如下:

  • name
  • genotype
  • phaseset

示例

1000 Genomes 数据加载到 BigQuery 中时,同时还会导入 ALL.chrY.phase3_integrated_v1a.20130502.genotypes.vcf

此 VCF 文件包含一些变体级和检出级 INFO 字段,如 INFO 和 FORMAT 标头指令中所述:

##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
##FORMAT=<ID=GP,Number=G,Type=Float,Description="Genotype likelihoods">
##FORMAT=<ID=GQ,Number=1,Type=Integer,Description="Genotype Quality">
##FORMAT=<ID=FT,Number=1,Type=String,Description="Per-sample genotype filter">
##FORMAT=<ID=PL,Number=G,Type=Integer,Description="Normalized, Phred-scaled likelihoods for genotypes as defined in the VCF specification">
 [[trimmed]]
##INFO=<ID=AA,Number=1,Type=String,Description="Ancestral allele">
##INFO=<ID=AC,Number=A,Type=Integer,Description="Total number of alternate alleles in called genotypes">
##INFO=<ID=AF,Number=A,Type=Float,Description="Estimated allele frequency in the range (0,1]">
##INFO=<ID=NS,Number=1,Type=Integer,Description="Number of samples with data">
 [[trimmed]]

当此文件加载到 BigQuery 中时,标记为 INFO 的字段(如 ACAF)将作为 INFO 字段添加到 Variant 资源中。

当此文件加载到 BigQuery 中时,标记为 FORMAT 的字段(如 GPGQ 字段)将作为 INFO 字段添加到 VariantCall 资源中。FORMAT 字段 GT 不会作为 INFO 字段添加,取而代之的是,其值将转换为 genotype 字段。

在 BigQuery 界面中查看架构时,会显示以下固定字段:

架构      
reference_name STRING NULLABLE 参考基因序列名称。
start_position INTEGER NULLABLE 起始位置(从 0 开始)。对应于参考碱基字符串的第一个碱基。
end_position INTEGER NULLABLE 结束位置(从 0 开始)。对应于参考等位基因中最后一个碱基之后的第一个碱基。
reference_bases STRING NULLABLE 参考碱基。
alternate_bases RECORD REPEATED 每个交替碱基(如果有)对应一条记录。请参阅其他 alternate_bases 记录信息
alternate_bases.alt STRING NULLABLE 交替碱基。
names STRING REPEATED 变体名称(如 RefSNP ID)。
quality FLOAT NULLABLE 通过 Phred 评估出来的质量得分(-10log10 (错误检出概率))。值越高,则表示质量越好。
filter STRING REPEATED 失败的过滤器列表(如果有)或“PASS”(表示变体已通过所有过滤器)。
call RECORD REPEATED 每次检出对应一条记录。

会显示以下可变字段(INFO 字段):

架构      
call.name STRING NULLABLE 检出的名称。
call.genotype INTEGER REPEATED 检出的基因型。如果基因型未检出,则使用“-1”。
call.phaseset STRING NULLABLE 检出(如果有)的定相组。如果基因型已定相,但未指定定相组(FORMAT 中的“PS”即表示定向组)则使用“*”。

其他 alternate_bases 记录信息

alternate_bases 记录包含所有 Number=AINFO 字段。这样便无需映射每个字段与其对应的交替记录,从而简化了查询。要使用之前的 BigQuery 架构版本(其中,Number=A 字段与交替碱基无关),请在运行 Variant Transforms 工具时传递 --split_alternate_allele_info_fields 标志并将其设置为 False

自动拆分记录

如果一条记录包含大量检出,并且导致 BigQuery 行大于 100 MB,则 Variant Transforms 工具会自动将该记录拆分为多行,以使每行小于 100 MB。由于 BigQuery 存在每行最多 100 MB 的限制,因此这是必需的。

Null 值

如果浮点或整数类型的重复字段包含 null 值,则将无法创建 BigQuery 架构。这是因为 BigQuery 不允许重复字段中出现 null 值。整条记录可以为 null,但记录中的值必须为非 null。

例如:

  1. 假设 VCF 文件的 INFO 字段的值为 1,.,2。Variant Transforms 工具无法将 1,null,2 加载到 BigQuery 中。

  2. 必须使用一个数字替换 null 值。默认情况下,替换值为 -2^31-2147483648

要设置自定义数值,请在运行 Variant Transforms 工具时传递 --null_numeric_value_replacement 标志并附上一个值。

或者,您可以将 null 值转换为字符串,并使用 . 作为值。执行此操作时,必须将标头指定为 String