MM2-FAST est une implémentation accélérée de MinimAP2 sur les CPU modernes. MM2-Fast accélère les trois principaux modules de MINMAP2: (a) entreprend, (b) chaînage et (c) alignement par paire, atteignant une accélération allant jusqu'à 1,8x en utilisant AVX512 sur MINMAP2. MM2-FAST est un remplacement répertorié de MinimAP2, offrant les mêmes fonctionnalités avec exactement la même sortie. Dans la version actuelle, tous les modules sont optimisés à l'aide de la vectorisation AVX-512 et AVX2 . Les résultats détaillés de référence sont disponibles dans notre publication dans Nature Computational Science (https://www.nature.com/articles/s43588-022-00201-8).
Système d'exploitation: Linux
MM2-FAST a été testé à l'aide de G ++ (GCC) 9.2.0 et ICPC version 19.1.3.304
Architecture: CPU x86_64 avec AVX512, AVX2
Exigence de mémoire: ~ 30 Go pour le génome humain
Clone Le repo GitHub -Fast MM2 . Le code source peut être compilé à l'aide de la commande Make . Cela ne prend que quelques secondes.
git clone --recursive https://github.com/bwa-mem2/mm2-fast.git mm2-fast
cd mm2-fast
make
L'utilisation de mm2-fast est la même que MinimAP2. Voici un exemple de cartographie des lectures ONT avec les données de test.
./minimap2 -ax map-ont test/MT-human.fa test/MT-orang.fa > mm2-fast_output
Comme cette Verion de Mm2-Fast est une version accélérée de MinimAP2-V2.24, la sortie de MM2-FAST peut être vérifiée contre MINMAP2-V2.24. Notez que le chaînage optimisé dans MM2-FAST est strictement nécessaire pour être exécuté avec un paramètre de chaînage Max-Chain-Skip = Infinity . Notez qu'avoir un paramètre max-chain-skip = Infinity conduit à une précision de chaîne plus élevée. Par conséquent, pour la vérification de l'exactitude, MinimAP2 devrait fonctionner avec une valeur plus grande du paramètre Max-Chain-Skip . Suivez les étapes ci-dessous pour vérifier la précision 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 sortie générée par MINMAP2 et MM2-FAST devrait correspondre.
diff minimap2_output mm2-fast_output > diff_result
Le fichier diff_result
doit être vide, ce qui signifie une différence de 0 lignes.
La compilation par défaut à l'aide de Make applique deux optimisations: le chaînage vectorisé et l'alignement de séquence. L'ensemencement basé sur les indexes est désactivé par défaut car il nécessite la disponibilité de la rouille. En effet La rouille est triviale à installer, voir https://rustup.rs/ et ajouter son chemin au fichier .bashrc. L'installation de la rouille ne prend que quelques secondes. Voici les étapes pour permettre l'optimisation de la table de hachage apprise dans 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
Pour compiler MM2-Fast avec toutes les optimisations désactivées et revenir à MinimAP2 par défaut, utilisez la commande suivante pendant la compilation. Cela pourrait être utile pour le débogage.
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
Nous avons observé jusqu'à 1,8x accélération entre les ensembles de données (veuillez consulter le document pour plus de détails). Par exemple, pour les lectures de 100K échantillonnées au hasard de "HG002_GM24385_1_2_3_GUPPY_3.6.0_prom.fastq.gz", Minimap2 prend 92 secondes, tandis que MM2-FAST prend 54 secondes pour mapper contre le génome humain sur un 28 cœurs Intel® Xeon® Plattine 8280 Cpus . Nos ensembles de données échantillonnés avec des lectures de 100 000 sont disponibles ici.
Accélération de MinimAP2 pour les applications de séquençage à lecture longue sur des processeurs modernes. Saurabh Kalikar, Chirag Jain, Vasimuddin MD, Sanchit Misra. Nat Comput Sci 2, 78–83 (2022). https://doi.org/10.1038/S43588-022-00201-8
Le contenu réadme original de MinimAP2 suit.
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 est un programme d'alignement de séquence polyvalent qui aligne des séquences d'ADN ou d'ARNm contre une grande base de données de référence. Les cas d'utilisation typiques comprennent: (1) la cartographie des lectures génomiques de Pacbio ou Oxford Nanopore au génome humain; (2) trouver des chevauchements entre les lectures longues avec un taux d'erreur jusqu'à ~ 15%; (3) l'alignement conscient de l'épissage de l'ADNc de Pacbio ISO-Seq ou Nanopore ou l'ARN direct se lit contre un génome de référence; (4) Aligner les lectures d'illumina à un ou à paire ou à paire; (5) alignement de l'assemblage à assemblage; (6) Alignement du génome complet entre deux espèces étroitement apparentées avec une divergence inférieure à ~ 15%.
Pour ~ 10KB Noisy lit séquences, MinimAP2 est des dizaines de fois plus rapidement que les mappeurs à lecture longue traditionnels tels que BLASR, BWA-MEM, NGMLR et GMAP. Il est plus précis sur les lectures longues simulées et produit un alignement biologiquement significatif prêt pour les analyses en aval. Pour> 100bp illumina courtes lectures, MinimAP2 est trois fois plus rapide que BWA-MEM et BOWTIE2, et aussi précise sur les données simulées. Des évaluations détaillées sont disponibles à partir du papier MinimAP2 ou de la préimpression.
MinimAP2 est optimisé pour les processeurs x86-64. Vous pouvez acquérir des binaires précompilés à partir de la page de libération avec:
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 vous souhaitez compiler à partir de la source, vous devez avoir installé un compilateur C, GNU Make et ZLIB. Tapez ensuite make
du répertoire de code source à compiler. Si vous voyez des erreurs de compilation, essayez make sse2only=1
pour désactiver le code SSE4, ce qui rendra MinimAP2 légèrement plus lent.
MinimAP2 fonctionne également avec des processeurs ARM prenant en charge les ensembles d'instructions néon. Pour compiler pour les architectures ARM 32 bits (comme ARMV7), utilisez make arm_neon=1
. Pour compiler pour des architectures ARM 64 bits (comme ARMV8), utilisez make arm_neon=1 aarch64=1
.
MinimAP2 peut utiliser la bibliothèque SIMD Everywhere (SIMDE) pour le portage de l'implémentation dans les différents ensembles d'instructions SIMD. Pour compiler à l'aide de SIMDE, utilisez make -f Makefile.simde
. Pour compiler pour les processeurs ARM, utilisez Makefile.simde
avec les lignes de commande liées à ARM indiquées ci-dessus.
Sans aucune option, MinimAP2 prend une base de données de référence et un fichier de séquence de requête en entrée et produit une cartographie approximative, sans alignement au niveau de la base (c'est-à-dire que les coordonnées ne sont qu'environ et pas de cigare en sortie), au format PAF:
minimap2 ref.fa query.fq > approx-mapping.paf
Vous pouvez demander à MinimAP2 de générer du cigare sur l'étiquette cg
de PAF avec:
minimap2 -c ref.fa query.fq > alignment.paf
ou aux alignements de sortie au format SAM:
minimap2 -a ref.fa query.fq > alignment.sam
MinimAP2 fonctionne de manière transparente avec les formats Fasta et FastQ gzip'd et FastQ. Vous n'avez pas besoin de vous convertir entre Fasta et FastQ ou décompresser d'abord les fichiers gzip'd.
Pour le génome de référence humaine, MinimAP2 prend quelques minutes pour générer un indice minimiseur pour la référence avant le mappage. Pour réduire le temps d'indexation, vous pouvez éventuellement enregistrer l'index avec l'option -D et remplacer le fichier de séquence de référence par le fichier d'index sur la ligne de commande MinimAP2:
minimap2 -d ref.mmi ref.fa # indexing
minimap2 -a ref.mmi reads.fq > alignment.sam # alignment
Surtout , il convient de noter qu'une fois que vous avez construit l'index, les paramètres d'indexation tels que -K , -W , -H et -je ne peux pas être modifié pendant la cartographie. Si vous exécutez MinimAP2 pour différents types de données, vous devrez probablement conserver plusieurs index générés avec différents paramètres. Cela rend MINMAP2 différent de BWA qui utilise toujours le même index, quels que soient les types de données de requête.
MinimAP2 utilise le même algorithme de base pour toutes les applications. Cependant, en raison des différents types de données qu'il prend en charge (par exemple, les lectures courtes vs longues; ADN vs lectures d'ARNm), MinimAP2 doit être réglé pour des performances et une précision optimales. Il est généralement recommandé de choisir un préréglage avec l'option -x , qui définit plusieurs paramètres en même temps. Le paramètre par défaut est le même 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 différence entre map-pb
et map-ont
est que map-pb
utilise des minimissurs compressés par l'homopolymère (HPC) comme graines, tandis que map-ont
utilise des minimissurs ordinaires comme graines. L'évaluation empérique suggère que les minimiseurs HPC améliorent les performances et la sensibilité lors de l'alignement des lectures de PacBio CLR, mais blessé lors de l'alignement des nanopore.
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
Il existe différentes technologies d'ARN-seq à lus longues, notamment l'ADNc de pleine longueur trantitionnelle, EST, ISO-SEQ PACBIO, Nanopore 2D CDNA-Seq et ARN-seq direct. Ils produisent des données de qualité et de propriétés variables. Par défaut, -x splice
suppose que l'orientation de lecture par rapport au brin de transcription est inconnue. Il essaie deux cycles d'alignement pour déduire l'orientation et écrire le brin sur la balise ts
SAM / PAF si possible. Pour ISO-SEQ, l'ARN-seq direct et les ADNc de pleine longueur trantitionnels, il serait souhaité appliquer -uf
pour forcer MinimAP2 à considérer le brin de transcription vers l'avant uniquement. Cela accélère l'alignement avec une légère amélioration de la précision. Pour les lectures de l'ARN-seq direct nanopore bruyant, il est recommandé d'utiliser une taille K-Mer plus petite pour une sensibilité accrue aux premiers ou aux derniers exons.
MinimAP2 évalue un alignement par le score du sous-segment de score maximum, à l'exclusion des introns et marque le meilleur alignement en tant que primaire dans SAM. Lorsqu'un gène épissé a également des pseudogènes non éprouvés, MinimAP2 ne préfère pas intentionnellement l'alignement épissé, mais en pratique, il marque le plus souvent l'alignement épissé comme le primaire. Par défaut, MinimAP2 produit jusqu'à cinq alignements secondaires (c'est-à-dire des pseudogènes probables dans le contexte de la cartographie RNA-Seq). Cela peut être réglé avec l'option -n .
Pour les lectures longues de l'ARN-seq, MinimAP2 peut produire des alignements chimériques potentiellement causés par des fusions géniques / variations structurelles ou par un intron plus long que la longueur d'intron max -g (200k par défaut). Pour l'instant, il n'est pas recommandé d'appliquer un -g excessivement grand car cela ralentit MinimAP2 et conduit parfois à de faux alignements.
Il convient de noter que, par défaut, -x splice
préfère GT [A / G] .. [C / T] AG sur GT [C / T] .. [A / G] AG, puis sur d'autres signaux d'épissage. La considération d'une base supplémentaire améliore la précision de la jonction pour les lectures bruyantes, mais réduit la précision lors de l'alignement sur les données de contrôle SIRV largement utilisées. En effet, SIRV n'honore pas le signal d'épissage évolutivement conservateur. Si vous étudiez SIRV, vous pouvez appliquer --splice-flank=no
pour laisser MinimAP2 uniquement modèle gt..ag, ignorant la base supplémentaire.
Depuis V2.17, MinimAP2 peut éventuellement prendre des gènes annotés en entrée et hiérarchiser sur les jonctions d'épissage annotées. Pour utiliser cette fonctionnalité, vous pouvez
paftools.js gff2bed anno.gff > anno.bed
minimap2 -ax splice --junc-bed anno.bed ref.fa query.fa > aln.sam
Ici, anno.gff
est l'annotation du gène au format GTF ou GFF3 ( gff2bed
teste automatiquement le format). La sortie de gff2bed
est au format de lit à 12 colonnes ou au format BED12. Avec l'option --junc-bed
, MinimAP2 ajoute un score bonus (réglé par --junc-bonus
) si une jonction alignée correspond à une jonction dans l'annotation. Option --junc-bed
prend également un lit à 5 colonnes, y compris le champ de brin. Dans ce cas, chaque ligne indique une jonction orientée.
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
De même, ava-pb
utilise des minimiseurs HPC tandis ava-ont
utilise des minimiseurs ordinaires. Il n'est généralement pas recommandé d'effectuer un alignement au niveau de la base dans le mode de chevauchement car il est lent et peut produire des chevauchements faux positifs. Cependant, si les performances ne sont pas une préoccupation, vous pouvez essayer d'ajouter -a
ou -c
de toute façon.
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
Lorsque deux fichiers de lecture sont spécifiés, MinimAP2 lit à son tour chaque fichier et les fusionner en un flux entrelacé en interne. Deux lectures sont considérées comme appariées si elles sont adjacentes dans le flux d'entrée et ont le même nom (avec le suffixe /[0-9]
taillé s'il est présent). Les lectures à extrémité simple et appariée peuvent être mitigées.
MinimAP2 ne fonctionne pas bien avec les lectures épissées courtes. Il existe de nombreux mappeurs ARN-seq capables pour les lectures courtes.
minimap2 -ax asm5 ref.fa asm.fa > aln.sam # assembly to assembly/ref alignment
Pour l'alignement entre espèces du génome complet, le système de notation doit être réglé en fonction de la divergence de séquence.
En raison d'un défaut de conception, BAM ne fonctionne pas avec les cordes de cigares avec> 65535 opérations (Sam et Cram Work). Cependant, pour les lectures de nanopore ultra-longues, MinimAP2 peut aligner ~ 1% des bases de lecture avec de longs cigares au-delà de la capacité de BAM. Si vous convertissez ces Sam / Cram en Bam, Picard et Samtools récents lanceront une erreur et abandonnera. Les Samtools plus anciens et autres outils peuvent créer du BAM corrompu.
Pour éviter ce problème, vous pouvez ajouter l'option -L
à la ligne de commande MinimAP2. Cette option déplace un long cigare sur l'étiquette CG
et laisse un cigare entièrement coupé à la colonne Sam Cigar. Les outils actuels qui ne lisent pas le cigare (par exemple la fusion et le tri) fonctionnent toujours avec de tels enregistrements BAM; Les outils qui lisent le cigare ignoreront efficacement ces enregistrements. Il a été décidé que les outils futurs reconnaîtront de manière transparente les enregistrements à long cigar générés par l'option -L
.
TL; DR : Si vous travaillez avec des lectures ultra-longues et utilisez des outils qui ne traitent que les fichiers BAM, veuillez ajouter l'option -L
.
La balise cs
SAM / PAF code pour les bases aux décalages et aux indels. Il correspond à l'expression régulière /(:[0-9]+|*[az][az]|[=+-][A-Za-z]+)+/
. Comme le cigare, cs
se compose d'une série d'opérations. Chaque caractère principal spécifie l'opération; La séquence suivante est celle impliquée dans l'opération.
La balise cs
est activée par l'option de ligne de commande --cs
. L'alignement suivant, par exemple:
CGATCGATAAATAGAGTAG---GAATAGCA
|| |||| |||||||||| |||| || |
CGATCG---AATAGAGTAGGTCGAATtGCA
est représenté comme :6-ata:10+gtc:4*at:3
, où :[0-9]+
représente un bloc identique, -ata
représente une suppression, +gtc
une insertion et *at
indique que la base de référence a
est substituée avec une base de requête t
. Il est similaire à la tag MD
SAM mais est autonome et plus facile à analyser.
Si --cs=long
est utilisé, la chaîne cs
contient également des séquences identiques dans l'alignement. L'exemple ci-dessus deviendra =CGATCG-ata=AATAGAGTAG+gtc=GAAT*at=GCA
. La forme longue de cs
code pour les séquences de référence et de requête dans une chaîne. La balise cs
code également des positions d'intron et des signaux d'épissage (voir la page Manap2 Manap2 pour plus de détails).
MinimAP2 est également livré avec un script (Java) Paftools.js qui traite les alignements au format PAF. Il appelle les variantes de l'alignement de l'assemblage à référence, soulève des fichiers de lit en fonction de l'alignement, convertit entre les formats et fournit des services publics pour diverses évaluations. Pour plus de détails, veuillez consulter Misc / Readme.md.
Dans ce qui suit, les options de ligne de commande MinimAP2 ont un tableau de bord et sont mises en évidence en gras. La description peut aider à régler les paramètres minimap2.
Lire -i [= 4g ] bases de référence, extraire ( -k , -w ) -minimagers et les indexer dans une table de hachage.
Bases de requête en lecture -k [= 200m ]. Pour chaque séquence de requête, faites l'étape 3 à 7:
Pour chaque ( -k , -w ) -miminizer sur la requête, vérifiez l'index de référence. Si un minimiseur de référence n'est pas parmi les plus fréquents de -F [= 2E-4 ], collectez-le les événements dans la référence, qui sont appelés graines .
Trier les graines par position dans la référence. Les enchaîner avec une programmation dynamique. Chaque chaîne représente une cartographie potentielle. Pour lire le chevauchement, signalez toutes les chaînes, puis passez à l'étape 8. Pour la cartographie de référence, faites l'étape 5 à 7:
Soit P l'ensemble des mappages primaires, qui est un ensemble vide initialement. Pour chaque chaîne du meilleur au pire selon ses scores de chaînage: si sur la requête, la chaîne se chevauche avec une chaîne en p par - au niveau du masque [= 0,5 ] ou une fraction plus élevée de la chaîne plus courte, marquez la chaîne comme secondaire à la chaîne en p ; Sinon, ajoutez la chaîne à p .
Conserver tous les mappages primaires. Conserver également jusqu'à -n [= 5 ] les mappages secondaires supérieurs si leurs scores de chaînage sont supérieurs à -p [= 0,8 ] de leurs mappages primaires correspondants.
Si l'alignement est demandé, filtrez une graine interne si elle conduit potentiellement à une longue insertion et à une longue suppression. S'étendre à partir de la graine la plus à gauche. Effectuer des alignements globaux entre les graines internes. Divisez la chaîne si le score accumulatif le long de l'alignement global baisse de -z [= 400 ], sans tenir compte des lacunes longues. S'étendre à partir de la graine la plus droite. Chaînes de sortie et leurs alignements.
S'il y a plus de séquences de requête dans l'entrée, passez à l'étape 2 jusqu'à ce qu'il ne reste plus de requêtes.
S'il y a plus de séquences de référence, rouvrez le fichier de requête dès le début et passez à l'étape 1; Sinon, arrêtez.
ManPage MinimAP2.1 fournit une description détaillée des options de ligne de commande MinimAP2 et des balises facultatives. La page FAQ répond à plusieurs questions fréquemment posées. Si vous rencontrez des bogues ou avez d'autres questions ou demandes, vous pouvez soulever un problème sur la page du problème. Il n'y a pas de liste de diffusion spécifique pour le moment.
Si vous utilisez MinimAP2 dans votre travail, veuillez citer:
Li, H. (2018). MINMAP2: Alignement par paire pour les séquences nucléotidiques. Bioinformatics , 34 : 3094-3100. doi: 10.1093 / bioinformatique / bty191
et / ou:
Li, H. (2021). De nouvelles stratégies pour améliorer la précision de l'alignement MinimAP2. Bioinformatics , 37 : 4572-4574. doi: 10.1093 / bioinformatique / btab705
MinimAP2 n'est pas seulement un outil de ligne de commande, mais aussi une bibliothèque de programmation. Il fournit des API C pour construire / charger l'index et aligner les séquences contre l'index. Exemple de fichier.c démontre des utilisations typiques des API C. Le fichier d'en-tête minimap.h donne une documentation API plus détaillée. MinimAP2 vise à garder les API dans cette en-tête stable. Le fichier MMPRIV.h contient des API privées supplémentaires qui peuvent être soumises à des changements fréquemment.
Ce référentiel fournit également des liaisons Python à un sous-ensemble d'API C. Fichier Python / Readme.RST donne la documentation complète; python / minimap2.py montre un exemple. Cette extension Python, Mappy, est également disponible auprès de PYPI via pip install mappy
ou à partir de Bioconda via conda install -c bioconda mappy
.
MinimAP2 peut produire des alignements sous-optimaux à travers de longues régions de faible complexité où les positions des graines peuvent être sous-optimales. Cela ne devrait pas être une grande préoccupation car même l'alignement optimal peut être faux dans de telles régions.
MinimAP2 nécessite des instructions SSE2 sur les processeurs x86 ou néon sur les processeurs ARM. Il est possible d'ajouter un support non-SIMD, mais cela rendrait MinimAP2 plus lent de plusieurs fois.
MinimAP2 ne fonctionne pas avec une seule requête ou une séquence de base de données ~ 2 milliards de bases ou plus (2 147 483 647 pour être exacts). La longueur totale de toutes les séquences peut bien dépasser ce seuil.
MinimAP2 manque souvent de petits exons.