MM2-FAST é uma implementação acelerada do MINMINAP2 nas CPUs modernas. O MM2-Fast acelera todos os três principais módulos do minimap2: (a) semeadura, (b) encadeamento e (c) alinhamento em pares, atingindo até 1,8x de aceleração usando AVX512 no minimap2. MM2-FAST é uma substituição de menina do minimap2, fornecendo a mesma funcionalidade com a mesma saída exatamente. Na versão atual, todos os módulos são otimizados usando a vetorização AVX-512 e AVX2 . Os resultados detalhados de referência estão disponíveis em nossa publicação na Nature Computational Science (https://www.nature.com/articles/S43588-022-00201-8).
Sistema operacional: Linux
MM2-Fast foi testado usando G ++ (GCC) 9.2.0 e ICPC versão 19.1.3.304
Arquitetura: x86_64 CPUs com AVX512, AVX2
Requisito de memória: ~ 30 GB para o genoma humano
Clone o repo MM2-Fast Github. O código -fonte pode ser compilado usando o comando make . Leva apenas alguns segundos.
git clone --recursive https://github.com/bwa-mem2/mm2-fast.git mm2-fast
cd mm2-fast
make
O uso do MM2-FAST é o mesmo que o minimap2. Aqui está um exemplo de mapeamento de leituras do ONT com dados de teste.
./minimap2 -ax map-ont test/MT-human.fa test/MT-orang.fa > mm2-fast_output
Como essa verion do MM2-FAST é uma versão acelerada do minimap2-v2.24, a saída do MM2-FAST pode ser verificada no minimap2-v2.24. Observe que o encadeamento otimizado no MM2-FAST é estritamente necessário para ser executado com um parâmetro max-skip-skip = infinito . Observe que ter parâmetro max-cadeia-skip = infinito leva a uma maior precisão de encadeamento. Portanto, para a verificação da correção, o minimap2 deve ser executado com um valor maior do parâmetro Max-Chain-SKIP . Siga as etapas abaixo para verificar a precisão do 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
A saída gerada pelo MINMAP2 e MM2-FAST deve corresponder.
diff minimap2_output mm2-fast_output > diff_result
O arquivo diff_result
deve estar vazio, o que significa uma diferença de 0 linhas.
A compilação padrão usando o MAGE aplica duas otimizações: encadeamento vetorizado e alinhamento de sequência. A semeadura baseada em índices instruídos é desativada por padrão, pois requer disponibilidade de ferrugem. Isso ocorre porque a mesa de hash aprendida usa uma biblioteca de treinamento externa que é executada na ferrugem. A ferrugem é trivial para instalar, consulte https://rustup.rs/ e adicione seu caminho ao arquivo .bashrc. A instalação da ferrugem leva apenas alguns segundos. A seguir estão as etapas para ativar a otimização de tabela de hash aprendida no 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 com todas as otimizações desligadas e alternar de volta ao mínimo padrão, use o seguinte comando durante a compilação. Isso pode ser útil para depuração.
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
Observamos até 1,8x de aceleração nos conjuntos de dados (consulte o papel para obter mais detalhes). Por exemplo, para a amostra aleatória 100k lê de "hg002_gm24385_1_2_3_guppy_3.6.0_prom.fastq.gz", minimap2 leva 92 segundos, enquanto mm2-fast leva 54 segundos para mapear o genoma humano em 28 cores intel® Xeon® Platin® . Nossos conjuntos de dados amostrados com 100k leituras estão disponíveis aqui.
Acelerando o MinMAP2 para aplicações de sequenciamento de leitura longa nas CPUs 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
O conteúdo de leitura original do MinMAP2 segue.
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
O MinMAP2 é um programa de alinhamento de sequência versátil que alinha seqüências de DNA ou mRNA em um grande banco de dados de referência. Os casos de uso típicos incluem: (1) mapeamento de Pacbio ou Oxford Nanopore Genomic Reads para o genoma humano; (2) encontrar sobreposições entre leituras longas com taxa de erro até ~ 15%; (3) alinhamento com reconhecimento de emenda do cDNA de Pacbio ISO-seq ou nanoporo ou RNA direto em um genoma de referência; (4) alinhar leituras de extremidade única ou de extremidade pareada; (5) alinhamento de montagem para montagem; (6) Alinhamento total do genoma entre duas espécies intimamente relacionadas com divergência abaixo de ~ 15%.
Para seqüências de leituras ruidosas de ~ 10kb, o minimap2 é dezenas de vezes mais rápido que os mainstream de leitura longa, como blasr, bwa-mem, ngmlr e gmap. É mais preciso nas leituras longas simuladas e produz alinhamento biologicamente significativo pronto para análises a jusante. Para> 100 pbp de leitura curta ilumina, o MinMAP2 é três vezes mais rápido que o BWA-MEM e o Bowtie2 e tão preciso em dados simulados. Avaliações detalhadas estão disponíveis no documento MinMAP2 ou na pré -impressão.
O MINMAP2 é otimizado para CPUs x86-64. Você pode adquirir binários pré -compilados na página de liberação com:
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
Se você deseja compilar a partir da fonte, precisa ter um compilador C, os arquivos de desenvolvimento do GNU e Zlib são instalados. Em seguida, digite make
no diretório de código -fonte para compilar. Se você vir erros de compilação, tente make sse2only=1
para desativar o código SSE4, o que tornará o MINMINAP2 um pouco mais lento.
O MINMAP2 também funciona com as CPUs do ARM que suportam os conjuntos de instruções de néon. Para compilar para arquiteturas de braço de 32 bits (como o ARMV7), use make arm_neon=1
. Para compilar por arquiteturas de braço de 64 bits (como o ARMV8), use make arm_neon=1 aarch64=1
.
O MinMAP2 pode usar a biblioteca SIMD Everywhere (SIMDE) para portar a implementação para os diferentes conjuntos de instruções SIMD. Para compilar usando o SIMDE, use make -f Makefile.simde
. Para compilar as CPUs do ARM, use Makefile.simde
com as linhas de comando relacionadas ao braço fornecidas acima.
Sem nenhuma opção, o MinMAP2 pega um banco de dados de referência e um arquivo de sequência de consulta como entrada e produz mapeamento aproximado, sem alinhamento no nível da base (ou seja, as coordenadas são apenas aproximadas e sem charuto na produção), no formato PAF:
minimap2 ref.fa query.fq > approx-mapping.paf
Você pode pedir ao MinimaP2 para gerar charuto na etiqueta cg
do PAF com:
minimap2 -c ref.fa query.fq > alignment.paf
ou para produzir alinhamentos no formato SAM:
minimap2 -a ref.fa query.fq > alignment.sam
O MinMAP2 funciona perfeitamente com os formatos Gzip'd FastA e FastQ como entrada. Você não precisa converter entre FASTA e FASTQ ou descomprimir os arquivos Gzip'd primeiro.
Para o genoma de referência humana, o MinMAP2 leva alguns minutos para gerar um índice de minimizador para a referência antes do mapeamento. Para reduzir o tempo de indexação, você pode, opcionalmente
minimap2 -d ref.mmi ref.fa # indexing
minimap2 -a ref.mmi reads.fq > alignment.sam # alignment
É importante ressaltar que deve -se notar que, depois de criar o índice, os parâmetros de indexação como -k , -w , -h e -i não podem ser alterados durante o mapeamento. Se você estiver executando o MinMAP2 para diferentes tipos de dados, provavelmente precisará manter vários índices gerados com parâmetros diferentes. Isso torna o MinimaP2 diferente do BWA, que sempre usa o mesmo índice, independentemente dos tipos de dados de consulta.
O MinMAP2 usa o mesmo algoritmo base para todos os aplicativos. No entanto, devido aos diferentes tipos de dados que ele suporta (por exemplo, leituras curtas versus longas; DNA vs mRNA lê), o minimap2 precisa ser ajustado para o desempenho e a precisão ideais. Geralmente, é recomendável escolher uma predefinição com a opção -x , que define vários parâmetros ao mesmo tempo. A configuração padrão é a mesma 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
A diferença entre map-pb
e map-ont
é que map-pb
usa minimizadores compactados por homopolímero (HPC) como sementes, enquanto map-ont
usa minimizadores comuns como sementes. A avaliação Empeical sugere que os minimizadores de HPC melhoram o desempenho e a sensibilidade ao alinhar lê o Pacbio CLR, mas prejudicam quando o alinhamento de Nanopore lê.
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
Existem diferentes tecnologias de RNA-seq de leitura longa, incluindo cDNA trandicional de comprimento total, EST, Pacbio ISO-seq, cDNA-seq 2D Nanopore 2D e RNA-seq direto. Eles produzem dados de qualidade e propriedades variadas. Por padrão, -x splice
assume que a orientação de leitura em relação à fita de transcrição é desconhecida. Ele tenta duas rodadas de alinhamento para inferir a orientação e escrever a fita na etiqueta ts
SAM/PAF, se possível. Para ISO-seq, RNA-seq direto e cDNAs trandicionais de comprimento total, seria desejado aplicar -uf
para forçar o MINMAP2 para considerar apenas a fita de transcrição direta. Isso acelera o alinhamento com uma leve melhora na precisão. Para leituras barulhentas de RNA-seq direta de nanoporos, é recomendável usar um tamanho K-mer menor para aumentar a sensibilidade aos primeiros ou os últimos éxons.
O MINMAP2 classifica um alinhamento pela pontuação do sub-segmento de pontuação máxima, excluindo íntrons e marca o melhor alinhamento como primário no SAM. Quando um gene emendado também possui pseudogenes não digitados, o MinMAP2 não prefere intencionalmente o alinhamento emendado, embora na prática ele mais frequentemente marque o alinhamento emendado como primário. Por padrão, o minimap2 sai de até cinco alinhamentos secundários (ou seja, pseudogenes provavelmente no contexto do mapeamento de RNA-seq). Isso pode ser ajustado com a opção -n .
Para leituras longas de RNA -seq, o minimap2 pode produzir alinhamentos quiméricos potencialmente causados por fusões genéticas/variações estruturais ou por um íntron mais longo que o comprimento do íntron máximo -g (200K por padrão). Por enquanto, não é recomendável aplicar um -g excessivamente grande, pois isso diminui o minimap2 e às vezes leva a alinhamentos falsos.
Vale a pena notar que, por padrão -x splice
prefere gt [a/g] .. [c/t] Ag sobre GT [c/t] .. [a/g] ag e depois em outros sinais de emenda. Considerando uma base adicional melhora a precisão da junção para leituras ruidosas, mas reduz a precisão ao alinhar -se aos dados de controle SIRV amplamente utilizados. Isso ocorre porque a Sirv não honra o sinal de emenda evolutivamente conservador. Se você estiver estudando Sirv, poderá aplicar --splice-flank=no
para deixar o MinMAP2 apenas modelo GT..AG, ignorando a base adicional.
Como a v2.17, o minimap2 pode opcionalmente tomar genes anotados como entrada e priorizar em junções de emenda anotadas. Para usar esse recurso, você pode
paftools.js gff2bed anno.gff > anno.bed
minimap2 -ax splice --junc-bed anno.bed ref.fa query.fa > aln.sam
Aqui, anno.gff
é a anotação genética no formato GTF ou GFF3 ( gff2bed
testa automaticamente o formato). A saída do gff2bed
está no formato do leito de 12 colunas, ou no formato Bed12. Com a opção --junc-bed
, o MinMAP2 adiciona uma pontuação de bônus (sintonizada por --junc-bonus
) se uma junção alinhada corresponder a uma junção na anotação. Opção --junc-bed
também leva o leito de 5 colunas, incluindo o campo da fita. Nesse caso, cada linha indica uma junção 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
Da mesma forma, ava-pb
usa minimizadores de HPC, enquanto ava-ont
usa minimizadores comuns. Geralmente, não é recomendável realizar o alinhamento no nível da base no modo de sobreposição porque é lento e pode produzir sobreposições falsas positivas. No entanto, se o desempenho não for uma preocupação, você pode tentar adicionar -a
ou -c
de qualquer maneira.
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
Quando dois arquivos de leitura são especificados, o MinMAP2 leituras de cada arquivo, por sua vez, e mesclá -las em um fluxo intercalado internamente. Duas leituras são consideradas emparelhadas se forem adjacentes no fluxo de entrada e têm o mesmo nome (com o sufixo /[0-9]
aparado, se presente). As leituras de ponta única e pareada podem ser misturadas.
O MinMAP2 não funciona bem com leituras emendadas curtas. Existem muitos mapeadores RNA-seq capazes para leituras curtas.
minimap2 -ax asm5 ref.fa asm.fa > aln.sam # assembly to assembly/ref alignment
Para o alinhamento entre espécies cruzadas, o sistema de pontuação precisa ser ajustado de acordo com a divergência da sequência.
Devido a uma falha de design, o BAM não funciona com cordas de charuto com operações> 65535 (Sam e Cram Work). No entanto, para nanoporo ultra-longo, lê o minimap2 pode alinhar ~ 1% de bases de leitura com charutos longos além da capacidade do BAM. Se você converter tal SAM/Cram em BAM, Picard e Samtools recentes lançarão um erro e abortarão. Samtools mais antigos e outras ferramentas podem criar BAM corrompido.
Para evitar esse problema, você pode adicionar a opção -L
na linha de comando MinMAP2. Esta opção move um charuto longo para a etiqueta CG
e deixa um charuto totalmente preso na coluna Sam Cigar. As ferramentas atuais que não lêem charuto (por exemplo, mesclagem e classificação) ainda funcionam com esses registros BAM; As ferramentas que leem o charuto ignoram efetivamente esses registros. Foi decidido que as ferramentas futuras reconhecerão perfeitamente os registros de longa data gerados pela opção -L
.
TL; DR : Se você trabalha com leituras e ferramentas ultra -longas que processassem apenas arquivos BAM, adicione a opção -L
.
A etiqueta cs
SAM/PAF codifica bases em incompatibilidades e indels. Ele corresponde à expressão regular /(:[0-9]+|*[az][az]|[=+-][A-Za-z]+)+/
. Como o charuto, cs
consiste em série de operações. Cada caractere líder especifica a operação; A sequência a seguir é a envolvida na operação.
A tag cs
é ativada pela opção de linha de comando --cs
. O alinhamento a seguir, por exemplo:
CGATCGATAAATAGAGTAG---GAATAGCA
|| |||| |||||||||| |||| || |
CGATCG---AATAGAGTAGGTCGAATtGCA
é representado como :6-ata:10+gtc:4*at:3
, onde :[0-9]+
representa um bloco idêntico, -ata
representa uma deleção, +gtc
uma inserção e *at
indica a base de referência a
é substituída com uma base de consulta t
. É semelhante à tag MD
sam, mas é independente e mais fácil de analisar.
Se --cs=long
é usado, a sequência cs
também contém sequências idênticas no alinhamento. O exemplo acima se tornará =CGATCG-ata=AATAGAGTAG+gtc=GAAT*at=GCA
. A forma longa dos codos cs
sequências de referência e consulta em uma string. A tag cs
também codifica posições de íntron e sinais de emenda (consulte a mangueira minimap2 para obter detalhes).
O MinMAP2 também vem com um script (Java) PAFTOOLS.JS que processa alinhamentos no formato PAF. Ele chama variantes do alinhamento da montagem para a referência, eleva os arquivos de cama com base no alinhamento, converte entre os formatos e fornece utilitários para várias avaliações. Para detalhes, consulte Misc/ReadMe.md.
A seguir, as opções de linha de comando MinMAP2 têm um traço à frente e são destacadas em negrito. A descrição pode ajudar a ajustar os parâmetros MINMAP2.
Leia -I [= 4G ] Bases de referência, Extrato ( -k , -w ) -Minimizers e indexá -las em uma tabela de hash.
Leia -k [= 200m ] Bases de consulta. Para cada sequência de consulta, faça a etapa 3 a 7:
Para cada ( -k , -w ) -Minimizer na consulta, verifique no índice de referência. Se um minimizador de referência não estiver entre os mais frequentes -f [= 2e -4 ], colete suas ocorrências na referência, que são chamadas de sementes .
Classifique as sementes por posição na referência. Corrente -os com programação dinâmica. Cada cadeia representa um mapeamento potencial. Para leitura sobreposta, relate todas as correntes e depois vá para a etapa 8. Para mapeamento de referência, faça a etapa 5 a 7:
Seja p o conjunto de mapeamentos primários, que é um conjunto vazio inicialmente. Para cada cadeia do melhor para o pior de acordo com as pontuações de encadeamento: se estiver na consulta, a cadeia se sobrepõe a uma corrente em P por -nível de máscara [= 0,5 ] ou maior fração da corrente mais curta, marque a corrente como secundário para a corrente em P ; Caso contrário, adicione a corrente à p .
Mantenha todos os mapeamentos primários. Também retém até -n [= 5 ] mapeamentos secundários superiores se suas pontuações de encadeamento forem maiores que -p [= 0,8 ] de seus mapeamentos primários correspondentes.
Se for solicitado o alinhamento, filtre uma semente interna se levar potencialmente a uma longa inserção e uma longa exclusão. Estenda-se da semente mais à esquerda. Realize alinhamentos globais entre sementes internas. Divida a cadeia se a pontuação acumulativa ao longo do alinhamento global cair em -z [= 400 ], desconsiderando lacunas longas. Estenda-se da semente mais à direita. Correntes de saída e seus alinhamentos.
Se houver mais seqüências de consulta na entrada, vá para a etapa 2 até que não mais consultas sejam deixadas.
Se houver mais sequências de referência, reabrir o arquivo de consulta do início e ir para a etapa 1; Caso contrário, pare.
MANPAGE MINMAP2.1 fornece descrição detalhada das opções da linha de comando MinMAP2 e tags opcionais. A página de perguntas frequentes responde a várias perguntas frequentes. Se você encontrar bugs ou tiver mais perguntas ou solicitações, poderá levantar um problema na página de emissão. Por enquanto, não há uma lista de discussão específica.
Se você usar o minimap2 em seu trabalho, cite:
Li, H. (2018). MinMAP2: alinhamento em pares para sequências de nucleotídeos. Bioinformatics , 34 : 3094-3100. doi: 10.1093/bioinformatics/bty191
e/ou:
Li, H. (2021). Novas estratégias para melhorar a precisão do alinhamento MINMAP2. Bioinformatics , 37 : 4572-4574. doi: 10.1093/bioinformatics/btab705
O MINMAP2 não é apenas uma ferramenta de linha de comando, mas também uma biblioteca de programação. Ele fornece APIs C para construir/carregar índice de carga e alinhar sequências contra o índice. Exemplo de arquivo.c demonstra usos típicos das APIs C. Arquivo de cabeçalho minimap.h fornece documentação da API mais detalhada. O MinMAP2 visa manter as APIs neste cabeçalho estável. O arquivo mmpriv.h contém APIs privadas adicionais que podem ser submetidas a alterações com frequência.
Este repositório também fornece ligações em Python a um subconjunto de APIs C. Arquivo python/readme.rst fornece a documentação completa; python/minimap2.py mostra um exemplo. Esta extensão Python, Mappy, também está disponível no PyPI via pip install mappy
ou da Bioconda via conda install -c bioconda mappy
.
O MINMAP2 pode produzir alinhamentos abaixo do ideal através de regiões longas de baixa complexidade, onde as posições das sementes podem ser abaixo do ideal. Isso não deve ser uma grande preocupação, porque mesmo o alinhamento ideal pode estar errado nessas regiões.
O MINMAP2 requer instruções SSE2 em CPUs x86 ou neon nas CPUs do ARM. É possível adicionar suporte não-SIMD, mas tornaria o MinimaP2 mais lento em várias vezes.
O MINMAP2 não funciona com uma única sequência de consulta ou banco de dados ~ 2 bilhões de bases ou mais (2.147.483.647 para ser exato). O comprimento total de todas as seqüências pode muito bem exceder esse limite.
O MinMAP2 muitas vezes perde pequenos éxons.