MM2-Fast es una implementación acelerada de MinimAP2 en las CPU modernas. MM2-FAST acelera los tres módulos principales de Minimap2: (a) Sembrado, (b) encadenamiento y (c) Alineación por pares, logrando hasta 1.8x aceleración usando AVX512 sobre Minimap2. MM2-Fast es un reemplazo de MinimAP2, que proporciona la misma funcionalidad con exactamente la misma salida. En la versión actual, todos los módulos se optimizan utilizando la vectorización AVX-512 y AVX2 . Los resultados de referencia detallados están disponibles en nuestra publicación en Nature Computational Science (https://www.nature.com/articles/S43588-022-00201-8).
Sistema operativo: Linux
MM2-Fast se probó usando G ++ (GCC) 9.2.0 e ICPC versión 19.1.3.304
Arquitectura: X86_64 CPU con AVX512, AVX2
Requisito de memoria: ~ 30 GB para el genoma humano
Clon el repos de GitHub MM2-Fast . El código fuente se puede compilar utilizando el comando Make . Solo toma unos segundos.
git clone --recursive https://github.com/bwa-mem2/mm2-fast.git mm2-fast
cd mm2-fast
make
El uso de MM2-Fast es el mismo que Minimap2. Aquí hay un ejemplo de mapeo de lecturas con datos de prueba.
./minimap2 -ax map-ont test/MT-human.fa test/MT-orang.fa > mm2-fast_output
Como esta verión de MM2-Fast es una versión acelerada de Minimap2-V2.24, la salida de MM2-Fast se puede verificar contra MinimAP2-V2.24. Tenga en cuenta que el encadenamiento optimizado en MM2-Fast es estrictamente requerido para ejecutarse con un parámetro de encadenamiento Max-skip = Infinity . Tenga en cuenta que tener parámetro max-skip = infinito conduce a una mayor precisión de encadenamiento. Por lo tanto, para la verificación de la corrección, MinimAP2 debe ejecutarse con un valor mayor del parámetro Max-Skip-Skip . Siga los pasos a continuación para verificar la precisión de MM2-Fast.
git clone --recursive https://github.com/bwa-mem2/mm2-fast.git mm2-fast
cd mm2-fast && make
./minimap2 -ax map-ont test/MT-human.fa test/MT-orang.fa --max-chain-skip=1000000 > mm2-fast_output
git clone https://github.com/lh3/minimap2.git -b v2.24
cd minimap2 && make
./minimap2 -ax map-ont test/MT-human.fa test/MT-orang.fa --max-chain-skip=1000000 > minimap2_output
La salida generada por MinimAP2 y MM2-Fast debe coincidir.
diff minimap2_output mm2-fast_output > diff_result
El archivo diff_result
debe estar vacío, lo que significa una diferencia de 0 líneas.
La compilación predeterminada que usa el uso aplica dos optimizaciones: encadenamiento vectorizado y alineación de secuencias. La siembra basada en índices aprendidos está deshabilitada de forma predeterminada, ya que requiere la disponibilidad de óxido. Esto se debe a que la tabla de hash erudita usa una biblioteca de entrenamiento externa que funciona con óxido. El óxido es trivial de instalar, consulte https://rustup.rs/ y agregue su ruta al archivo .bashrc. La instalación de óxido solo toma unos segundos. Los siguientes son los pasos para habilitar la optimización de la tabla hash aprendida en MM2-Fast:
# Start by building learned hash table index for optimized seeding module
cd mm2-fast
source build_rmi.sh # #build binaries for creating index.
./create_index_rmi.sh test/MT-human.fa map-ont # #Takes two arguments: 1. path-to-reference-seq-file 2. preset.
# #For human genome, this step should take around 2-3 minutes to finish.
# Next, compile and run the mapping phase
make clean && make lhash=1
./minimap2 -ax map-ont test/MT-human.fa test/MT-orang.fa > mm2-fast-lhash_output
Para compilar MM2-Fast con todas las optimizaciones apagadas y volver a Minimap2 predeterminado, use el siguiente comando durante la compilación. Esto podría ser útil para la depuración.
make clean && make no_opt=1
# to use test data, download github repository
git clone --recursive https://github.com/bwa-mem2/mm2-fast.git
cd mm2-fast
# build Docker image
docker build -f Dockerfile -t mm2-fast:latest .
# minimap2 baseline
docker run -v $PWD /test:/test mm2-fast:latest /baseline/minimap2 -ax map-ont /test/MT-human.fa /test/MT-orang.fa > minimap2_baseline
# mm2-fast
docker run -v $PWD /test:/test mm2-fast:latest /mm2fast/minimap2 -ax map-ont /test/MT-human.fa /test/MT-orang.fa > mm2fast
# mm2-fast Advanced Options
# create index
# docker run -v $PWD/test:/test mm2-fast:latest bash /mm2-fast/create_index_rmi.sh /test/MT-human.fa <>
# <> can be map-hifi,map-ont,map-pb,asm5,asm20 depending upon your usecase
# example
docker run -v $PWD /test:/test mm2-fast:latest bash /mm2-fast/create_index_rmi.sh /test/MT-human.fa map-ont
# mapping
# docker run -v $PWD/test:/test mm2-fast:latest /lisa/mm2-fast/minimap2 -ax <> /test/MT-human.fa /test/MT-orang.fa > mm2fast_lisa
# <> can be map-hifi,map-ont,map-pb,asm5,asm20 depending upon your usecase
# example
docker run -v $PWD /test:/test mm2-fast:latest /lisa/mm2-fast/minimap2 -ax map-ont /test/MT-human.fa /test/MT-orang.fa > mm2fast_lisa
Hemos observado hasta 1.8x aceleración en los conjuntos de datos (consulte el documento para obtener más detalles). Por ejemplo, para las lecturas de 100k muestras aleatoriamente de "HG002_GM24385_1_2_3_PPPY_3.6.0_PROM.FASTQ.GZ", Minimap2 toma 92 segundos, mientras que MM2-Fast tarda 54 segundos en mapear el genoma humano en un platino de 28 Cores Intel® Xeon® 8280 CPUS . Nuestros conjuntos de datos muestreados con 100k lecturas están disponibles aquí.
Acelerar Minimap2 para aplicaciones de secuenciación de lectura larga en CPU modernas. Saurabh Kalikar, Chirag Jain, Vasimuddin MD, Sanchit Misra. Nat Comput Sci 2, 78–83 (2022). https://doi.org/10.1038/s43588-022-00201-8
Sigue el contenido de readMe original de Minisap2.
git clone https://github.com/lh3/minimap2
cd minimap2 && make
# long sequences against a reference genome
./minimap2 -a test/MT-human.fa test/MT-orang.fa > test.sam
# create an index first and then map
./minimap2 -x map-ont -d MT-human-ont.mmi test/MT-human.fa
./minimap2 -a MT-human-ont.mmi test/MT-orang.fa > test.sam
# use presets (no test data)
./minimap2 -ax map-pb ref.fa pacbio.fq.gz > aln.sam # PacBio CLR genomic reads
./minimap2 -ax map-ont ref.fa ont.fq.gz > aln.sam # Oxford Nanopore genomic reads
./minimap2 -ax map-hifi ref.fa pacbio-ccs.fq.gz > aln.sam # PacBio HiFi/CCS genomic reads (v2.19 or later)
./minimap2 -ax asm20 ref.fa pacbio-ccs.fq.gz > aln.sam # PacBio HiFi/CCS genomic reads (v2.18 or earlier)
./minimap2 -ax sr ref.fa read1.fa read2.fa > aln.sam # short genomic paired-end reads
./minimap2 -ax splice ref.fa rna-reads.fa > aln.sam # spliced long reads (strand unknown)
./minimap2 -ax splice -uf -k14 ref.fa reads.fa > aln.sam # noisy Nanopore Direct RNA-seq
./minimap2 -ax splice:hq -uf ref.fa query.fa > aln.sam # Final PacBio Iso-seq or traditional cDNA
./minimap2 -ax splice --junc-bed anno.bed12 ref.fa query.fa > aln.sam # prioritize on annotated junctions
./minimap2 -cx asm5 asm1.fa asm2.fa > aln.paf # intra-species asm-to-asm alignment
./minimap2 -x ava-pb reads.fa reads.fa > overlaps.paf # PacBio read overlap
./minimap2 -x ava-ont reads.fa reads.fa > overlaps.paf # Nanopore read overlap
# man page for detailed command line options
man ./minimap2.1
Minimap2 es un programa de alineación de secuencias versátil que alinea las secuencias de ADN o ARNm con una gran base de datos de referencia. Los casos de uso típicos incluyen: (1) mapeo de Pacbio u Oxford Nanopore Genómico lecturas al genoma humano; (2) encontrar superposiciones entre lecturas largas con una tasa de error de hasta ~ 15%; (3) la alineación de empalme de PacBio ISO-seq o ADNc de nanoporo o ARN directo se lee contra un genoma de referencia; (4) alinear las lecturas de extremo único o pareado de Illumina; (5) alineación de ensamblaje a ensamblaje; (6) Alineación de genoma completo entre dos especies estrechamente relacionadas con divergencia por debajo de ~ 15%.
Para secuencias de lecturas ruidosas de ~ 10 kb, MinimAP2 es decenas de veces más rápido que los mapeadores de lectura larga convencionales como Blasr, BWA-MEM, NGMLR y GMAP. Es más preciso en las lecturas largas simuladas y produce una alineación biológicamente significativa lista para los análisis posteriores. Para las lecturas cortas de> 100 pb Illumina, MinimAP2 es tres veces más rápido que BWA-MEM y Bowtie2, y tan preciso en los datos simulados. Las evaluaciones detalladas están disponibles en el documento Minimap2 o la preimpresión.
MinimAP2 está optimizado para CPU x86-64. Puede adquirir binarios precompilados de la página de lanzamiento con:
curl -L https://github.com/lh3/minimap2/releases/download/v2.24/minimap2-2.24_x64-linux.tar.bz2 | tar -jxvf -
./minimap2-2.24_x64-linux/minimap2
Si desea compilar desde la fuente, debe tener un compilador C, GNU Make y ZLib Development Arches instalados. Luego escriba make
en el directorio del código fuente para compilar. Si ve errores de compilación, intente make sse2only=1
para deshabilitar el código SSE4, lo que hará que Minimap2 sea un poco más lento.
Minimap2 también funciona con CPU de ARM que admite los conjuntos de instrucciones de neón. Para compilar para arquitecturas de brazo de 32 bits (como ARMV7), use make arm_neon=1
. Para compilar para arquitecturas de brazo de 64 bits (como ARMV8), use make arm_neon=1 aarch64=1
.
Minimap2 puede usar la biblioteca SIMD en todas partes (SIMDE) para la implementación de portamiento en los diferentes conjuntos de instrucciones SIMD. Para compilar con SIMDE, use make -f Makefile.simde
. Para compilar para las CPU del brazo, use Makefile.simde
con las líneas de comando relacionadas con el brazo que se dan anteriormente.
Sin ninguna opción, MinimAP2 toma una base de datos de referencia y un archivo de secuencia de consulta como entrada y produce asignación aproximada, sin alineación de nivel base (es decir, las coordenadas son solo aproximadas y no hay cigarro en la salida), en el formato PAF:
minimap2 ref.fa query.fq > approx-mapping.paf
Puede pedirle a Minimap2 que genere cigarro en la etiqueta cg
de PAF con:
minimap2 -c ref.fa query.fq > alignment.paf
o a las alineaciones de salida en el formato SAM:
minimap2 -a ref.fa query.fq > alignment.sam
Minimap2 funciona sin problemas con los formatos Gzip'd FASTA y FASTQ como entrada. No necesita convertir primero entre los archivos GZIP'D de FASTA y FASTQ o descompresión.
Para el genoma de referencia humana, MinimAP2 tarda unos minutos en generar un índice de minimizador para la referencia antes de mapear. Para reducir el tiempo de indexación, puede guardar opcionalmente el índice con la opción -d y reemplazar el archivo de secuencia de referencia con el archivo de índice en la línea de comando Minisap2:
minimap2 -d ref.mmi ref.fa # indexing
minimap2 -a ref.mmi reads.fq > alignment.sam # alignment
Es importante destacar que debe tenerse en cuenta que una vez que construye el índice, los parámetros de indexación como -k , -W , -H y -I no se pueden cambiar durante el mapeo. Si está ejecutando Minimap2 para diferentes tipos de datos, probablemente necesite mantener múltiples índices generados con diferentes parámetros. Esto hace que Minimap2 sea diferente de BWA, que siempre usa el mismo índice, independientemente de los tipos de datos de consulta.
Minimap2 utiliza el mismo algoritmo base para todas las aplicaciones. Sin embargo, debido a los diferentes tipos de datos que admite (por ejemplo, lecturas cortas frente a largas; lecturas de ADN vs ARNm), MinimAP2 debe ajustarse para un rendimiento y precisión óptimos. Por lo general, se recomienda elegir un preajuste con la opción -x , que establece múltiples parámetros al mismo tiempo. La configuración predeterminada es la misma que map-ont
.
minimap2 -ax map-pb ref.fa pacbio-reads.fq > aln.sam # for PacBio CLR reads
minimap2 -ax map-ont ref.fa ont-reads.fq > aln.sam # for Oxford Nanopore reads
La diferencia entre map-pb
y map-ont
es que map-pb
utiliza minimizadores comprimidos por homopolímero (HPC) como semillas, mientras que map-ont
utiliza minimizadores ordinarios como semillas. La evaluación Emperical sugiere que los minimizadores de HPC mejoran el rendimiento y la sensibilidad al alinear las lecturas de Pacbio CLR, pero duele al alinear las lecturas de nanoporos.
minimap2 -ax splice:hq -uf ref.fa iso-seq.fq > aln.sam # PacBio Iso-seq/traditional cDNA
minimap2 -ax splice ref.fa nanopore-cdna.fa > aln.sam # Nanopore 2D cDNA-seq
minimap2 -ax splice -uf -k14 ref.fa direct-rna.fq > aln.sam # Nanopore Direct RNA-seq
minimap2 -ax splice --splice-flank=no SIRV.fa SIRV-seq.fa # mapping against SIRV control
Existen diferentes tecnologías de ARN-seq de lectura larga, que incluyen ADNc de longitud completa, EST, PACBIO ISO-SEQ, NANOPORE 2D ADNA-seq y RNA-seq directo. Producen datos de diversa calidad y propiedades. Por defecto, -x splice
asume que se desconoce la orientación de lectura en relación con la cadena de transcripción. Intenta dos rondas de alineación para inferir la orientación y escribir el hilo a la etiqueta ts
SAM/PAF si es posible. Para ISO-seq, ARN-seq directo y ADNc de longitud completa trandicional, se desearía aplicar -uf
para forzar a Minimap2 a considerar solo la cadena de transcripción hacia adelante. Esto acelera la alineación con una ligera mejora con la precisión. Para las ruidosas lecturas de ARN-seq directo de nanopore, se recomienda utilizar un tamaño de K-Mer más pequeño para una mayor sensibilidad a los primeros o los últimos exones.
MinimAP2 califica una alineación por la puntuación del subsegmento máximo de puntuación, excluyendo intrones, y marca la mejor alineación como primaria en SAM. Cuando un gen empalmado también tiene pseudogenes sin empalme, Minisap2 no prefiere intencionalmente la alineación empalmada, aunque en la práctica más a menudo marca la alineación empalmada como primaria. Por defecto, MinimAP2 genera hasta cinco alineaciones secundarias (es decir, probablemente pseudogenes en el contexto del mapeo RNA-seq). Esto se puede ajustar con la opción -n .
Para lecturas largas de ARN -seq, MinimAP2 puede producir alineaciones quiméricas potencialmente causadas por fusiones genéticas/variaciones estructurales o por un intrón más largo que la longitud de intrón máximo -g (200k por defecto). Por ahora, no se recomienda aplicar un -G excesivamente grande, ya que esto ralentiza Minimap2 y, a veces, conduce a alineaciones falsas.
Vale la pena señalar que, por defecto -x splice
prefiere GT [A/G] .. [C/T] AG sobre GT [C/T] .. [A/G] Ag, y luego sobre otras señales de empalme. Teniendo en cuenta que una base adicional mejora la precisión de la unión para lecturas ruidosas, pero reduce la precisión al alinear con los datos de control SIRV ampliamente utilizados. Esto se debe a que SIRV no honra la señal de empalme evolutivamente conservadora. Si está estudiando SIRV, puede aplicar --splice-flank=no
para dejar que Minimap2 solo modelo GT..Ag, ignorando la base adicional.
Desde V2.17, MinimAP2 puede tomar opcionalmente genes anotados como entrada y priorizar en las uniones de empalme anotadas. Para usar esta función, puede
paftools.js gff2bed anno.gff > anno.bed
minimap2 -ax splice --junc-bed anno.bed ref.fa query.fa > aln.sam
Aquí, anno.gff
es la anotación génica en el formato GTF o GFF3 ( gff2bed
prueba automáticamente el formato). La salida de gff2bed
está en el formato de cama de 12 columnas, o en el formato Bed12. Con la opción --junc-bed
, MinimAP2 agrega una puntuación de bonificación (sintonizada por --junc-bonus
) si una unión alineada coincide con una unión en la anotación. Opción: --junc-bed
también toma una cama de 5 columnas, incluido el campo de la cadena. En este caso, cada línea indica una unión orientada.
minimap2 -x ava-pb reads.fq reads.fq > ovlp.paf # PacBio CLR read overlap
minimap2 -x ava-ont reads.fq reads.fq > ovlp.paf # Oxford Nanopore read overlap
Del mismo modo, ava-pb
utiliza minimizadores HPC, mientras que ava-ont
utiliza minimizadores ordinarios. Por lo general, no se recomienda realizar una alineación de nivel base en el modo superpuesto porque es lento y puede producir superposiciones falsas positivas. Sin embargo, si el rendimiento no es una preocupación, puede intentar agregar -a
o -c
de todos modos.
minimap2 -ax sr ref.fa reads-se.fq > aln.sam # single-end alignment
minimap2 -ax sr ref.fa read1.fq read2.fq > aln.sam # paired-end alignment
minimap2 -ax sr ref.fa reads-interleaved.fq > aln.sam # paired-end alignment
Cuando se especifican dos archivos de lectura, MinimAP2 lee de cada archivo a su vez y fusionamos en una transmisión entrelazada internamente. Se considera que dos lecturas se emparejan si están adyacentes en la secuencia de entrada y tienen el mismo nombre (con el sufijo /[0-9]
recortado si está presente). Las lecturas de extremo único y emparejado se pueden mezclar.
Minimap2 no funciona bien con lecturas empalmadas cortas. Hay muchos mapeadores de ARN-seq capaces para lecturas cortas.
minimap2 -ax asm5 ref.fa asm.fa > aln.sam # assembly to assembly/ref alignment
Para la alineación de genoma completo de las especies, el sistema de puntuación debe ajustarse de acuerdo con la divergencia de la secuencia.
Debido a una falla de diseño, BAM no funciona con cadenas de cigarros con operaciones> 65535 (Sam y Cram Work). Sin embargo, para las lecturas de nanoporo ultra larga, Minisap2 puede alinear ~ 1% de las bases de lectura con cigarros largos más allá de la capacidad de BAM. Si convierte dicho Sam/Cram en BAM, Picard y SamTools recientes arrojarán un error y abortarán. SamTools y otras herramientas mayores pueden crear BAM corrupto.
Para evitar este problema, puede agregar opción -L
en la línea de comando Minisap2. Esta opción mueve un cigarro largo a la etiqueta CG
y deja un cigarro completamente recortado en la columna Sam Cigar. Las herramientas actuales que no leen cigarros (por ejemplo, fusión y clasificación) todavía funcionan con tales registros BAM; Las herramientas que leen cigarros ignorarán efectivamente estos registros. Se ha decidido que las herramientas futuras reconocerán sin problemas los registros de cigarrillos largos generados por la opción -L
.
TL; DR : Si trabaja con lecturas Ultra Long y usa herramientas que solo procesan archivos BAM, agregue la opción -L
.
La etiqueta cs
SAM/PAF codifica bases en desajustes e indels. Coincide con la expresión regular /(:[0-9]+|*[az][az]|[=+-][A-Za-z]+)+/
. Al igual que el cigarro, cs
consiste en una serie de operaciones. Cada personaje principal especifica la operación; La siguiente secuencia es la involucrada en la operación.
La etiqueta cs
está habilitada por la opción Línea de comandos --cs
. La siguiente alineación, por ejemplo:
CGATCGATAAATAGAGTAG---GAATAGCA
|| |||| |||||||||| |||| || |
CGATCG---AATAGAGTAGGTCGAATtGCA
se representa como :6-ata:10+gtc:4*at:3
, donde :[0-9]+
representa un bloque idéntico, -ata
representa una deleción, +gtc
una inserción y *at
la base de referencia a
se sustituye con una base de consulta t
. Es similar a la etiqueta MD
SAM pero es independiente y más fácil de analizar.
Si se usa --cs=long
, la cadena cs
también contiene secuencias idénticas en la alineación. El ejemplo anterior se convertirá en =CGATCG-ata=AATAGAGTAG+gtc=GAAT*at=GCA
. La forma larga de cs
codifica secuencias de referencia y consulta en una cadena. La etiqueta cs
también codifica posiciones de intrones y señales de empalme (consulte la página de manejo MinimAP2 para más detalles).
MinimAP2 también viene con un script (Java) PofTools.js que procesa alineaciones en el formato PAF. Llama a variantes de la alineación de ensamblaje a referencia, eleva los archivos de la cama basados en la alineación, se convierte entre formatos y proporciona servicios públicos para diversas evaluaciones. Para más detalles, consulte Misc/Readme.md.
A continuación, las opciones de línea de comandos MinimAP2 tienen un tablero por delante y se resaltan en negrita. La descripción puede ayudar a ajustar los parámetros Minimap2.
LEA -MINIMIZADORES DE REFERENCIA -I [= 4G ], Extracto ( -k , -W ) -minimizadores e indexarlos en una tabla hash.
Leer -k [= 200m ] Bases de consulta. Para cada secuencia de consulta, haga paso 3 a 7:
Para cada minimizador ( -k , -W ) en la consulta, verifique el índice de referencia. Si un minimizador de referencia no se encuentra entre los más frecuentes -F [= 2e -4 ], recolecte sus ocurrencias en la referencia, que se denominan semillas .
Ordenar las semillas por posición en la referencia. Encadenarlos con programación dinámica. Cada cadena representa un mapeo potencial. Para leer la superposición, informe todas las cadenas y luego vaya al paso 8. Para la asignación de referencia, haga el paso 5 a 7:
Sea P el conjunto de asignaciones primarias, que es un conjunto vacío inicialmente. Para cada cadena de lo mejor a lo peor de acuerdo con sus puntajes de encadenamiento: si está en la consulta, la cadena se superpone con una cadena en P por nivel de nivel [= 0.5 ] o una fracción más alta de la cadena más corta, marque la cadena como secundario a la cadena en p ; De lo contrario, agregue la cadena a p .
Retener todas las asignaciones primarias. También conserve hasta -n [= 5 ] las asignaciones secundarias superiores si sus puntajes de encadenamiento son más altos que -p [= 0.8 ] de sus asignaciones primarias correspondientes.
Si se solicita la alineación, filtre una semilla interna si potencialmente conduce a una inserción larga y una larga eliminación. Extenderse desde la semilla más izquierda. Realizar alineaciones globales entre semillas internas. Divida la cadena si la puntuación acumulada a lo largo de la alineación global cae en -z [= 400 ], sin tener en cuenta los espacios largos. Extenderse desde la semilla más derecha. Cadenas de salida y sus alineaciones.
Si hay más secuencias de consulta en la entrada, vaya al paso 2 hasta que no queden más consultas.
Si hay más secuencias de referencia, vuelva a abrir el archivo de consulta desde el inicio y vaya al paso 1; De lo contrario, detente.
ManPage Minimap2.1 proporciona una descripción detallada de las opciones de línea de comando MinimAP2 y etiquetas opcionales. La página de preguntas frecuentes responde varias preguntas frecuentes. Si encuentra errores o tiene más preguntas o solicitudes, puede plantear un problema en la página del problema. No hay una lista de correo específica por el momento.
Si usa Minimap2 en su trabajo, cite:
Li, H. (2018). Minimap2: Alineación por pares para secuencias de nucleótidos. Bioinformática , 34 : 3094-3100. doi: 10.1093/bioinformática/bty191
y/o:
Li, H. (2021). Nuevas estrategias para mejorar la precisión de alineación de MinimAP2. Bioinformática , 37 : 4572-4574. doi: 10.1093/bioinformática/btab705
Minimap2 no es solo una herramienta de línea de comandos, sino también una biblioteca de programación. Proporciona API C para construir/cargar el índice y alinear secuencias contra el índice. File Ejemplo.c demuestra usos típicos de las API C. Archivo de encabezado Minimap.h ofrece una documentación de API más detallada. Minimap2 tiene como objetivo mantener las API en este encabezado estable. Archivo MMPriv.h contiene API privadas adicionales que pueden someterse a cambios con frecuencia.
Este repositorio también proporciona enlaces de pitón a un subconjunto de API C. File Python/ReadMe.rst proporciona la documentación completa; Python/Minimap2.py muestra un ejemplo. Esta extensión de Python, Mappy, también está disponible en PYPI a través de pip install mappy
o desde BioConda a través de conda install -c bioconda mappy
.
Minimap2 puede producir alineaciones subóptimas a través de regiones largas de baja complejidad donde las posiciones de semillas pueden ser subóptimas. Esto no debería ser una gran preocupación porque incluso la alineación óptima puede ser incorrecta en tales regiones.
Minimap2 requiere instrucciones SSE2 en CPU x86 o neón en las CPU del brazo. Es posible agregar soporte no SIMD, pero haría que Minimap2 sea más lento en varias veces.
Minimap2 no funciona con una sola consulta o secuencia de base de datos ~ 2 mil millones de bases o más (2,147,483,647 para ser exactos). La longitud total de todas las secuencias puede exceder este umbral.
Minimap2 a menudo pierde pequeños exones.