Esta página descreve os seguintes processos:
- Analisar campos de anotação em arquivos VCF de entrada.
- Anote arquivos VCF enquanto eles estão sendo importados, usando ferramentas de anotação de código aberto e bancos de dados como o Variant Effect Predictor (VEP) (em inglês).
Como analisar campos de anotação
A ferramenta Variant Transforms oferece suporte a um formato de campo de anotação especificado em Anotações variantes no formato VCF. O VEP usa esse mesmo formato. O exemplo a seguir mostra um cabeçalho VCF de um arquivo que foi anotado pelo VEP:
##INFO=<ID=CSQ,Number=.,Type=String,Description="Consequence annotations from Ensembl VEP. Format: Allele|Consequence|IMPACT|SYMBOL|Gene|Feature_type|Feature|BIOTYPE|EXON|INTRON|ALLELE_NUM|...>
As anotações correspondentes para um registro de variante de amostra em que REF=AAC
e ALT=TAC,A
têm esta aparência:
CSQ=-|downstream_gene_variant|MODIFIER|WASH7P|ENSG00000227232|Transcript|ENST00000423562|unprocessed_pseudogene|||2,...,T|upstream_gene_variant|MODIFIER|DDX11L1|ENSG00000223972|Transcript|ENST00000518655|transcribed_unprocessed_pseudogene|||1
Cada registro de variante recebe várias listas de anotação separadas por vírgulas.
O primeiro campo em cada conjunto corresponde a um alelo alternativo (ALT
). O exemplo acima usa apenas um subconjunto para cada ALT
. O arquivo real tem mais campos e cada alelo alternativo pode ser repetido várias vezes com anotações diferentes.
É possível passar --annotation_fields
ao executar a ferramenta Variant Transforms, que divide listas de anotação e move-as para seus respectivos registros alternate_bases
correspondentes. Por exemplo, conforme se vê abaixo, há um campo de registro repetido, CSQ
, em cada alternate_bases
:
Nome | Tipo | Modo | Descrição |
---|---|---|---|
alternate_bases.CSQ | RECORD | REPEATED | Lista de anotações CSQ para essa alternativa. |
alternate_bases.CSQ.allele | STRING | NULLABLE | A parte ALT do campo de anotação. |
alternate_bases.CSQ.Consequence | STRING | Nullable | None |
alternate_bases.CSQ.IMPACT | STRING | Nullable | None |
alternate_bases.CSQ.SYMBOL | STRING | Nullable | None |
alternate_bases.CSQ.Gene | STRING | Nullable | None |
alternate_bases.CSQ.Feature_type | STRING | Nullable | None |
alternate_bases.CSQ.Feature | STRING | Nullable | None |
alternate_bases.CSQ.BIOTYPE | STRING | Nullable | None |
alternate_bases.CSQ.EXON | STRING | Nullable | None |
alternate_bases.CSQ.INTRON | STRING | Nullable | None |
Correspondência de alelo alternativo
No exemplo acima, os alelos alternativos listados na coluna CSQ
são diferentes das strings ALT
do registro de variante. Por exemplo, a variante AAC->C
é representada por -
, o que significa uma exclusão. Isso ocorre porque o VEP é executado no conjunto de dados com a sinalização --minimal
. A ferramenta Variant Transforms oferece suporte a campos ALT
correspondentes neste modo minimal
.
Há suporte para os seguintes modos de correspondência ALT
:
Por padrão, se nenhuma sinalização
ALT
correspondente for configurada, será usada a especificação das Anotações da Variant no formato VCF.Como mostrado no exemplo acima, ao usar a sinalização
--use_allele_num
(em inglês), a ferramenta Variant Transforms procura o valor do campo de anotaçõesALLELE_NUM
. Este é um recurso do VEP.É possível simular
--minimal
com a ferramenta Variant Transforms usando a sinalização--minimal_vep_alt_matching
(em inglês). No entanto, isso pode resultar em uma correspondência ambígua. Essas correspondências são contadas e informadas no Console do Dataflow. Elas também são adicionadas em um novo campo na tabela criada.Para melhores resultados, use
--minimal
em vez de--minimal_vep_alt_matching
.
Como fazer anotações automaticamente de arquivos VCF usando o VEP
Normalmente, se você quer analisar os campos de anotação e dividi-los em vários campos, primeiro é preciso fazer uma pré-anotação nos arquivos VCF. No entanto, não é preciso pré-anotar os arquivos VCF ao usar a ferramenta Variant Transforms.
Com essa ferramenta, é possível anotar automaticamente arquivos VCF conforme eles são carregados no BigQuery. Para fazer isso, execute o VEP com a ferramenta Variant Transforms, que requer a criação e execução de instâncias de máquina virtual do Compute Engine com imagens pré-configuradas do Docker.
Como executar o VEP com a ferramenta Variant Transforms
Para executar a ferramenta Variant Transforms com o VEP e anotar automaticamente os arquivos VCF conforme eles são carregados no BigQuery, execute a ferramenta com no mínimo as seguintes sinalizações:
--run_annotation_pipeline
--max_num_workers MAX_NUM_WORKERS
ou--num_workers NUM_WORKERS
--annotation_output_dir gs://CLOUD_STORAGE_BUCKET
O bucket escolhido para a variável CLOUD_STORAGE_BUCKET precisa ser de propriedade do projeto.
Veja a seguir uma lista completa das sinalizações que podem ser transmitidas para a ferramenta Variant Transforms ao executar o VEP:
Descrição | padrão | Descrição |
---|---|---|
--run_annotation_pipeline |
Falso | Ativa a anotação automática. |
--max_num_workers ou --num_workers |
Determinado automaticamente | O número máximo de workers no job que o Cloud Dataflow escalonará automaticamente ou o número de workers inicialmente atribuídos ao job, respectivamente. |
--annotation_output_dir |
Nenhum | Um caminho do Cloud Storage para os arquivos de saída do VEP. A hierarquia dos arquivos de entrada é replicada nesse local, mas os novos arquivos são anexados com _vep_output.vcf . Se o diretório já existir, a ferramenta Variant Transforms falhará. |
--vep_image_uri |
gcr.io/gcp-variant-annotation/vep_91 |
A imagem do VEP do Docker do Cloud Genomics. O Google mantém a imagem padrão (VEP versão 91). |
--vep_cache_path |
gs://gcp-variant-annotation-vep-cache/vep_cache_homo_sapiens_GRCh38_91.tar.gz (Recomendado para um genoma humano alinhado com uma sequência de referência GRCh38) |
Um caminho do Cloud Storage para a versão compactada do cache do VEP. É possível criar esse arquivo usando o script --build_vep_cache.sh . |
--vep_info_field |
CSQ_VT |
O nome de um novo campo INFO que contém as anotações novas. |
--vep_num_fork |
2 | O número de processos locais usados ao executar o VEP em um único arquivo. Para mais informações, consulte a sinalização --fork [num_forks] na documentação do VEP. |
--shard_variants |
True | Determina se os arquivos de entrada são fragmentados em arquivos VCF menores e temporários antes de anotá-los usando o VEP. Se os arquivos de entrada forem pequenos (por exemplo, se cada arquivo VCF tiver menos de 50.000 variantes), configurar essa sinalização como True pode desperdiçar recursos de computação. |
--number_of_variants_per_shard |
2.000 | Se shard_variants for True , o número máximo de variantes gravadas em cada fragmento. Se você tiver um conjunto de dados com muitas amostras, convém usar um valor menor. O pipeline pode levar mais tempo para ser concluído quando é fornecido um valor menor. Na maioria dos casos, recomenda-se o valor padrão. |
Solução de problemas
Se você executar o VEP com a ferramenta Variant Transforms e ela falhar, será criado um diretório logs
que fornece registros das máquinas virtuais em que o processo foi executado. O diretório logs
é especificado no caminho usado para a sinalização --annotation_output_dir
. Para determinar a causa do problema, é possível inspecionar esses arquivos de registro, além dos registros padrão da ferramenta Variant Transforms.
A sinalização --check_ref
(link em inglês) do VEP é ativada automaticamente quando você executa o VEP com a ferramenta Variant Transforms.
Como resultado, os arquivos no diretório logs
conterão uma lista de variantes que não correspondem à referência. Se você está usando o cache correto do VEP, nenhuma incompatibilidade é exibida, uma vez que elas são descartadas automaticamente e não aparecem na tabela de saída do BigQuery.
Consultas de amostra
Como extrair variantes de alto impacto
A amostra a seguir mostra como extrair variantes de alto impacto no gene HBB, que codifica a cadeia beta da hemoglobina:
#standardSQL
SELECT reference_name, start_position, reference_bases, ALT.alt, CSQ.*
FROM vcf_imports_external.gnomad_genomes_chr_hg19 AS T, T.alternate_bases AS ALT, ALT.CSQ AS CSQ
WHERE CSQ.SYMBOL = "HBB" AND CSQ.IMPACT = "HIGH"
ORDER BY start_position
A execução da consulta retorna:
Row | reference_name | start_position | reference_bases | alt | allele | Consequence | IMPACT | SYMBOL | Gene | Feature_type | Feature | BIOTYPE | EXON | INTRON |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 11 | 5246947 | G | GC | C | frameshift_variant | HIGH | HBB | ENSG00000244734 | Transcript | ENST00000335295 | protein_coding | 3/3 | |
2 | 11 | 5246957 | T | C | C | splice_acceptor_variant | HIGH | HBB | ENSG00000244734 | Transcript | ENST00000335295 | protein_coding | 2/2 | |
3 | 11 | 5246957 | T | C | C | splice_acceptor_variant&non_coding_transcript_variant | HIGH | HBB | ENSG00000244734 | Transcript | ENST00000475226 | retained_intron | 1/1 | |
4 | 11 | 5247805 | C | T | T | splice_donor_variant | HIGH | HBB | ENSG00000244734 | Transcript | ENST00000335295 | protein_coding | 2/2 | |
5 | 11 | 5247805 | C | T | T | splice_donor_variant&non_coding_transcript_variant | HIGH | HBB | ENSG00000244734 | Transcript | ENST00000475226 | retained_intron | 1/1 | |
6 | 11 | 5247991 | CAAAG | C | - | frameshift_variant | HIGH | HBB | ENSG00000244734 | Transcript | ENST00000335295 | protein_coding | 2/3 | |
7 | 11 | 5247991 | CAAAG | C | - | frameshift_variant | HIGH | HBB | ENSG00000244734 | Transcript | ENST00000380315 | protein_coding | 4/4 | |
8 | 11 | 5248003 | G | A | A | stop_gained | HIGH | HBB | ENSG00000244734 | Transcript | ENST00000335295 | protein_coding | 2/3 | |
9 | 11 | 5248003 | G | A | A | stop_gained | HIGH | HBB | ENSG00000244734 | Transcript | ENST00000380315 | protein_coding | 4/4 | |
10 | 11 | 5248199 | T | A | A | stop_gained | HIGH | HBB | ENSG00000244734 | Transcript | ENST00000335295 | protein_coding | 1/3 | |
11 | 11 | 5248199 | T | A | A | stop_gained | HIGH | HBB | ENSG00000244734 | Transcript | ENST00000380315 | protein_coding | 3/4 |
O conjunto de dados gnomAD não tem chamadas nem amostras, mas é possível estender essa consulta para selecionar amostras com variantes de alto impacto.
Como mesclar dados com bancos de dados públicos do BigQuery
O exemplo a seguir mostra como mesclar dados com outros bancos de dados, como os de caminho, que estão disponíveis no BigQuery. Alguns dos bancos de dados disponíveis por meio do ISB-CGC (em inglês) são:
- Reactome (tabela do BigQuery) [links em inglês]
- WikiPathways (tabela do BigQuery) [links em inglês]
O exemplo a seguir mostra como extrair variantes de alto impacto na via de reparo de quebra de fita dupla, conforme definido pelo processo biológico GO (Gene Ontology) (GO:0006302) (em inglês):
#standardSQL
SELECT
reference_name, start_position, reference_bases, ALT.alt,
CSQ.Consequence, CSQ.Impact, CSQ.SYMBOL
FROM
`vcf_imports_external.gnomad_genomes_chr_hg19` AS T,
T.alternate_bases AS ALT, ALT.CSQ AS CSQ
WHERE
# Note: Matching based on symbol is "best effort" as the names may not be
# standardized across sources.
CSQ.SYMBOL IN (SELECT DB_Object_Symbol
FROM `isb-cgc.genome_reference.GO_Annotations`
WHERE GO_ID = 'GO:0006302')
AND CSQ.IMPACT = "HIGH"
ORDER BY
start_position
A execução da consulta retorna o seguinte:
Row | reference_name | start_position | reference_bases | alt | Consequence | IMPACT | SYMBOL |
---|---|---|---|---|---|---|---|
1 | 5 | 917449 | G | T | splice_acceptor_variant&non_coding_transcript_variant | HIGH | TRIP13 |
2 | 12 | 1022568 | A | C | stop_gained | HIGH | RAD52 |
3 | 12 | 1022568 | A | C | stop_gained | HIGH | RAD52 |
4 | 12 | 1022568 | A | C | stop_gained | HIGH | RAD52 |
5 | 12 | 1023125 | G | A | stop_gained | HIGH | RAD52 |
6 | 12 | 1023125 | G | A | stop_gained | HIGH | RAD52 |
7 | 12 | 1023125 | G | A | stop_gained | HIGH | RAD52 |
8 | 12 | 1023167 | G | A | stop_gained | HIGH | RAD52 |
9 | 12 | 1023167 | G | A | stop_gained | HIGH | RAD52 |
10 | 12 | 1023167 | G | A | stop_gained | HIGH | RAD52 |
11 | 12 | 1023217 | G | T | stop_gained | HIGH | RAD52 |
12 | 12 | 1023217 | G | T | stop_gained | HIGH | RAD52 |
13 | 12 | 1023217 | G | T | stop_gained | HIGH | RAD52 |
14 | 12 | 1025654 | TGA | T | frameshift_variant | HIGH | RAD52 |
15 | 12 | 1025699 | T | G | splice_acceptor_variant&non_coding_transcript_variant | HIGH | RAD52 |
16 | 12 | 1036004 | GC | G | frameshift_variant | HIGH | RAD52 |
17 | 12 | 1038977 | C | CT | frameshift_variant | HIGH | RAD52 |