本页面介绍了使用 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
在下表中,您可以看到这些结果:
- 已针对
Sample1
和Sample2
检出Variant1
。 - 已针对
Sample1
和Sample3
检出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
字段,如以下 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
的字段(如AC
和AF
)已作为INFO
字段添加到变异资源中。 - 标记为
FORMAT
的字段(如GP
和GQ
字段)已作为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=A
的 INFO
字段。该记录无需映射每个字段与其对应的交替记录,从而简化了查询。
如需使用之前的 BigQuery 架构版本(其中 Number=A
字段与交替碱基无关),请完成以下步骤:
- 运行 Variant Transforms 工具,并传递
--split_alternate_allele_info_fields
标志。 - 将
--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。
例如:
- 假设 VCF 文件的
INFO
字段的值为1,.,2
。Variant Transforms 工具无法将1,null,2
加载到 BigQuery 中。 - 必须使用一个数字替换 null 值。默认情况下,替换值为
-2^31
或-2147483648
。
要设置自定义数值,请在运行 Variant Transforms 工具时传递 --null_numeric_value_replacement
标志并附上一个值。
或者,您可以将 null 值转换为字符串,并使用 .
作为值。执行此操作时,必须将标头指定为 String
。