Volver a la lista

DeepVariant: ¿Por qué DeepVariant convierte las imágenes de acumulación (pileup) para llamar variantes?

DeepVariant redefine el llamado de variantes como un problema de clasificación de imágenes. Se organiza qué es una imagen pileup, cómo aprende la CNN las clases de variantes, en qué situaciones supera a GATK y en cuáles queda en desventaja.

Intermedio
|
20min
|
Verificado (2026-07-22)
deep learning variant callingDeepVariantCNN pileup
Progreso0/120 (0%)

¿Por qué el aprendizaje profundo genera variantes?

Las mejores prácticas de GATK4 de ediciones anteriores son un pipeline refinado sobre décadas de estadística probabilística. Sin embargo, en 2018, Google Health presentó un enfoque completamente diferente: DeepVariant, una herramienta que redefine la llamada de variantes como un problema de clasificación de imágenes.

La idea central en una frase.

Renderizar el pileup como imagen y preguntarle a la CNN "¿qué variante hay en esta imagen?".

Analicemos por qué funciona bien, en qué situaciones es ventajosa y por qué coexiste con GATK.

Imagen del pileup — convertir lecturas en gráficos

Se visualiza el pileup alrededor de una posición específica de la siguiente manera:

  • Vertical: lecturas (una lectura = una línea).
  • Horizontal: posiciones de referencia.
  • Canales del píxel: R = tipo de base (A/C/G/T), G = calidad de la base, B = cadena.

Esta imagen tiene aproximadamente 100×221 píxeles y 3 canales. Las posiciones donde la referencia y las lecturas difieren se muestran con colores distintos en el canal R. Un SNP heterocigoto muestra la mitad de las lecturas con la base alternativa y el resto con la referencia. Si hay un INDEL, las lecturas se desplazan o aparece un canal de inserción en una posición específica.

Para la CNN, esta imagen es simplemente datos de entrenamiento etiquetados con la respuesta correcta (sin variante / SNP het / SNP hom / INDEL het / INDEL hom).

Flujo de trabajo de tres etapas

DeepVariant siempre opera en tres etapas.

Etapa 1: make_examples

Escanea el BAM para detectar posiciones candidatas de variantes y genera imágenes del pileup para cada posición.

bash
docker run --rm -v $(pwd):/data google/deepvariant:latest \
/opt/deepvariant/bin/make_examples \
--mode=calling \
--ref=/data/hg38.fa \
--reads=/data/S1.bam \
--examples=/data/S1_examples.gz

En esta etapa, las posiciones candidatas se encuentran de manera similar a la región activa de GATK.

Paso 2: call_variants

Cada imagen de pileup se pasa por una CNN preentrenada (de la familia Inception) para obtener las probabilidades de clase.

bash
docker run ... /opt/deepvariant/bin/call_variants \
--outfile=/data/S1_cvo.tfrecord.gz \
--examples=/data/S1_examples.gz \
--checkpoint=/opt/models/wgs/model.ckpt

--checkpoint es el modelo entrenado. Google ha publicado tres modelos:

  • WGS: genoma completo humano.
  • WES: exoma completo humano.
  • PACBIO / ONT: exclusivos para lecturas largas.

Debe seleccionar el modelo adecuado según el tipo de biblioteca.

Paso 3: postprocess_variants

Convierta las salidas de la CNN a formato VCF.

bash
docker run ... /opt/deepvariant/bin/postprocess_variants \
--ref=/data/hg38.fa \
--infile=/data/S1_cvo.tfrecord.gz \
--outfile=/data/S1.vcf.gz

Estos tres pasos son estándar. La mayoría de los usuarios escriben un script que engloba estos tres pasos, run_deepvariant.

Ejecución integrada — run_deepvariant

bash
docker run --rm \
-v $(pwd):/data \
google/deepvariant:latest \
/opt/deepvariant/bin/run_deepvariant \
--model_type=WGS \
--ref=/data/hg38.fa \
--reads=/data/S1.bam \
--output_vcf=/data/S1.vcf.gz \
--output_gvcf=/data/S1.g.vcf.gz \
--num_shards=16

