¿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.
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.gzEn 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.
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.
docker run ... /opt/deepvariant/bin/postprocess_variants \ --ref=/data/hg38.fa \ --infile=/data/S1_cvo.tfrecord.gz \ --outfile=/data/S1.vcf.gzEstos 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
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=16Tres 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ón | Ganador |
|---|---|
| SNP estándar humano WGS/WES Illumina | Ligera ventaja de DeepVariant (F1 0.996 vs 0.994) |
| Inserciones y deleciones (inDels) estándar humano Illumina | Ventaja clara de DeepVariant |
| Lecturas largas PacBio HiFi | Ventaja clara de DeepVariant (GATK no está optimizado para lecturas largas) |
| Variantes poblacionales raras (diversidad africana y asiática) | GATK Best Practices (estabilidad) |
| Muestras minoritarias · WES | GATK Best Practices (reproducibilidad) |
| Especies no humanas | GATK Best Practices (DeepVariant está entrenado para humanos) |
| Diagnóstico clínico que requiere reproducibilidad | GATK 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.
!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=4Un 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.
nextflow run nf-core/sarek --input samplesheet.csv \ --tools deepvariant,haplotypecaller \ --genome GATK.GRCh38Al 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.