Comprensión del esquema de variantes de BigQuery

La canalización de Variant Transforms proporciona la capacidad de transformar y cargar archivos VCF directamente en BigQuery.

También puedes usar BigQuery para ejecutar consultas interactivas ad-hoc sobre variantes genómicas mediante cientos o miles de computadoras en paralelo.

Asimismo, puedes explorar conjuntos de datos publicados exportados de Cloud Life Sciences a BigQuery.

Nomenclatura

Para comprender los formatos y esquemas de exportación, te recomendamos familiarizarte con la terminología que utilizamos.

Nomenclatura genómica

Muestra
ADN recopilado y procesado con un identificador único. Normalmente, una muestra involucra a un solo organismo individual, pero también puede ser una muestra heterogénea, como una muestra bucal.
Nombre de referencia
El nombre de un segmento de referencia de ADN, por lo general, es un cromosoma, pero puede tratarse de otras regiones con nombre de un genoma de referencia.
Variante
Una región del genoma que se ha identificado como diferente del genoma de referencia. Una variante debe tener un nombre de referencia, una posición de inicio, una posición final y una o más bases de referencia.
Segmento coincidente

Una región del genoma que coincide con el genoma de referencia. A veces, se denomina "segmento de referencia". Tradicionalmente, los datos genómicos no incluyen segmentos coincidentes con variantes.

Para obtener más información sobre los segmentos coincidentes, consulta la documentación de gVCF.

Llamada

Un caso identificado de una variante o segmento coincidente para una muestra individual. Representa la determinación del genotipo con respecto a una variante específica y puede incluir información asociada, como la calidad y las fases.

Campos INFO

Campos opcionales que se agregan a la información de variantes y llamadas. Por ejemplo, aunque todas las llamadas tengan un campo genotype, no todos los conjuntos de datos tendrán un campo "Genotype Quality" (Calidad del genotipo, GQ). Por lo tanto, el campo genotype es una parte fija del esquema VariantCall, pero no hay campo GQ. El campo y el valor de GQ se pueden importar como pares clave-valor en el campo info de VariantCall.

Para saber más sobre la nomenclatura genómica, consulta los siguientes documentos:

Nomenclatura de BigQuery

Campos simples
Elementos de datos simples en una tabla de BigQuery, como números y strings.
Campos anidados
Elementos de datos complejos en una tabla de BigQuery. Un campo anidado puede contener varios campos, tanto simples como anidados.
Campos repetidos
Campos en una tabla de BigQuery que puede tener múltiples valores, como una lista. Los campos repetidos pueden ser simples y anidados.

Para obtener más información sobre los tipos de datos complejos de BigQuery, consulta la documentación en campos anidados y repetidos en SQL estándar.

Estructura de tabla de variantes

El nombre de la tabla de BigQuery se especifica cuando se ejecuta la canalización de Variant Transforms. Por convención, el nombre de esta tabla es variants.

Estructura de registro de la tabla de variantes

Los registros de nivel superior de la tabla variants pueden ser variantes y segmentos coincidentes. Cada registro de la tabla variants contendrá una o más llamadas.

La siguiente tabla ilustra esta estructura y muestra dos registros de variantes, Variant1 y Variant2. En este conjunto de datos, hay tres muestras: Sample1, Sample2 y Sample3. Se llamó a Variant1 para Sample1 y Sample2, en tanto que se llamó a Variant2 para Sample1 y Sample3.

Variant1 Sample1

Sample2
Variant2 Sample1

Sample3

Estructura del campo de la tabla de variantes

Cada tabla variants incluye un conjunto de campos fijos y un conjunto de campos variables. La estructura de la tabla en un nivel alto se ve de la siguiente forma:

     
Campos de variantes fijas Llamada Campos INFO de variantes
Campos de llamadas fijas         Campos INFO de llamadas

Los nombres de los campos de variables son las claves de campo Variant Resource INFO y las claves de campo VariantCall INFO, respectivamente.

Campos fijos de la tabla de variantes

Los campos de nivel de registro fijos (Variant) son:

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

Los campos de nivel de llamada fijos (VariantCall) son los siguientes:

  • name
  • genotype
  • phaseset

