O pipeline de transformações de variantes (em inglês) oferece a possibilidade de transformar e carregar arquivos VCF diretamente ao BigQuery.
Também é possível usar o BigQuery para executar consultas interativas ad-hoc sobre variantes genômicas usando centenas ou milhares de computadores em paralelo.
Também é possível procurar por conjuntos de dados publicados atuais já exportados do Cloud Life Sciences para o BigQuery.
Nomenclatura
Para entender os formatos e esquemas de exportação, convém se familiarizar com a terminologia que usamos.
Nomenclatura do Genomics
- Amostra
- DNA coletado e processado com um único identificador. Uma amostra geralmente envolve um único organismo individual, mas também pode ser uma amostra heterogênea, como um cotonete.
- Nome de referência
- O nome de um segmento de referência de DNA, que normalmente é um cromossomo, mas pode ser outras regiões nomeadas de um genoma de referência (em inglês).
- Variante
- Uma região do genoma identificada como diferente do genoma de referência (em inglês). Uma variante precisa ter um nome de referência, uma posição inicial, uma posição final e uma ou mais bases de referência.
- Segmento não variante
Uma região do genoma que corresponde ao genoma de referência. Às vezes, é chamado de "segmento de referência". Tradicionalmente, os dados genômicos não incluem segmentos não variantes com variantes.
Para mais informações sobre segmentos não variantes, consulte a documentação do gVCF (em inglês).
- Chamada
Uma ocorrência identificada de um segmento variante ou não variante para uma amostra individual. Representa a determinação do genótipo em relação a uma variante em particular e pode incluir informações associadas, como qualidade e faseamento.
- Campos INFO
Campos opcionais adicionados às informações de Variante e Chamada. Por exemplo, enquanto todas as chamadas têm um campo
genotype
, nem todos os conjuntos de dados terão um campo "Qualidade do genótipo" (GQ
). Portanto, o campogenotype
é uma parte fixa do esquema VariantCall, mas não há campoGQ
. O valor e o campoGQ
podem ser importados como pares de chave-valor para o campoinfo
do VariantCall.
Para mais informações sobre nomenclatura genômica, consulte os seguintes documentos em inglês:
Nomenclatura do BigQuery
- Campos simples
- Elementos de dados simples em uma tabela do BigQuery, como números e strings.
- Campos aninhados
- Elementos de dados complexos em uma tabela do BigQuery. Um campo aninhado pode conter vários campos, simples e aninhados.
- Campos repetidos
- Campos em uma tabela do BigQuery que podem ter vários valores, como uma lista. Os campos repetidos podem ser simples e aninhados.
Para mais informações sobre os tipos de dados complexos do BigQuery, consulte a documentação sobre campos aninhados e repetidos no SQL padrão .
Estrutura da tabela de variantes
O nome da tabela do BigQuery é especificado ao executar o pipeline de transformações variantes. Por convenção, o nome desta tabela é variants
.
Estrutura de registros da tabela de variantes
Os registros de nível superior da tabela variants
podem ser segmentos variantes e não variantes. Cada registro da tabela variants
conterá uma ou mais chamadas.
A tabela abaixo ilustra essa estrutura, mostrando dois registros variantes, Variant1 e Variant2. Neste conjunto de dados, há três amostras, Sample1, Sample2 e Sample3. Variant1 foi chamada para Sample1 e Sample2, enquanto Variant2 foi chamada para Sample1 e Sample3.
Variant1 | Sample1 Sample2 |
Variant2 | Sample1 Sample3 |
... | ... |
Estrutura do campo da tabela variante
Cada tabela variants
inclui um conjunto de campos fixo e outro variável. A estrutura da tabela em geral tem esta aparência:
Campos de variante fixos | Chamada | Campos INFO da variante |
… | Campos de chamada fixos Campos INFO da chamada | … |
Os nomes dos campos variáveis são as chaves de campo de Variant Resource INFO e as chaves de campo VariantCall INFO, respectivamente.
Campos fixos da tabela variante
Os campos fixos de nível de registro (Variant) são:
- reference_name
- start_position
- end_position
- reference_bases
- alternate_bases
- names
- quality
- filter
Os campos fixos de nível de chamada (VariantCall) são:
- name
- genotype
- phaseset
Exemplo
Quando os dados do 1000 Genomes foram carregados no BigQuery, foi incluída a importação de ALL.chrY.phase3_integrated_v1a.20130502.genotypes.vcf (em inglês).
Este arquivo VCF inclui vários campos INFO no nível da variante e da chamada, conforme descrito nas diretivas de cabeçalho INFO e 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]]
Quando esse arquivo foi carregado no BigQuery, os campos marcados como INFO, como AC
e AF
, foram adicionados como campos INFO aos recursos de Variant.
Quando esse arquivo foi carregado no BigQuery, os campos marcados como FORMAT, como os campos GP
e GQ
, foram adicionados como campos INFO aos recursos de VariantCall. O campo FORMAT GT
não foi adicionado como um campo INFO, mas o valor foi convertido no campo genotype
.
A visualização do esquema(em inglês) na IU do BigQuery mostra os seguintes campos fixos:
Schema | |||
---|---|---|---|
reference_name | STRING | NULLABLE | Nome de referência. |
start_position | INTEGER | NULLABLE | Posição inicial (com base em 0). Corresponde à primeira base da string de bases de referência. |
end_position | INTEGER | NULLABLE | Posição final (com base em 0). Corresponde à primeira base após a última no alelo de referência. |
reference_bases | STRING | NULLABLE | Bases de referência. |
alternate_bases | RECORD | REPETIDA | Um registro para cada base alternativa (se houver). Consulte Informações adicionais do registro alternate_bases . |
alternate_bases.alt | STRING | NULLABLE | Base alternativa. |
names | STRING | REPEATED | Nomes da variante (por exemplo, RefSNP ID). |
quality | FLOAT | NULLABLE | Nível de qualidade na escala Phred (-10log10 prob(call is wrong)). Valores mais altos significam maior qualidade. |
filter | STRING | REPEATED | Lista de filtros com falha, se houver, ou "PASS", indicando que a variante foi aprovada em todos os filtros. |
call | RECORD | REPEATED | Um registro para cada chamada. |
e os campos de variável (os campos INFO):
Schema | |||
---|---|---|---|
call.name | STRING | NULLABLE | Nome da chamada. |
call.genotype | INTEGER | REPEATED | Genótipo da chamada. "-1" é usado nos casos em que o genótipo não é chamado. |
call.phaseset | STRING | NULLABLE | Conjunto de fases da chamada (se houver). "*" é usado nos casos em que o genótipo é dividido em fases, mas nenhuma fase ("PS" em FORMAT) foi especificada. |
Informações adicionais do registro alternate_bases
O registro alternate_bases
contém qualquer campo INFO
com Number=A
. Isso simplifica a consulta removendo a necessidade de mapear cada campo com seu registro alternativo correspondente. Para usar a versão anterior do esquema do BigQuery, em que campos Number=A
são independentes de bases alternativas, transmita a sinalização --split_alternate_allele_info_fields
e a defina como False
ao executar a ferramenta Variant Transforms.
Dividir registros automaticamente
Se um registro tiver um grande número de chamadas e resultar em uma linha do BigQuery maior que 100 MB, a ferramenta Variant Transforms dividirá automaticamente o registro em várias linhas para que cada uma tenha menos de 100 MB. Isso é necessário devido ao limite de 100 MB por linha do BigQuery.
Valores nulos
Se um campo flutuante ou inteiro repetido tiver um valor nulo, o esquema do BigQuery não poderá ser criado. Isso ocorre porque o BigQuery não aceita valores nulos em campos repetidos. O registro inteiro pode ser nulo, mas os valores dentro do registro não podem.
Exemplo:
Suponha que o campo INFO de um arquivo VCF tenha os valores
1,.,2
. A ferramenta Variant Transforms não pode carregar1,null,2
no BigQuery.Em vez disso, uma substituição numérica precisa ser usada para o valor nulo. Por padrão, o valor de substituição é
-2^31
ou-2147483648
.
Para definir um valor numérico personalizado, transmita a sinalização --null_numeric_value_replacement
com um valor ao executar a ferramenta Variant Transforms.
Como alternativa, é possível converter valores nulos em uma string e usar .
como o valor. Ao fazer isso, o cabeçalho precisa ser especificado como String
.