Tres pasos automáticos. Se obtienen los archivos VCF y GVCF de resultado.

GATK vs DeepVariant — ¿Cuándo usar qué?

Hallazgos recientes en varios benchmarks (precisionFDA, GA4GH).

CondiciónGanador
SNP estándar humano WGS/WES IlluminaLigera ventaja de DeepVariant (F1 0.996 vs 0.994)
Inserciones y deleciones (inDels) estándar humano IlluminaVentaja clara de DeepVariant
Lecturas largas PacBio HiFiVentaja clara de DeepVariant (GATK no está optimizado para lecturas largas)
Variantes poblacionales raras (diversidad africana y asiática)GATK Best Practices (estabilidad)
Muestras minoritarias · WESGATK Best Practices (reproducibilidad)
Especies no humanasGATK Best Practices (DeepVariant está entrenado para humanos)
Diagnóstico clínico que requiere reproducibilidadGATK Best Practices (explicabilidad)

Es decir, DeepVariant es fuerte cuando se trata de bibliotecas estándar humanas y se necesita la máxima sensibilidad, mientras que GATK sigue siendo el estándar en la mayoría de los demás casos. También existen pipelines que ejecutan ambos en paralelo y utilizan la unión de sus resultados (para una sensibilidad más amplia), como el ensemble DeepVariant-GATK.

¿Por qué funciona bien el aprendizaje profundo?

Hay tres razones.

1. Aprendizaje de extremo a extremo

GATK encadena múltiples modelos estadísticos (BQSR, PairHMM, VQSR) diseñados por humanos en una secuencia. En DeepVariant, make_examples genera los candidatos y una única CNN toma la decisión final. Las pérdidas de cada paso no se acumulan.

2. Aprendizaje automático de diversas características

La CNN aprende automáticamente características no especificadas por el humano (por ejemplo, correlación entre posiciones adyacentes, patrones de sesgo de hebra, ruido de alineación cerca de secuencias repetitivas). No es necesario diseñar manualmente indicadores como QD, FS o MQ.

3. Grandes volúmenes de datos de entrenamiento

Google entrenó la CNN con el conjunto de referencia GIAB (Genome in a Bottle del NIST) + sus propios grandes conjuntos de secuenciación. Esta escala de datos genera una sensibilidad difícil de alcanzar con los enfoques estadísticos.

Práctica pequeña en Kaggle T4

El genoma humano completo es pesado; se puede reducir a chr22 para ejecutarlo en Kaggle con una GPU T4. Extraer la imagen de Google DeepVariant en el Docker de Kaggle.

bash
!docker pull google/deepvariant:latest
!docker run --rm -v /kaggle:/data google/deepvariant:latest \
/opt/deepvariant/bin/run_deepvariant \
--model_type=WGS \
--ref=/data/hg38_chr22.fa \
--reads=/data/chr22_sample.bam \
--output_vcf=/data/chr22.vcf.gz \
--num_shards=4

Un solo ejemplo del cromosoma 22 tarda entre 20 y 40 minutos en una GPU T4 de Kaggle (16 GB de VRAM). La T4 gratuita de Colab tiene 12 GB, por lo que es necesario reducir el número de shards.

Gran avance en PacBio HiFi

DeepVariant destaca especialmente con lecturas largas (PacBio HiFi, ONT). Las lecturas largas tienen una longitud de 10 a 30 kb, por lo que una sola lectura contiene múltiples variantes. El CNN aprende naturalmente este contexto.

  • F1 de SNP con lecturas cortas de Illumina: 0.996 (GATK ≈ DeepVariant)
  • F1 de SNP con PacBio HiFi: 0.999 (GATK 0.98) — ventaja extrema de DeepVariant
  • F1 de INDEL con PacBio HiFi: 0.998 (GATK 0.90)

