MM2-Fast ist eine beschleunigte Implementierung von Minimap2 auf modernem CPUs. MM2-Schneide beschleunigt alle drei Hauptmodule von Minimap2: (a) Aussaat, (b) Verkettung und (c) paarweise Ausrichtung und erzielen mit AVX512 über Minimap2 bis zu 1,8-fach. MM2-Fast ist ein Drop-In-Austausch von Minimap2, der die gleiche Funktionalität mit genau derselben Ausgabe liefert. In der aktuellen Version werden alle Module mit AVX-512- und AVX2- Vektorisation optimiert. In unserer Veröffentlichung in Nature Computational Science sind detaillierte Benchmark-Ergebnisse verfügbar (https://www.nature.com/articles/s43588-022-00201-8).
Betriebssystem: Linux
MM2-Fast wurde unter Verwendung von G ++ (GCC) 9.2.0 und ICPC Version 19.1.3.304 getestet
Architektur: x86_64 CPUs mit AVX512, AVX2
Gedächtnisanforderung: ~ 30 GB für menschliches Genom
Klonen Sie das MM2-schnelle Github Repo. Der Quellcode kann mithilfe von Make -Befehl kompiliert werden. Es dauert nur ein paar Sekunden.
git clone --recursive https://github.com/bwa-mem2/mm2-fast.git mm2-fast
cd mm2-fast
make
Die Verwendung von MM2-Schnitt ist gleich wie Minimap2. Hier ist ein Beispiel für die Zuordnung von ONT -Lesevorgängen mit Testdaten.
./minimap2 -ax map-ont test/MT-human.fa test/MT-orang.fa > mm2-fast_output
Da dieser Verion von mm2-fast eine beschleunigte Version von Minimap2-V2.24 ist, kann der Ausgang von MM2-Fast gegen Minimap2-V2.24 überprüft werden. Beachten Sie, dass die optimierte Verkettung in MM2-SPAST ausschließlich mit einem Ketten -Ketten-Skip = Infinity ausgeführt werden muss. Beachten Sie, dass mit Parameter max-ketten-skip = unendlich zu einer höheren Kohlgenauigkeit führt. Für die Korrektheitsprüfung sollte Minimap2 daher mit einem größeren Wert des Parameters von Maxketten-Skip ausgeführt werden. Befolgen Sie die folgenden Schritte, um die Genauigkeit von MM2-SPast zu überprüfen.
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
Der mit minimap2 und mm2-Schneid erzeugte Ausgang sollte übereinstimmen.
diff minimap2_output mm2-fast_output > diff_result
Die Datei diff_result
sollte leer sein, was eine Differenz von 0 Zeilen bedeutet.
Die Standardkompilierung mit Make wendet zwei Optimierungen an: Vektorisierte Verkettung und Sequenzausrichtung. Die gelernte Indexes-basierte Aussaat ist standardmäßig deaktiviert, da die Verfügbarkeit von Rost erforderlich ist. Dies liegt daran, dass der gelernte Hash-Tisch eine externe Trainingsbibliothek verwendet, die Rost läuft. Rost ist trivial zu installieren, siehe https://rustup.rs/ und füge seinen Pfad zur .bashrc -Datei hinzu. Die Rostinstallation dauert nur wenige Sekunden. Im Folgenden finden Sie die Schritte, um die erlernte Hash-Tabellenoptimierung in MM2-Fast zu aktivieren:
# 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
Verwenden Sie den folgenden Befehl während der Kompilierung, um MM2-Spast mit allen Optimierungen ausgeschaltet zu kompilieren und wieder auf Standardminimap2 zu wechseln. Dies könnte zum Debuggen nützlich sein.
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
Wir haben bis zu 1,8 -fache Beschleunigung über Datensätze hinweg beobachtet (finden Sie im Papier für weitere Informationen). Zum Beispiel dauert Minimap2 für die zufällig abgetasteten 100K-Lesevorgänge aus "hg002_gm24385_1_2_3_Guppy_3.6.0_prom.fastq.gz" . Unsere Stichprobendatensätze mit 100K -Lesevorgängen finden Sie hier.
Beschleunigung von Minimap2 für langlebige Sequenzierungsanwendungen auf modernen CPUs. Saurabh Kalikar, Chirag Jain, Vasimuddin MD, Sanchit Misra. Nat Comput Sci 2, 78–83 (2022). https://doi.org/10.1038/s43588-022-00201-8
Der ursprüngliche Readme -Inhalt von Minimap2 folgt.
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 ist ein vielseitiges Programm zur Sequenzausrichtung, das DNA- oder mRNA -Sequenzen an einer großen Referenzdatenbank ausrichtet. Typische Anwendungsfälle umfassen: (1) Mapping Pacbio oder Oxford Nanopore Genomic Reads an das menschliche Genom; (2) Überschneidungen zwischen langen Lesevorgängen mit Fehlerrate von bis zu ~ 15%; (3) Spleißausrichtung von Pacbio ISO-seq oder Nanopore-cDNA oder direkter RNA liest sich gegen ein Referenzgenom; (4) Ausrichtung von Illumina Single- oder Paired-End-Lesungen; (5) Ausrichtung der Assembly-to-Assembly; (6) Ausrichtung der vollständigen Genomausrichtung zwischen zwei eng verwandten Arten mit einer Divergenz unter ~ 15%.
Für ~ 10 KB lautende Lesesequenzen ist minimap2 zehnmal schneller als langlebige Mainstream-Mapper wie BLASR, BWA-MEM, NGMLR und GMAP. Es ist genauer bei simulierten langen Lesevorgängen und erzeugt biologisch aussagekräftige Ausrichtung für nachgeschaltete Analysen. Für> 100 bp Illumina Short Reads ist minimap2 dreimal so schnell wie BWA-MEM und Bowtie2 und als genau für simulierte Daten. Detaillierte Bewertungen sind über das Minimap2 -Papier oder die Präprint erhältlich.
Minimap2 ist für X86-64-CPUs optimiert. Sie können vorkompilierte Binärdateien von der Release -Seite erwerben mit:
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
Wenn Sie aus der Quelle kompilieren möchten, müssen Sie einen C -Compiler, GNU MAIME und ZLIB -Entwicklungsdateien installiert haben. Geben Sie dann in das Quellcode -Verzeichnis make
, um zu kompilieren. Wenn Sie Kompilierungsfehler sehen, versuchen Sie make sse2only=1
, um den SSE4 -Code zu deaktivieren, der Minimap2 etwas langsamer macht.
Minimap2 arbeitet auch mit ARM -CPUs zusammen, das die Neon -Anweisungssätze unterstützt. Verwenden Sie für 32 -Bit -Arm -Architekturen (wie ARMV7) make arm_neon=1
. Um für 64 -Bit -Armarchitekturen (wie ARMV8) zu kompilieren, verwenden Sie make arm_neon=1 aarch64=1
.
MinimAP2 kann die SIMD -Bibliothek (SIMDE) verwenden, um die Implementierung in den verschiedenen SIMD -Anweisungssätzen zu portieren. Verwenden Sie zum Kompilieren mit SIMDE make -f Makefile.simde
. Verwenden Sie zum Kompilieren von ARM -CPUs Makefile.simde
mit den oben angegebenen Befehlszeilen mit ARM.
Ohne Optionen nimmt Minimap2 eine Referenzdatenbank und eine Abfragesequenzdatei als Eingabe und erzeugt eine ungefähre Zuordnung ohne Ausrichtung auf Basisebene (IE-Koordinaten sind nur ungefähr und ohne Zigarre in der Ausgabe) im PAF-Format:
minimap2 ref.fa query.fq > approx-mapping.paf
Sie können Minimap2 bitten, Zigarre am cg
-Tag von PAF zu erzeugen mit:
minimap2 -c ref.fa query.fq > alignment.paf
oder Ausgangsausrichtungen im SAM -Format:
minimap2 -a ref.fa query.fq > alignment.sam
Minimap2 funktioniert nahtlos mit Gzip'd Fasta- und Fastq -Formaten als Eingabe. Sie müssen nicht zuerst zwischen FASTA und FASTQ oder FASTQ konvertieren oder gzip'd -Dateien dekomprimieren.
Für das menschliche Referenzgenom dauert Minimap2 einige Minuten, um einen Minimizer -Index für die Referenz vor der Zuordnung zu generieren. Um die Indexierungszeit zu verkürzen, können Sie den Index optional mit Option -D speichern und die Referenzsequenzdatei durch die Indexdatei in der Befehlszeile minimap2 ersetzen:
minimap2 -d ref.mmi ref.fa # indexing
minimap2 -a ref.mmi reads.fq > alignment.sam # alignment
Es ist zu beachten , dass nach dem Erstellen des Index die Indizierungsparameter wie -k , -w , -h und -i während der Zuordnung nicht geändert werden können. Wenn Sie Minimap2 für verschiedene Datentypen ausführen, müssen Sie wahrscheinlich mehrere Indizes mit unterschiedlichen Parametern generieren. Dies unterscheidet Minimap2 von BWA, das immer denselben Index verwendet, unabhängig von Abfragedatentypen.
Minimap2 verwendet denselben Basisalgorithmus für alle Anwendungen. Aufgrund der verschiedenen unterstützenden Datentypen (z. B. kurz gegenüber langen Lesevorgängen; DNA vs -mRNA -Lesevorgängen) muss Minimap2 auf optimale Leistung und Genauigkeit abgestimmt werden. Es wird normalerweise empfohlen, ein Voreinsatz mit Option -x auszuwählen, das gleichzeitig mehrere Parameter festlegt. Die Standardeinstellung entspricht der 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
Der Unterschied zwischen map-pb
und map-ont
besteht darin, dass map-pb
homopolymer-komprimierte Minimierer (HPC) als Samen verwendet, während map-ont
gewöhnliche Minimierer als Samen verwendet. Kaiserliche Bewertung deutet darauf hin, dass HPC -Minimierer die Leistung und Sensibilität verbessern, wenn Pacbio CLR -Lesungen ausgerichtet sind, aber beim Ausrichten von Nanopore -Lesevorgängen verletzt werden.
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
Es gibt verschiedene langlese-RNA-Seq-Technologien, einschließlich tranditioneller cDNA in voller Länge, EST, Pacbio ISO-Seq, Nanopore 2D-cDNA-Seq und direkter RNA-Seq. Sie erzeugen Daten unterschiedlicher Qualität und Eigenschaften. Standardmäßig übernimmt -x splice
die Leseausrichtung in Bezug auf den Transkriptstrang unbekannt. Es versucht zwei Runden der Ausrichtung, um die Orientierung zu schließen und den Strang nach Möglichkeit dem ts
SAM/PAF -Tag zu schreiben. Für ISO-seq, direkte RNA-Seq- und tranditionelle CDNAs in voller Länge wäre es erwünscht, -uf
anzuwenden, um Minimap2 zu erzwingen, um den Vorwärtsranskriptstrang nur zu berücksichtigen. Dies beschleunigt die Ausrichtung mit geringfügiger Verbesserung der Genauigkeit. Für laute Nanopore-RNA-Seq-Lesevorgänge wird empfohlen, eine kleinere K-Mer-Größe für eine erhöhte Empfindlichkeit gegenüber den ersten oder letzten Exons zu verwenden.
Minimap2 bewertet eine Ausrichtung durch die Punktzahl des Subsegments des Maximits, ausgenommen Introns, und markiert die beste Ausrichtung als primär in sAM. Wenn ein gespleißtes Gen auch Pseudogene nicht entleert hat, bevorzugt Minimap2 nicht absichtlich die Spleißausrichtung, obwohl es in der Praxis häufiger die Spleißausrichtung als Primärmarke markiert. Standardmäßig gibt Minimap2 bis zu fünf sekundäre Ausrichtungen aus (dh wahrscheinlich Pseudogene im Kontext der RNA-Seq-Mapping). Dies kann mit Option -n eingestellt werden.
Bei langen RNA -Seq -Lesevorgängen kann Minimap2 Chimer -Alignments erzeugen, die möglicherweise durch Genfusionen/strukturelle Variationen oder durch ein Intron länger als die maxe Intron -Länge -g (standardmäßig 200k) verursacht werden. Im Moment wird nicht empfohlen, einen übermäßig großen -g anzuwenden, da dies Minimap2 verlangsamt und manchmal zu falschen Ausrichtungen führt.
Es ist erwähnenswert, dass standardmäßig -x splice
gt [a/g] bevorzugt. Wenn man eine zusätzliche Basis verbessert, verbessert die Übergangsgenauigkeit für laute Lesevorgänge, verringert jedoch die Genauigkeit, wenn sie sich an den weit verbreiteten SIRV -Steuerungsdaten ausrichten. Dies liegt daran, dass Sirv das evolutionär konservative Spleißsignal nicht achtet. Wenn Sie SIRV studieren, können Sie sich anwenden --splice-flank=no
, um Minimap2 nur modellieren zu lassen.
Da V2.17, kann Minimap2 optional annotierte Gene als Eingabe aufnehmen und an kommentierten Spleißübergängen priorisieren. Um diese Funktion zu verwenden, können Sie
paftools.js gff2bed anno.gff > anno.bed
minimap2 -ax splice --junc-bed anno.bed ref.fa query.fa > aln.sam
Hier ist anno.gff
die Gen -Annotation im GTF- oder GFF3 -Format ( gff2bed
testet automatisch das Format). Die Ausgabe von gff2bed
ist im 12-Spal-Bettformat oder im Bed12-Format. Mit der Option --junc-bed
fügt Minimap2 eine Bonus-Punktzahl (abgestimmt von --junc-bonus
) hinzu, wenn eine ausgerichtete Übergangsübergänge in der Annotation mit einer Kreuzung übereinstimmt. Option --junc-bed
nimmt auch 5-Spal-Bett ein, einschließlich des Strangfeldes. In diesem Fall zeigt jede Zeile eine orientierte Verbindung an.
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
In ähnlicher Weise verwendet ava-pb
HPC-Minimierer, während ava-ont
AVA-Minimierer verwendet werden. Es wird normalerweise nicht empfohlen, die Ausrichtung auf Basisebene im Überlappungsmodus durchzuführen, da es langsam ist und falsch positive Überlappungen erzeugen kann. Wenn Leistung jedoch kein Problem darstellt, können Sie sowieso versuchen, -a
oder -c
hinzuzufügen.
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
Wenn zwei Lesedateien angegeben werden, liest minimap2 aus jeder Datei nacheinander und fusioniert sie in einem verschachtelten Stream intern. Zwei Lesevorgänge werden als gepaart angesehen, wenn sie im Eingangsstrom nebeneinander liegen und denselben Namen haben (mit dem Suffix /[0-9]
wenn sie vorhanden sind). Einzel- und Paar-End-Lesevorgänge können gemischt werden.
Minimap2 funktioniert nicht gut mit kurzen Spleißlesungen. Es gibt viele fähige RNA-Seq-Mapper für kurze Lesevorgänge.
minimap2 -ax asm5 ref.fa asm.fa > aln.sam # assembly to assembly/ref alignment
Für die Ausrichtung des Cross-Spezies in vollem Genus muss das Bewertungssystem nach der Sequenzdivergenz eingestellt werden.
Aufgrund eines Konstruktionsfehlers funktioniert BAM nicht mit Zigarrenzeichenfolgen mit> 65535 Operationen (Sam und Cram -Arbeit). Bei ultra langer Nanopore kann minimap2 jedoch ~ 1% der Lesebasen mit langen Zigarren über die Fähigkeit von BAM übereinstimmen. Wenn Sie solche SAM/Cram in BAM konvertieren, werden Picard und die letzten Samtools einen Fehler werfen und abbrechen. Ältere Samtools und andere Werkzeuge können beschädigte BAM erzeugen.
Um dieses Problem zu vermeiden, können Sie die Option -L
in der Befehlszeile minimap2 hinzufügen. Diese Option verschiebt eine lange Zigarre in das CG
-Tag und hinterlässt eine vollständig abgeschnittene Zigarre an der Sam -Zigarre -Säule. Aktuelle Werkzeuge, die keine Zigarre (z. B. Zusammenführung und Sortierung) lesen, funktionieren immer noch mit solchen BAM -Aufzeichnungen. Werkzeuge, die Zigarre lesen, ignorieren diese Datensätze effektiv. Es wurde entschieden, dass zukünftige Tools nahtlos mit Option -L
generiert werden.
TL; DR : Wenn Sie mit ultra -langen Lesungen arbeiten und Tools verwenden, die nur BAM -Dateien verarbeiten, fügen Sie die Option -L
hinzu.
Das cs
SAM/PAF -Tag kodiert Basen bei Fehlanpassungen und Indels. Es entspricht dem regulären Ausdruck /(:[0-9]+|*[az][az]|[=+-][A-Za-z]+)+/
. Wie Zigarre besteht cs
aus einer Reihe von Operationen. Jedes führende Zeichen gibt die Operation an; Die folgende Sequenz ist die am Operation beteiligt.
Das cs
-Tag ist per Befehlszeilenoption --cs
aktiviert. Die folgende Ausrichtung zum Beispiel:
CGATCGATAAATAGAGTAG---GAATAGCA
|| |||| |||||||||| |||| || |
CGATCG---AATAGAGTAGGTCGAATtGCA
ist dargestellt als :6-ata:10+gtc:4*at:3
, wobei :[0-9]+
einen identischen Block repräsentiert, -ata
eine Deletion, +gtc
eine Insertion und *at
der Referenzbasis a
wird ersetzt mit einer Abfragebasis t
. Es ähnelt dem MD
SAM -Tag, ist aber eigenständig und leichter analysiert.
Wenn --cs=long
verwendet wird, enthält die cs
-Zeichenfolge auch identische Sequenzen in der Ausrichtung. Das obige Beispiel wird zu =CGATCG-ata=AATAGAGTAG+gtc=GAAT*at=GCA
. Die lange Form von cs
codiert sowohl Referenz- als auch Abfragesequenzen in einer Zeichenfolge. Das cs
-Tag codiert auch Intronpositionen und Spleißsignale (Details finden Sie in der Manpage von Minimap2).
Minimap2 wird außerdem mit einem (Java) -Skript paftools.js geliefert, das Ausrichtungen im PAF -Format verarbeitet. Es ruft Varianten von der Ausrichtung der Montage-zu-Referenz-Ausrichtung auf, hebt über Bettdateien auf der Grundlage der Ausrichtung, konvertiert zwischen Formaten und bietet Dienstprogramme für verschiedene Bewertungen. Weitere Informationen finden Sie unter misc/readme.md.
Im Folgenden haben Minimap2 -Befehlszeilenoptionen einen Armaturenbrett vor sich und sind fett hervorgehoben. Die Beschreibung kann dazu beitragen, Minimap2 -Parameter einzustellen.
Read -i [= 4G ] Referenzbasen, extrahieren ( -k , -w ) -Minimizer und indexieren Sie sie in einer Hash -Tabelle.
Read -k [= 200 m ] Abfragebasen. Führen Sie für jede Abfragesequenz Schritt 3 bis 7 aus:
Überprüfen Sie für jedes ( -k , -w ) -Minimizer auf der Abfrage den Referenzindex. Wenn ein Referenzminimierer nicht zu den oberen -f [= 2E -4 ] am häufigsten gehört, sammeln Sie die Vorkommen in der Referenz, die als Samen bezeichnet werden.
Sortieren Sie Samen nach Position in der Referenz. Ketten Sie sie mit dynamischer Programmierung. Jede Kette repräsentiert eine potenzielle Zuordnung. Melden Sie alle Ketten, um überlappend zu lesen, alle Ketten und überschreiten Sie dann mit Schritt 8. Durch die Referenzzuordnung werden Schritt 5 bis 7 aus.
Sei P der Satz primärer Mappings, die zunächst ein leerer Satz ist. Für jede Kette von den besten bis zum Schlimmsten entsprechend der Kettungsbewertung: Wenn auf der Abfrage die Kette mit einer Kette in p by -Maskenebene [= 0,5 ] oder einen höheren Bruch der kürzeren Kette ist, markieren Sie die Kette als Kette sekundär zur Kette in p ; Andernfalls fügen Sie die Kette zu p hinzu.
Behalten alle primären Zuordnungen. Bleiben Sie auch bis zu -n [= 5 ] Top Secondary Mappings, wenn ihre Kettenwerte höher sind als -p [= 0,8 ] ihrer entsprechenden primären Zuordnungen.
Wenn eine Ausrichtung angefordert wird, filtern Sie einen internen Saatgut heraus, wenn sie möglicherweise sowohl zu einer langen Einfügung als auch zu einer langen Löschung führt. Aus dem links am meisten sammeln. Führen Sie globale Ausrichtungen zwischen internen Samen durch. Teilen Sie die Kette auf, wenn der akkumulative Score entlang der globalen Ausrichtung um -z [= 400 ] sinkt und lange Lücken ignoriert. Aus dem rechtsem Saatgut erstrecken. Ausgangsketten und ihre Ausrichtungen.
Wenn der Eingang mehr Abfragsequenzen enthält, gehen Sie zu Schritt 2, bis keine weiteren Abfragen übrig sind.
Wenn es mehr Referenzsequenzen gibt, öffnen Sie die Abfragedatei vom Start und gehen Sie zu Schritt 1. Ansonsten stoppen Sie.
Manpage Minimap2.1 enthält eine detaillierte Beschreibung der Befehlszeilenoptionen und optionalen Tags von Minimap2. Die FAQ -Seite beantwortet mehrere häufig gestellte Fragen. Wenn Sie auf Fehler stoßen oder weitere Fragen oder Anfragen haben, können Sie auf der Ausgabeseite ein Problem aufwerfen. Es gibt vorerst keine bestimmte Mailingliste.
Wenn Sie Minimap2 in Ihrer Arbeit verwenden, zitieren Sie bitte:
Li, H. (2018). Minimap2: paarweise Ausrichtung für Nukleotidsequenzen. Bioinformatik , 34 : 3094-3100. doi: 10.1093/bioinformatics/bty191
und/oder:
Li, H. (2021). Neue Strategien zur Verbesserung der Genauigkeit der Minimap2 -Ausrichtung. Bioinformatik , 37 : 4572-4574. doi: 10.1093/bioinformatics/btab705
Minimap2 ist nicht nur ein Befehlszeilen -Tool, sondern auch eine Programmierbibliothek. Es bietet C -APIs zum Erstellen/Lastindex und zum Ausrichten von Sequenzen an den Index. Datei Beispiel.c zeigt typische Verwendungen von C -APIs. Header -Datei minimap.h enthält eine detailliertere API -Dokumentation. Minimap2 zielt darauf ab, APIs in diesem Header stabil zu halten. Datei mmpriv.h enthält zusätzliche private APIs, die häufig Änderungen ausgesetzt werden können.
Dieses Repository liefert auch Pythonbindungen an eine Teilmenge von C -APIs. Datei python/readme.rst gibt die vollständige Dokumentation; Python/minimap2.Py zeigt ein Beispiel. Diese Python -Erweiterung, Mappy, ist auch bei PYPI über pip install mappy
oder bei Bioconda über conda install -c bioconda mappy
erhältlich.
Minimap2 kann suboptimale Alignments durch lange Regionen mit niedriger Komplexität erzeugen, in denen Saatgutpositionen suboptimal sein können. Dies sollte kein großes Problem sein, da selbst die optimale Ausrichtung in solchen Regionen möglicherweise falsch sein kann.
Minimap2 erfordert SSE2 -Anweisungen zu x86 CPUs oder Neon auf ARM -CPUs. Es ist möglich, Nicht-SIMD-Unterstützung hinzuzufügen, aber es würde minimap2 mehrmals langsamer machen.
Minimap2 funktioniert nicht mit einer einzelnen Abfrage- oder Datenbanksequenz ~ 2 Milliarden Basen oder länger (2,147.483.647, um genau zu sein). Die Gesamtlänge aller Sequenzen kann diesen Schwellenwert gut überschreiten.
Minimap2 vermisst oft kleine Exons.