¿Por qué es necesario este capítulo?
El índice FM de M15 fue la solución ideal para alinear lecturas cortas. Mapeaba decenas de miles de lecturas Illumina de 100 pb por segundo al genoma humano. Sin embargo, en la era de las lecturas largas, se necesitan otras herramientas, ya que los tamaños y los perfiles de error de las lecturas PacBio HiFi (10–25 kb) y Oxford Nanopore (10 kb–varios Mb) son completamente diferentes.
Minimap2, publicado por Heng Li (el mismo autor de BWA) en 2018, se convirtió en el estándar para la era de las lecturas largas. Sorprendentemente, minimap2 no utiliza el índice FM. En su lugar, emplea una estructura de datos semilla mucho más simple llamada minimizer. En este capítulo analizaremos esta idea.
¿Por qué el índice FM no es adecuado para las lecturas largas?
El índice FM está optimizado para lecturas cortas y con pocos errores (Illumina de 100–300 pb, Q30+). Las lecturas largas plantean dos desafíos:
- Longitud: Una sola lectura de 100 kb requiere muchas semillas. Con semillas cortas, el número de coincidencias aleatorias aumenta considerablemente.
- Tasa de error: Nanopore tiene una tasa de error del 5–15%. Aumentar el tamaño de la semilla para lograr una coincidencia exacta hace que se pierdan las posiciones verdaderamente similares.
La búsqueda inversa del índice FM se basa en coincidencias exactas, por lo que falla desde el principio al encontrar lecturas con errores. Era necesario buscar una alternativa.
Minimizer: selección de k-mers representativos
Es un concepto propuesto por Michael Schleimer y otros en 2003. Su definición es la siguiente:
Un minimizer es el k-mer que aparece primero en orden lexicográfico entre todos los k-mers dentro de una ventana deslizante de tamaño
w.
Por ejemplo, para la secuencia ACGTACGTACGT con ventanas de tamaño w = 4 y un paso de k = 3:
- Ventana 1 (
ACGT): Los 3-mers sonACGyCGT. El mínimo esACG(posición 0). - Ventana 2 (
CGTA): Los 3-mers sonCGTyGTA. El mínimo esCGT(posición 1). - Ventana 3 (
GTAC): Los 3-mers sonGTAyTAC. El mínimo esGTA(posición 2). - ...
Al listar los minimizers de cada ventana, se obtiene el conjunto de k-mers representativos de la secuencia original. Al indexar solo los representantes en lugar de todos los k-mers, el tamaño se reduce significativamente.
¿Por qué es bueno el minimizer como semilla?
Tiene dos propiedades beneficiosas:
Propiedad 1: Representatividad
Si dos secuencias son similares (incluso si no hay coincidencias exactas), sus conjuntos de minimizers también se superponen en gran medida. Esto se debe a que el valor mínimo de la ventana deslizante es relativamente estable frente a unos pocos errores en los caracteres.
Propiedad 2: Control de la densidad
Se puede controlar la densidad de los minimizers ajustando el tamaño de la ventana w.
w = 10, k = 15: Aproximadamente un minimizador por cada 100 pb. En el genoma humano, esto equivale a unos 30 millones de k-mers representativos.w = 5, k = 15: Aproximadamente uno por cada 50 pb. Densidad doble.
Esto contrasta con el FM-index, que debe contener todos los k-mers.
Pipeline de tres etapas de minimap2
- Indexación: Extracción de minimizadores del genoma de referencia para construir un índice basado en una tabla hash. El tamaño del índice es de 1/10 a 1/5 del FM-index.
- Búsqueda de semillas: Búsqueda de cada minimizador de la lectura de consulta en el índice para generar una lista de posiciones candidatas en la referencia.
- Encadenamiento y extensión: Agrupación de las posiciones candidatas que pueden alinearse a lo largo de la diagonal en cadenas, seguida de la alineación extendida solo en sus alrededores utilizando una penalización de huecos afín por doble segmento.
La idea central es que en las lecturas largas, múltiples semillas coinciden, lo que permite formar cadenas. En las lecturas cortas, hay muy pocas semillas, por lo que no se forman cadenas. La ventaja de las lecturas largas se refleja en el diseño del algoritmo.
Penalización de huecos afín por doble segmento
En las lecturas de Nanopore son frecuentes los indels muy largos (del orden de kb). Estos pueden ser variaciones estructurales reales o errores de secuenciación. La penalización de huecos afín estándar penaliza excesivamente los huecos largos.
minimap2 divide la penalización de huecos en dos segmentos.
a_1, b_1: Para huecos cortos (alto costo de apertura, bajo costo de extensión).a_2, b_2: Para huecos largos (alto costo de apertura, costo de extensión muy bajo).
Es decir, si el hueco es corto, se aplica la primera penalización afín; si es largo, la segunda. Esta refinada modificación mejora significativamente la precisión en la detección de variaciones estructurales.
Implementación en Python del índice de minimizadores
def get_minimizers(seq: str, w: int, k: int) -> list[tuple[str, int]]: \"\"\"Devuelve la lista de (k-mer, posición) del minimizador en la secuencia.\"\"\" minimizers = [] prev_minimizer = None for i in range(len(seq) - w - k + 2): window = seq[i:i+w+k-1] best_kmer = None best_pos = None for j in range(w): kmer = window[j:j+k] if best_kmer is None or kmer < best_kmer: best_kmer = kmer best_pos = i + j current = (best_kmer, best_pos) if current != prev_minimizer: minimizers.append(current) prev_minimizer = current return minimizers
# Usoseq = "ACGTACGTACGT"mins = get_minimizers(seq, w=4, k=3)for kmer, pos in mins: print(f"Posición {pos}: {kmer}")Práctica con la interfaz de línea de comandos de minimap2
El uso práctico de minimap2 es muy sencillo.
# Instalaciónconda install -c bioconda minimap2 -y
# Construcción del índice del genoma de referencia (automático)# Creación automática de índices la primera vez que se ejecuta minimap2
# Alineamiento de lecturas HiFiminimap2 -ax map-hifi reference.fasta hifi_reads.fastq.gz > hifi.sam
# Alineamiento de lecturas Nanoporeminimap2 -ax map-ont reference.fasta nanopore_reads.fastq.gz > ont.sam
# Alineamiento de genes muy largos (ej: mRNA a genoma)minimap2 -ax splice reference.fasta cdna.fasta > cdna.sam-ax map-hifi y -ax map-ont como configuraciones preestablecidas representan la máxima facilidad de uso de minimap2. Configuran automáticamente los parámetros adecuados según el tipo de datos.
Aplicación práctica
- Mapeo de referencia con lecturas largas: Estándar para PacBio y Nanopore.
- Detección de variantes estructurales: Maneja bien las brechas largas, lo que mejora la precisión en la detección de SV. Se combina con Sniffles y CuteSV.
- Mapeo multiespecie: Alineación según la similitud interespecífica mediante las configuraciones preestablecidas
asm5,asm10yasm20. - Alineación de ARN largo: Al mapear secuencias de cDNA al genoma, a menudo es más ventajoso que STAR.
- Mapeo de resultados de ensamblaje: Mapea contigs obtenidos con otro ensamblador a la referencia para compararlos.
Problemas comunes en la práctica
- Selección de la configuración preestablecida: Utilice siempre la configuración preestablecida adecuada según el tipo de datos (HiFi vs. Nanopore vs. empalme). Los valores predeterminados suelen ser inadecuados.
- Tamaño del índice: El índice de minimap2 es más pequeño que un FM-index, pero sigue siendo grande para referencias muy grandes (por ejemplo, múltiples genomas combinados). Cree el índice por adelantado y reutilícelo (opción
-d ref.mmi). - Indicador de la salida SAM: SAM de minimap2 tiene etiquetas específicas. Conocer
NM(distancia de edición),AS(puntuación de alineación) yde(divergencia) ayuda en el análisis posterior. - Cambios entre versiones: minimap2 se desarrolla activamente. Especifique la versión utilizada para garantizar la reproducibilidad.
Conceptos clave
- Minimizador (Winnowing): Comparte ideas con el winnowing utilizado en la detección de plagio de documentos, MinHash y compresión de registros. El artículo original es Schleimer et al. (2003).
- Índice hash: De minimizador a lista de posiciones se utiliza una tabla hash, en contraste con las estructuras de datos sofisticadas del FM-index.
- Encadenamiento (Chaining): Agrupar semillas candidatas en cadenas alineables a lo largo de la diagonal es una aplicación de programación dinámica. minimap2 tiene optimizaciones detalladas también para el encadenamiento.
- Sistema de configuraciones preestablecidas: Un elemento clave de la experiencia de usuario (UX) que determina la usabilidad de la herramienta. Buen ejemplo de diseño de herramientas prácticas.
Próximos temas
- Siguiente capítulo (M17): DIAMOND — Extensión del concepto de minimizador para la búsqueda de proteínas.
- Seis capítulos después (S03 · S04): BWA-MEM · STAR — Práctica de alineación de lecturas cortas.
- Dieciocho capítulos después (S14): Detección de variantes estructurales — Detección de SV a partir de los resultados de alineación de minimap2.
- Veinticinco capítulos después (M24): hifiasm — Aplicación de minimizador en el ensamblaje de lecturas HiFi.
Para profundizar
El texto es una versión reelaborada por BPD. A continuación, se ofrece información más detallada.
- Taller de Nick Loman (Sanger) — Long-read Sequencing and minimap2 (con subtítulos y excelente traducción automática). Combina la aplicación práctica con los principios teóricos.
- Artículo original: Li, H. (2018), Minimap2: pairwise alignment for nucleotide sequences, Bioinformatics 34, 3094–3100. Artículo fundamental.
- Artículo original: Schleimer, S. et al. (2003), Winnowing: local algorithms for document fingerprinting, SIGMOD. Origen informático del concepto de minimizador.
- Herramienta de referencia:
paftools.js(incluida en minimap2) — Utilidad para procesar los resultados en formato SAM/PAF. - Repositorio de referencia:
lh3/minimap2GitHub. Detalles sobre la configuración práctica, las pruebas de rendimiento y los ajustes preestablecidos.
Descargue un conjunto de datos de lecturas largas gratuito en Colab (por ejemplo, los ejemplos de EMBL-EBI) y alínelo con minimap2. Al comparar los archivos SAM con los resultados del alineamiento de lecturas cortas (BWA), comprenderá mejor las diferencias. Es necesario realizar una práctica.