En la era de PacBio HiFi, DeepVariant se está convirtiendo en el nuevo estándar.

Cálculo manual — La decisión real del CNN

Supongamos que el CNN toma la siguiente decisión en una imagen de pileup virtual (cerca de BRCA1 en chr17:41197000).

  • Entrada: Imagen de pileup de 3 canales de 100×221.
  • Logits de salida: [no_variant: 0.02, het_SNP: 0.94, hom_SNP: 0.03, het_INDEL: 0.005, hom_INDEL: 0.005]
  • Decisión: het_SNP (probabilidad del 94%).
  • Registro en VCF: GT=0/1, GQ=−10 log10(0.06) = 12.

Esta decisión produce resultados bastante similares a la decisión bayesiana de GATK. La diferencia radica en que los filtros aprendidos son del CNN, no del diseñador de características humanas.

Debilidades de DeepVariant

No es una solución universal.

  • Sesgo de los datos de entrenamiento: Entrenado principalmente con conjuntos de referencia europeos. Puede tener menor sensibilidad en muestras de diversidad africana y asiática.
  • Baja interpretabilidad: La respuesta a "¿por qué se llamó esta posición como SNP?" es la activación del CNN, lo cual es incómodo para los informes clínicos.
  • Desventaja al recurrir a bibliotecas no entrenadas: Requiere reentrenamiento en ensayos especiales (UMI, bajo input).
  • Sin soporte para especies no humanas: Solo se publican modelos entrenados para humanos y ratones. Para otras especies es necesario un entrenamiento personalizado.

Integración en Nextflow

El pipeline nf-core/sarek admite tanto GATK4 como DeepVariant. Con un solo comando de Nextflow se pueden ejecutar ambos y realizar benchmarks.

bash
nextflow run nf-core/sarek --input samplesheet.csv \
--tools deepvariant,haplotypecaller \
--genome GATK.GRCh38

Al comparar los dos VCF resultantes puede observar directamente las características de sensibilidad de cada herramienta.

Mapeo CS

  • Clasificación de imágenes con CNN: consulte el episodio de DryBench «Clasificación de imágenes con CNN» (cnn-image-classification).
  • Aprendizaje de extremo a extremo: una única pérdida fluye por todo el sistema y todos los parámetros se optimizan conjuntamente.
  • Aprendizaje por transferencia: utiliza directamente un checkpoint preentrenado para WGS o WES; también es posible reajustarlo con un conjunto de datos pequeño.

Conclusión

DeepVariant es un caso representativo de cómo el aprendizaje profundo se ha establecido en la llamada de variantes. No sustituyó a GATK, sino que se convirtió en un nuevo estándar bajo condiciones concretas, como lecturas largas o búsqueda de sensibilidad máxima. En el siguiente episodio (S13) compararemos llamadores alternativos, como Strelka2 y FreeBayes, para completar nuestra intuición sobre los benchmarks de llamadores.

Para profundizar

  • Poplin R. et al. (2018), A universal SNP and small-indel variant caller using deep neural networks. Nature Biotechnology 36:983. Artículo original de DeepVariant.
  • GitHub de DeepVariant (https://github.com/google/deepvariant): catálogo de modelos y datos de entrenamiento.
  • Sitio oficial de GIAB (Genome in a Bottle) (https://www.nist.gov/programs-projects/genome-bottle): conjunto de verdad para benchmarks.
  • PrecisionFDA Truth Challenge (https://precision.fda.gov/): resultados de la competición de benchmarking de llamadores.
  • Google Health Blog — DeepVariant Improvements: historial de mejoras del modelo.

Si le resulta novedoso considerar el pileup como una imagen, busque trabajos posteriores que extiendan este enfoque a otros problemas, como la detección de SV o la llamada de isoformas. En el siguiente episodio pasaremos a los llamadores alternativos.

💬 Preguntas y comentarios

0 comentarios

Puedes publicar sin iniciar sesión. Los comentarios de invitados no pueden editarse ni eliminarse después.

0/2000

Cargando...