Curso de introducción a la bioinformática e investigación reproducible
Karen Oróstica, Cristian Yáñez Lara y Ricardo Verdugo Creado abril 2020, actualizado noviembre 2025
El siguiente protocolo está diseñado para ser implementado en el servidor genoma.med.uchile.cl dentro de la carpeta de cada usuario de bioinfo1. Además, se asume que ya se ejecutó el tutorial Tutorial para el filtro y alineamiento de lecturas.

Usamos el programa Genome Analysis Toolkit (GATK) para el procesamiento en las siguientes etapas. De forma general los parámetros de GATK indican lo siguiente:
| Parámetro | Descripción |
|---|---|
| -T | Herramienta utilizada |
| -R | Archivo de referencia (el mismo usado en el alineamiento) |
| -I | Archivo de entrada el cual varía según la etapa del análisis |
| -L | Archivo .bed con las regiones target del experimento |
| -o | Archivo de salida generado el cual varía según la etapa del análisis |
La etapa de calibración de puntuación de calidad de base (BQSR) aplica un modelo de error empíricamente preciso a las bases.
Comando:
java -jar GenomeAnalysisTK.jar \
-T BaseRecalibrator \
-R reference.fasta \
-I muestra_sorted_RG.bam \
-knownSites dbSNP_hg19.vcf \
-o muestra_recal_data.table
Ejemplo:
java -jar /opt/GenomeAnalysisTK-3.7-0/GenomeAnalysisTK.jar -T BaseRecalibrator -R /datos/reference/genomes/hg19_reference/hg19.fasta -I S10_sorted_RG.bam -knownSites /datos/reference/genomes/hg19_reference/dbSNP_hg19.vcf -o S10_recall_data.table
Esto crea un archivo “muestra_recall_data.table” que contienen los datos de covarianza que se utilizarán en el paso posterior.
Nota: Es importante proporcionar a GATK un conjunto de sitios conocidos con el parámetro “-knownSites”, de lo contrario se negará a ejecutar el programa, en este caso se le proporciona las variantes de la base de datos dbSNP que posee GATK.
Comando:
java -jar GenomeAnalysisTK.jar \
-T PrintReads \
-R reference.fasta \
-I muestra_sorted_RG.bam \
--BQSR muestra_recal_data.table \
-o muestra_recal_reads.bam
Ejemplo:
java -jar /opt/GenomeAnalysisTK-3.7-0/GenomeAnalysisTK.jar -T PrintReads -R /datos/reference/genomes/hg19_reference/hg19.fasta -I S10_sorted_RG.bam --BQSR S10_recall_data.table -o S10_recall_reads.bam
Usando HaplotypeCaller, un llamador de variantes de GATK se pueden identificar dos tipos de variantes a partir del alineamiento procesado: polimorfismos de un solo nucleótido (SNP) e inserción-deleción (InDels). Se obtienen las variantes almacenadas en un archivo “Variant Call Format” (VCF).
Comando:
java -jar GenomeAnalysisTK.jar \
-T HaplotypeCaller \
-R reference \
-I muestra_recal_reads.bam \
--dbsnp dbSNP_hg19.vcf \
-stand_call_conf 30 \
-L "chr19" \
-o muestra_raw_variants.vcf
Ejemplo:
java -jar /opt/GenomeAnalysisTK-3.7-0/GenomeAnalysisTK.jar -T HaplotypeCaller -R /datos/reference/genomes/hg19_reference/hg19.fasta -I S10_recall_reads.bam --dbsnp /datos/reference/genomes/hg19_reference/dbSNP_hg19.vcf -stand_call_conf 30 -L "chr19" -o S10_raw_variants.vcf
**Nota **: Para acelerar el tutorial solo se calculan las variantes en el cromosoma 19. Para analizar todos los cromosomas debe eliminar el parámetro -L “chr19” del comando.
El identificador de variantes GATK (HaplotypeCaller) es por diseño muy indulgente en las variantes de llamada para lograr un alto grado de sensibilidad. Esto es bueno porque minimiza la posibilidad de perder variantes reales, pero significa que debemos refinar el conjunto de llamadas para reducir la cantidad de falsos positivos, que puede ser bastante grande, lo que se hace en la etapa de filtrado de variantes.
Se ejecuta el proceso de filtrado por separado en SNPs e Indels, por lo que se dividen las variantes en archivos separados. Para SNPs e Indels se pueden aplicar los mismos filtros pero con distintos valores o parámetros. Para efectos prácticos solo filtraremos por profundidad de cobertura de las variantes.
Extraemos los SNP del conjunto de variantes llamadas
Comando:
java -jar GenomeAnalysisTK.jar \
-T SelectVariants \
-R reference.fasta \
-V muestra_raw_variants.vcf \
-selectType SNP \
-o muestra_RAW_SNP.vcf
Ejemplo:
java -jar /opt/GenomeAnalysisTK-3.7-0/GenomeAnalysisTK.jar -T SelectVariants -R /datos/reference/genomes/hg19_reference/hg19.fasta -V S10_raw_variants.vcf -selectType SNP -o S10_RAW_SNP.vcf
Aplicamos el filtro al conjunto de SNPs. Usamos la expresión ‘DP> 10’ para incluir sólo los sitios con suficiente profundidad (depth > 10).
Comando:
java -jar GenomeAnalysisTK.jar \
-T VariantFiltration \
-R reference.fasta \
-V muestra_RAW_SNP.vcf \
--filterExpression "DP <10" \
--filterName "FILTER" \
-o muestra_FILTERED_SNP.vcf
Ejemplo:
java -jar /opt/GenomeAnalysisTK-3.7-0/GenomeAnalysisTK.jar -T VariantFiltration -R /datos/reference/genomes/hg19_reference/hg19.fasta -V S10_RAW_SNP.vcf --filterExpression "DP <10" --filterName "FILTER" -o S10_FILTERED_SNP.vcf
Extraemos los Indels del conjunto de variantes llamadas
Comando:
java -jar GenomeAnalysisTK.jar \
-T SelectVariants \
-R reference.fasta \
-V muestra_raw_variants.vcf \
-selectType INDEL \
-o muestra_RAW_INDEL.vcf
Ejemplo:
java -jar /opt/GenomeAnalysisTK-3.7-0/GenomeAnalysisTK.jar -T SelectVariants -R /datos/reference/genomes/hg19_reference/hg19.fasta -V S10_raw_variants.vcf -selectType INDEL -o S10_RAW_INDEL.vcf
Aplicamos el filtro al conjunto de Indels
Comando:
java -jar GenomeAnalysisTK.jar \
-T VariantFiltration \
-R reference.fasta \
-V muestra_RAW_INDEL.vcf \
--filterExpression "DP <10" \
--filterName "FILTER" \
-o muestra_FILTERED_INDEL.vcf
Ejemplo:
java -jar /opt/GenomeAnalysisTK-3.7-0/GenomeAnalysisTK.jar -T VariantFiltration -R /datos/reference/genomes/hg19_reference/hg19.fasta -V S10_RAW_INDEL.vcf --filterExpression "DP <10" --filterName "FILTER" -o S10_FILTERED_INDEL.vcf
Nota: Las variantes que pasan los filtros se etiquetan como PASS y las que no pasan los filtros se etiquetan como FILTER. Para el curso (datos de prueba) se usó un filtro de cobertura de 10 lecturas, lo cual fue considerado mínimo para poder determinar de forma adecuada el genotipo, pero es arbitrario.
Juntamos los archivos vcf anotados de SNPs e Indels en uno solo Comando:
java -jar GenomeAnalysisTK.jar \
-T CombineVariants \
-R reference.fasta \
--variant:foo muestra_FILTERED_SNP.vcf \
--variant:bar muestra_FILTERED_INDEL.vcf \
-o muestra_FILTER_VARIANTS.vcf \
-genotypeMergeOptions PRIORITIZE \
-priority foo,bar
Ejemplo:
java -jar /opt/GenomeAnalysisTK-3.7-0/GenomeAnalysisTK.jar -T CombineVariants -R /datos/reference/genomes/hg19_reference/hg19.fasta --variant:foo S10_FILTERED_SNP.vcf --variant:bar S10_FILTERED_INDEL.vcf -o S10_FILTER_VARIANTS.vcf -genotypeMergeOptions PRIORITIZE -priority foo,bar