了解 BigQuery 变异架构

本页面介绍了使用 Variant Transforms 工具时在 BigQuery 中生成的架构的结构。如果您使用 Variant Transforms 工具转换 VCF 文件并将其直接加载到 BigQuery 中,并且希望了解导出表格的结构,请参阅本页面。

术语

如需了解导出格式和架构,您需要熟悉以下术语。

基因组术语

样本
在单个标识符下收集和处理的 DNA。一个样本通常涉及单个生物,但也可以是异质样本(如脸颊拭子)。
参考名称
DNA 参考片段的名称。参考名称通常是染色体,但也可以是参考基因组中的其他已命名区域。
变体

已被确认为与参考基因组不同的基因组区域。变体必须具有以下特性:

  • 参考名称
  • 开始位置
  • 结束位置
  • 一个或多个参考碱基
无变异片段

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

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

检出

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

INFO 字段

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

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

BigQuery 术语

您需要熟悉以下 BigQuery 术语:

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

如需详细了解 BigQuery 的复杂数据类型,请参阅以下内容:

Variants 表结构

运行 Variant Transforms 工具时,您可以指定 BigQuery 表格的名称。通常,表格的名称为 variants

Variants 表记录结构

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

下表说明了 Variants 表记录结构。下表显示了以下变异记录:

  • Variant1
  • Variant2

BigQuery 数据集包含以下示例:

  • Sample1
  • Sample2
  • Sample3

在下表中,您可以看到这些结果:

  • 已针对 Sample1Sample2 检出 Variant1
  • 已针对 Sample1Sample3 检出 Variant2
   
Variant1 Sample1

Sample2
Variant2 Sample1

Sample3

Variants 表字段结构

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

     
固定变体字段 检出 变体 INFO 字段
固定检出字段          检出 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 字段,如以下 INFOFORMAT 标头指令中所述:

##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 字段添加到变异资源中。
  • 标记为 FORMAT 的字段(如 GPGQ 字段)已作为 INFO 字段添加到 VariantCall 资源中。
  • FORMAT 字段 GT 不会作为 INFO 字段添加。值会转换为 genotype 字段。

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

字段名称 类型 Mode 说明
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 字段):

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

其他 alternate_bases 记录信息

alternate_bases 记录包含所有 Number=AINFO 字段。该记录无需映射每个字段与其对应的交替记录,从而简化了查询。

如需使用之前的 BigQuery 架构版本(其中 Number=A 字段与交替碱基无关),请完成以下步骤:

  1. 运行 Variant Transforms 工具,并传递 --split_alternate_allele_info_fields 标志。
  2. --split_alternate_allele_info_fields 标志的值设置为 False

自动拆分记录

在以下情况下,Variant Transforms 工具会自动将一条记录拆分为多行,其中每一行小于 100 MB:

  • 一条记录包含大量检出。
  • 大量检出会导致 BigQuery 行大于 100 MB。

由于 BigQuery 每行的限制为 100 MB,因此必须使用自动记录拆分功能。

Null 值

如果浮点或整数类型的重复字段包含 null 值,则 Variant Transforms 工具无法创建 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