Ejemplo

Cuando los datos de 1000 Genomes se cargaron en BigQuery, se incluyó la importación de ALL.chrY.phase3_integrated_v1a.20130502.genotypes.vcf.

Este archivo VCF incluye varios campos INFO a nivel de variante y de llamada, como se describe en las directivas de encabezados INFO y 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]]

Cuando este archivo se cargó en BigQuery, los campos de INFO, como AC y AF, se agregaron como campos INFO a los recursos Variant.

Cuando este archivo se cargó en BigQuery, los campos de FORMAT, como los campos GP y GQ, se agregaron como campos INFO a los recursos VariantCall. El campo de FORMAT GT no se agregó como un campo INFO, sino que, en su lugar, el valor se convirtió en el campo genotype.

La vista del esquema en la IU de BigQuery muestra los siguientes campos fijos:

Esquema      
reference_name STRING Acepta valor NULL Nombre de referencia
start_position INTEGER Acepta valor NULL Posición de inicio (basada en 0). Corresponde a la primera base de la string de bases de referencia.
end_position INTEGER Acepta valor NULL Posición final (basada en 0). Corresponde a la primera base después de la última base del alelo de referencia.
reference_bases STRING Acepta valor NULL Bases de referencia
alternate_bases RECORD REPETIDO Un registro para cada base alternativa (si existe). Consulta Información adicional del registro alternate_bases.
alternate_bases.alt STRING Acepta valor NULL Base alternativa
names STRING REPETIDO Nombres de variantes (por ejemplo, ID de RefSNP)
quality FLOAT Acepta valor NULL Nivel de calidad Phred (-10log10 prob[llamada incorrecta]). Los valores más altos implican una mejor calidad.
filter STRING REPETIDO Lista de filtros con error (si los hay) o "PASS", que indica que la variante pasó todos los filtros.
call RECORD REPETIDO Un registro para cada llamada

y, luego, los campos variables (los campos INFO):

Esquema      
call.name STRING Acepta valor NULL Nombre de la llamada
call.genotype INTEGER REPETIDO El genotipo de la llamada. "-1" se usa en casos en los que no se llama al genotipo.
call.phaseset STRING Acepta valor NULL Conjunto de fases de la llamada (si hay alguno). "*" se utiliza en los casos en que el genotipo está dividido en fases, pero no se especificó ningún conjunto de fases ("PS" en FORMAT).

Información adicional del registro alternate_bases

El registro alternate_bases contiene cualquier campo INFO con Number=A. Esto simplifica las consultas porque quita la necesidad de asignar a cada campo su registro alternativo correspondiente. Para usar la versión del esquema de BigQuery anterior, en que los campos Number=A son independientes de las bases alternativas, pasa la marca --split_alternate_allele_info_fields y configúrala como False cuando se ejecute la herramienta Variant Transforms.

Divide los registros automáticamente

Si un registro tiene una gran cantidad de llamadas y esto produce una fila de BigQuery superior a 100 MB, la herramienta Variant Transforms dividirá automáticamente el registro en varias filas para que cada fila tenga menos de 100 MB. Esto es necesario debido al límite de 100 MB por fila de BigQuery.

Valores nulos

Si un campo repetido flotante o entero contiene un valor nulo, no se puede crear el esquema de BigQuery. Esto se debe a que BigQuery no permite valores nulos en campos repetidos. El registro completo puede ser nulo, pero los valores dentro del registro no deben ser nulos.

Por ejemplo:

  1. Supongamos que el campo INFO de un archivo VCF tiene los valores 1,.,2. La herramienta Variant Transforms no puede cargar 1,null,2 en BigQuery.

  2. En su lugar, se debe usar un reemplazo numérico para el valor nulo. Según la configuración predeterminada, el valor de reemplazo es -2^31 o -2147483648.

Para establecer un valor numérico personalizado, pasa la marca --null_numeric_value_replacement con un valor cuando ejecutes la herramienta Variant Transforms.

Como alternativa, puedes convertir los valores nulos en una string y usar . como el valor. Cuando lo hagas, el encabezado debe especificarse como String.