Burrows -Wheeler -Transformation
Klasse | Vorverarbeitung für verlustfreie Kompression |
---|---|
Datenstruktur | Saite |
Schlimmsten Fall Leistung | An) |
Schlimmsten Fall Raumkomplexität | An) |
Das Burrows -Wheeler -Transformation (BWT, auch genannt Blocksortierkomprimierung) Um ordnet a Zeichenkette in Läufe ähnlicher Zeichen. Dies ist nützlich für die Komprimierung, da es tendenziell leicht zu komprimieren kann Umwandlung zu der Front-Transformation und Kodierung der Lauflänge. Noch wichtiger ist, dass die Transformation ist reversibel, ohne zusätzliche Daten außer der Position des ersten ursprünglichen Charakters zu speichern. Die BWT ist somit eine "freie" Methode zur Verbesserung der Effizienz von Textkomprimierungsalgorithmen und kostet nur eine zusätzliche Berechnung. Die Burrows -Wheeler -Transformation ist eine Algorithmus Wird verwendet, um Daten für die Verwendung mit der Verwendung mit Datenkompression Techniken wie BZIP2. Es wurde von erfunden von Michael Burrows und David Wheeler 1994 während Burrows arbeitete bei Dec Systems Research Center in Palo Alto, Kalifornien. Es basiert auf einer zuvor unveröffentlichten Transformation, die Wheeler 1983 entdeckt hat. Der Algorithmus kann mit a effizient implementiert werden Suffix -Array somit lineare Zeitkomplexität erreichen.[1]
Beschreibung
Wenn ein Zeichenkette wird durch die BWT, die Transformation, transformiert Permute die Reihenfolge der Charaktere. Wenn die ursprüngliche Zeichenfolge häufig mehrere Substrings aufwies, hat die transformierte Zeichenfolge mehrere Stellen, an denen ein einzelnes Zeichen mehrmals hintereinander wiederholt wird.
Zum Beispiel:
Eingang | Six.mixed.pixies.sift.SIXTY.PIXIE.DUST.BOXES |
---|---|
Ausgabe | Texydst.e.ixixxxssmpps.b..e.s.eusfxdiioiiiiT [2] |
Die Ausgabe ist einfacher zu komprimieren, da er viele wiederholte Zeichen hat. In diesem Beispiel enthält die transformierte Zeichenfolge sechs Läufe identischer Zeichen:Xx
AnwesendSs
AnwesendPp
Anwesend..
AnwesendII
, undIII
, die zusammen 13 aus den 44 Zeichen machen.
Beispiel
Die Transformation erfolgt durch Sortierung all die Kreisschichtverschiebungen eines Textes in Lexikografische Ordnung und durch Extrahieren der letzten Spalte und des Index der ursprünglichen Zeichenfolge in der Menge sortierter Permutationen von S
.
Bei einer Eingangszeichenfolge gegeben S = ^Banane |
(Schritt 1 in der folgenden Tabelle) drehen Sie es N Zeiten (Schritt 2), wo N = 8
ist die Länge der S
Zeichenfolge, die auch das Symbol berücksichtigt ^
Darstellung des Beginns der Zeichenfolge und des Rotes darstellen | Charakter, das die 'darstellt'Eof'Zeiger; Diese Rotationen oder kreisförmigen Verschiebungen werden dann lexikografisch sortiert (Schritt 3). Die Ausgabe der Codierungsphase ist die letzte Spalte L = bnn^aa | a
Nach Schritt 3 und dem Index (0 basierend) I
der Zeile, die die ursprüngliche Zeichenfolge enthält S
, in diesem Fall I = 7
.
Transformation | ||||
---|---|---|---|---|
1. Eingabe | 2. Alles Rotationen | 3. sortieren in lexikalische Ordnung | 4. Nehmen Sie die letzte Spalte | 5. Ausgabe |
^Banane| | ^Banane| |^Banane a|^Banan na|^Bana Ana|^Ban Nana|^Ba Anana|^B Banane|^ | ANana|^BAN / A|^VerbotA|^BananBAnana|^NAna|^BaNA|^Bana^BANANE| |^Banane | Anana|^B Ana|^BaN A|^BanaN BANANE|^ Nana|^BA N / A|^VerbotA ^Banane| |^BananA | Bnn^aa|EIN |
Folgende Pseudocode gibt eine einfache (wenn auch ineffiziente) Möglichkeit, die BWT und seine inverse zu berechnen. Es wird angenommen, dass die Eingabezeichenfolge s
Enthält ein spezielles Zeichen "eof", das das letzte Zeichen ist und nirgendwo sonst im Text auftritt.
Funktion BWT (Saite s) Erstellen einer Tabelle, in der die Zeilen alle möglichen Rotationen der S -Sortierreihen alphabetisch sind Rückkehr (letzte Spalte der Tabelle)
Funktion inverseBWT (Saite s) leere Tabelle erstellen wiederholen Länge (s) mal // Einfügung erstellt zuerst die erste Spalte, die S als Spalte der Tabelle vor der ersten Spalte der Tabellensorteilen der Tabelle alphabetisch eingesetzt wird Rückkehr (Zeile, die mit dem 'eof' Charakter endet)
Erläuterung
Um zu verstehen, warum dies tatsächlich mehr kompressbare Daten erzeugt, sollten Sie einen langen englischen Text, der häufig das Wort "Das" enthält, Transformation in Betracht ziehen. Sortieren der Drehungen dieses Textes Gruppen Rotationen, beginnend mit "er" zusammen und der letzte Charakter dieser Rotation (was auch der Charakter vor dem "He") ist, wird normalerweise "t" sein, daher würde das Ergebnis der Transformation enthalten Eine Reihe von "T" -Scharakteren zusammen mit den möglicherweise weniger kommenden Ausnahmen (z. B. wenn sie "ache" enthält) gemischt. Es ist also zu erkennen, dass der Erfolg dieser Transformation von einem Wert abhängt, der eine hohe Wahrscheinlichkeit des Auftretens zuvor auftritt Eine Sequenz, so dass es im Allgemeinen ziemlich lange Stichproben (zumindest einige Kilobyten) von geeigneten Daten (wie Text) benötigt.
Das Bemerkenswertes an der BWT ist nicht, dass es eine leichter codierende Ausgabe erzeugt - eine gewöhnliche Art würde das tun -, aber dass dies der Fall ist reversibel, sodass das Originaldokument aus den letzten Spaltendaten neu generiert werden kann.
Das Inverse kann so verstanden werden. Nehmen Sie den Final -Tabelle im BWT -Algorithmus und löschen Sie alle bis auf die letzte Spalte. Bei nur diesen Informationen können Sie die erste Spalte leicht rekonstruieren. Die letzte Spalte zeigt Ihnen alle Zeichen im Text an. Sortieren Sie diese Zeichen also alphabetisch, um die erste Spalte zu erhalten. Dann geben Ihnen die letzten und ersten Spalten (jeder Zeile) zusammen alle Paare von aufeinanderfolgenden Charakteren im Dokument, in dem Paare zyklisch genommen werden, damit das letzte und erste Charakter ein Paar bildet. Das Sortieren der Paare der Paare gibt die erste und zweitens Säulen. Wenn Sie auf diese Weise fortgesetzt werden, können Sie die gesamte Liste rekonstruieren. Dann ist die Zeile mit dem Zeichen "Ende der Datei" am Ende der Originaltext. Das Umkehren des obigen Beispiels erfolgt wie folgt:
Inverse Transformation | |||
---|---|---|---|
Eingang | |||
Bnn^aa|EIN | |||
Fügen Sie 1 hinzu | Sortieren 1 | Fügen Sie 2 hinzu | Sortieren 2 |
B n n ^ a a| EIN | A a a b n n ^| | Ba na na ^b a an eine|^ A| | Ein a a| Ba na na ^b|^ |
Fügen Sie 3 hinzu | Sortieren 3 | Fügen Sie 4 hinzu | Sortieren 4 |
Ban Nan Na| ^Ba ana ana|^B a|^ | Ana ana a|^ Ban nan na| ^Ba|^B | Bana Nana Na|^ ^ Ban anan ana| |^Ba a|^B | Anan Ana| EIN|^B bana nana na|^ ^ Ban|^Ba |
Fügen Sie 5 hinzu | Sortieren Sie 5 | Fügen Sie 6 hinzu | Sortieren Sie 6 |
Banan Nana| N / A|^B ^Bana Anana Ana|^|^Ban a|^Ba | Anana Ana|^ A|^Ba Banan Nana| N / A|Bana|^Verbot | Banana nana|^ Na|^Ba ^Banan Anana| Ana|^B|^Bana a|^Verbot | Anana| Ana|^B a|^Banana nana verbieten|^ Na|Ba ^Banan|^Bana |
Fügen Sie 7 hinzu | Sortieren Sie 7 | Fügen Sie 8 hinzu | Sortieren Sie 8 |
BANANE| Nana|^B na|^Banana Anana|^ Ana|^Ba|^Banan a|^Bana | Anana|^ Ana|^Ba a|^Bana Banane| Nana|^B na|^Banana Banane|^Banan | BANANE|^ Nana|^Ba na|^Bana ^Banane| Anana|^B ana|^Verbot|^Banane a|^Banan | Anana|^B ana|^Ban a|^Banan Banane|^ Nana|^Ba na|^Bana ^Banane| |^Banane |
Ausgabe | |||
^Banane| |
Optimierung
Eine Anzahl von Optimierungen Kann diese Algorithmen effizienter laufen lassen, ohne die Ausgabe zu ändern. Es ist nicht erforderlich, die Tabelle entweder im Encoder oder im Decoder darzustellen. Im Encoder kann jede Zeile der Tabelle durch einen einzelnen Zeiger in die Saiten und die mit den Indizes durchgeführte Sortierungen dargestellt werden. Im Decoder ist auch nicht erforderlich, den Tisch zu speichern, und tatsächlich ist überhaupt keine Sortierung erforderlich. In der Zeit proportional zur Alphabetgröße und der Saitenlänge kann die dekodierte Zeichenfolge von rechts nach links jeweils jeweils ein Zeichen erzeugt werden. Ein "Charakter" im Algorithmus kann ein Byte oder ein bisschen oder eine andere bequeme Größe sein.
Man kann auch die Beobachtung machen, dass die codierte Zeichenfolge mathematisch als einfache Modifikation der berechnet werden kann Suffix -Arrayund Suffix -Arrays können mit linearer Zeit und Speicher berechnet werden. Die BWT kann in Bezug auf das Suffix-Array SA von Text T als (1-basierte Indexierung) definiert werden:
Es besteht keine Notwendigkeit, einen tatsächlichen "eof" -Scharakter zu haben. Stattdessen kann ein Zeiger verwendet werden, der sich daran erinnert, wo in einer Zeichenfolge der "eof" sein würde, wenn es existieren würde. Bei diesem Ansatz muss die Ausgabe des BWT sowohl die transformierte Zeichenfolge als auch den Endwert des Zeigers enthalten. Die inverse Transformation schrumpft sie dann wieder auf die ursprüngliche Größe: Sie erhält eine Zeichenfolge und einen Zeiger und gibt nur eine Zeichenfolge zurück.
Eine vollständige Beschreibung der Algorithmen finden Sie in Höhlen und Wheeler -Papier oder in einer Reihe von Online -Quellen.[1] Die Algorithmen variieren etwas, ob EOF verwendet wird und in welcher Richtung die Sortierung durchgeführt wurde. Tatsächlich verwendete die ursprüngliche Formulierung keinen EOF -Marker.[4]
Bijektive Variante
Da eine Drehung der Eingangszeichenfolge zu derselben transformierten Zeichenfolge führt, kann die BWT nicht invertiert werden, ohne einen EOF -Marker zum Ende des Eingangs zu addieren oder etwas Äquivalentes zu tun, sodass die Eingangszeichenfolge von all ihren Rotationen unterschieden werden kann. Durch die Erhöhung der Größe des Alphabets (durch Anhängen des EOF -Zeichens) ist die späteren Komprimierungsschritte unangenehm.
Da ist ein Bijektiv Version der Transformation, durch die die transformierte Zeichenfolge das Original eindeutig identifiziert, und die beiden haben die gleiche Länge und enthalten genau die gleichen Zeichen, nur in einer anderen Reihenfolge.[5][6]
Die bijektive Transformation wird berechnet, indem die Eingabe in eine nicht erhöhte Sequenz von berechnet wird Lyndon Wörter; Eine solche Faktorisierung existiert und ist einzigartig durch die Chen -Fox -Lyndon -Theorem,[7] und kann in der linearen Zeit gefunden werden.[8] Der Algorithmus sortiert die Rotationen aller Wörter; Wie in den Burrows -Wheeler -Transformationen erzeugt dies eine sortierte Sequenz von n Saiten. Die transformierte Zeichenfolge wird dann erhalten, indem das endgültige Zeichen jeder Zeichenfolge in dieser sortierten Liste ausgewählt wird. Die einzige wichtige Einschränkung hier ist, dass Saiten unterschiedlicher Längen nicht auf die übliche Weise bestellt werden. Die beiden Saiten werden für immer wiederholt und die unendlichen Wiederholungen werden sortiert. Zum Beispiel "oro" vorausgeht "oder" weil "orooro ..." vorausgeht "Ororor ...".
Zum Beispiel der Text "^Banane|"wird in" Annbaa^ verwandelt|"Durch diese Schritte (das Rot | Zeichen zeigt die an Eof Zeiger) in der ursprünglichen Zeichenfolge. Der EOF-Charakter ist in der bijektiven Transformation nicht benötigt, so dass er während der Transformation fallen gelassen und an seinen richtigen Ort in der Datei neu angepasst wird.
Die Zeichenfolge wird in Lyndon -Wörter unterteilt, sodass die Wörter in der Sequenz unter Verwendung der obigen Vergleichsmethode abnehmen. (Beachten Sie, dass wir '^' als Nachfolge anderer Zeichen sortieren.) "^Banana" wird (^) (b) (an) (an) (a).
Bijektive Transformation | ||||
---|---|---|---|---|
Eingang | Alle Rotationen | Alphabetisch sortiert | Letzte Spalte von rotiertem Lyndon -Wort | Ausgabe |
^Banane| | ^^^^^^^^^^... (^)BBBBBBBB ... (b)AnanAnan ... (an)NanaNana ... (Na)AnanAnan ... (an)NanaNana ... (Na)AAaaaaaa ... (a) | AAaaaaaa ... (a)ANananer ... (an)ANananer ... (an)BBBBBBBB ... (b)NAnanana ... (NA)NAnanana ... (NA)^^^^^^^^^^... (^) | AAAAAAAA ... ((A) EINNAnanan ... (aN) EINNAnanan ... (aN))BBBBBBBB ... (B) NANanana ... (nA) NANanana ... (nA))^^^^^^^^^ ... ((^)) | Annbaa^| |
Inverse bijektive Transformation | |||
---|---|---|---|
Eingang | |||
Annbaa^ | |||
Fügen Sie 1 hinzu | Sortieren 1 | Fügen Sie 2 hinzu | Sortieren 2 |
A n n b a ^ ^ | A a a b n n ^ | Aa na na bb an ^^ | Aa an bb na ^^ |
Fügen Sie 3 hinzu | Sortieren 3 | Fügen Sie 4 hinzu | Sortieren 4 |
Aaa nan nan bbb ana ana ^^^ | Aaa ana bbb nan nan ^^^ | Aaaa nana nana bbbb anan anan ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | AAAA ANAN ANAN BBBB NANA NANA ^^^^ |
Ausgabe | |||
^Banane |
Bis zum letzten Schritt ist der Prozess identisch mit dem umgekehrten Höhlen -Wheeler -Prozess, aber hier wird er nicht unbedingt Drehungen einer einzelnen Sequenz verleihen. Es gibt stattdessen Rotationen von Lyndon -Wörtern (die sich mit fortgesetzter Vorgang wiederholen werden). Hier sehen wir (Wiederholungen) vier verschiedene Lyndon -Wörter: (a), (an) (zweimal), (b) und (^). (Nana ... repräsentiert kein bestimmtes Wort, da es ein Zyklus von Anan ist ....) An diesem Punkt werden diese Wörter in umgekehrte Reihenfolge sortiert: (^), (b), (an), ( An), (a). Diese werden dann verkettet, um zu bekommen
- ^Banane
Die Burrows -Wheeler -Transformation kann tatsächlich als Sonderfall dieser bijektiven Transformation angesehen werden. Anstelle der traditionellen Einführung eines neuen Buchstabens von außerhalb unseres Alphabets, um das Ende der Zeichenfolge zu bezeichnen, können wir einen neuen Buchstaben einführen, der alle vorhandenen Buchstaben verglichen wird, die zu Beginn der Saite gestellt werden. Die gesamte Saite ist jetzt ein Lyndon -Wort, und es führt daher zu einem transformierten Ergebnis, das das Lyndon -Wort zurückgibt, ohne dass sich am Ende nicht wieder zusammensetzen muss.
In Bezug auf den transformierten Text unterscheidet sich nur vom Ergebnis von BWT durch einen Charakter pro Lyndon -Wort. Wenn die Eingabe beispielsweise in sechs Lyndon -Wörter zerlegt wird, unterscheidet sich die Ausgabe nur in sechs Zeichen. Das Anwenden der bijektiven Transformation gibt beispielsweise an:
Eingang | Six.mixed.pixies.sift.SIXTY.PIXIE.DUST.BOXES |
---|---|
Lyndon Wörter | Six.mixed.pixies.sift.SIXTY.PIXIE.DUST.BOXES |
Ausgabe | Steydst.e.ixxiixxsmppxs.b..ee..susfxdioiiiit |
Die bijektive Transformation umfasst acht Läufe identischer Zeichen. Diese Läufe sind in Ordnung: Xx
AnwesendII
AnwesendXx
AnwesendPp
Anwesend..
AnwesendEE
Anwesend..
, undIIII
.
Insgesamt werden in diesen Läufen 18 Zeichen verwendet.
Dynamische Burrows -Wheeler -Transformation
Wenn ein Text bearbeitet wird, ändern sich seine Höhlen -Rheeler -Transformation. Salson et al.[9] Schlagen Sie einen Algorithmus vor, der die Burrows -Wheeler -Transformation eines bearbeiteten Textes aus dem des Originaltextes abzieht und eine begrenzte Anzahl lokaler Neubestellungen in der ursprünglichen Burrows -Wheeler -Transformation durchführt, die schneller sein kann als die Konstruktion der Burrows -Wheeler -Transformation der Bearbeiteten Text direkt.
Beispielimplementierung
Dies Python Implementierung ist die Geschwindigkeit der Einfachheit: Das Programm ist kurz, dauert jedoch mehr als die lineare Zeit, die in einer praktischen Implementierung erwünscht wäre. Es macht im Wesentlichen das, was der Pseudocode -Abschnitt tut.
Verwendung der STX/ETX -Kontrollcodes um den Start und Ende des Textes zu markieren und zu verwenden S [i:] + s [: i]
um das zu konstruieren i
TH Rotation von s
Die Vorwärtstransformation nimmt den letzten Charakter jeder der sortierten Zeilen an:
def BWT(s: str) -> str: "" "Burrows -Wheeler -Transformation in Eingabezeichenfolge anwenden." "" " behaupten "\002" nicht in s und "\003" nicht in s, "Eingabezeichenfolge kann keine STX- und ETX -Zeichen enthalten" s = "\002" + s + "\003" # Start und Ende des Textmarkers hinzufügen Tisch = sortiert(s[i:] + s[:i] zum i in Angebot(Len(s))) # Rotationen der Zeichenfolge last_column = [die Zeile[-1:] zum die Zeile in Tisch] # Letzte Zeichen jeder Zeile Rückkehr "" ".beitreten(last_column) # Die Liste von Zeichen in Zeichenfolge konvertieren
Die inverse Transformation fügt wiederholt ein r
als linke Spalte der Tabelle und sortiert die Tabelle. Nachdem die gesamte Tabelle erstellt wurde, gibt es die Zeile zurück, die mit ETX endet, abzüglich des STX und ETX.
def ibwt(r: str) -> str: "" "Inverse Höhlen anwenden - RHEELER -Transformation". "" " Tisch = ["" "] * Len(r) # Leere Tabelle machen zum i in Angebot(Len(r)): Tisch = sortiert(r[i] + Tisch[i] zum i in Angebot(Len(r))) # Fügen Sie eine Spalte von r hinzu s = [die Zeile zum die Zeile in Tisch wenn die Zeile.endet mit("\003")] [0] # Die richtige Zeile finden (endet in ETX) Rückkehr s.rstrip("\003").Streifen("\002") # Werden Sie Start- und Endmarker los
Nach Angaben der Implementierung von Manzini ist es gleichwertig, ein einfaches zu verwenden Nullcharakter Suffix stattdessen. Die Sortierung sollte in durchgeführt werden Colexikographie (String lesen von rechts nach links), d.h. sorted(..., key=lambda s: s[::-1])
in Python.[4] (Die obigen Kontrollcodes erfüllen tatsächlich nicht, dass EOF das letzte Zeichen ist. Die beiden Codes sind tatsächlich die tatsächlich die Erste. Die Rotation gilt dennoch.)
BWT -Anwendungen
Als ein Verlustfreie Kompression Algorithmus Die Burrow -Wheeler -Transformation bietet die wichtige Qualität, dass seine Codierung reversibel ist und daher die ursprünglichen Daten aus der resultierenden Komprimierung wiederhergestellt werden können. Die verlustfreie Qualität des Burrow -Algorithmus hat für verschiedene Algorithmen mit unterschiedlichen Zwecken bereitgestellt. Um nur einige zu nennen, wird Burrows Wheeler -Transformation in Algorithmen für verwendet Sequenzausrichtung, Bildkompression, Datenkompressionusw. Folgendes ist eine Zusammenstellung einiger Verwendungszwecke, die den Höhlen -Wheeler -Transformationen gegeben haben.
BWT für die Sequenzausrichtung
Das Aufkommen von Sequenzierung der nächsten Generation (NGS) Techniken Ende des Jahrzehnts 2000er Jahre haben zu einer weiteren Anwendung der Burrows -Wheeler -Transformation geführt. In NGS, DNA wird in kleinen Stücke fragmentiert, von denen die ersten Basen sind sequenziert, liefert mehrere Millionen von "Reads", jeweils 30 bis 500 Basispaare ("DNA -Zeichen") lang. In vielen Experimenten, z. B. in Chip-seqDie Aufgabe besteht nun darin, diese Lesungen an einer Referenz auszurichten Genom, d.h. Es wurde eine Reihe von Ausrichtsprogrammen veröffentlicht, auf die sich zunächst auf diese Aufgabe stützte Hashing (z. B. Eland, Seife,[10] oder maq[11]). Um die Speicheranforderung für die Sequenzausrichtung zu verringern, wurden mehrere Ausrichtungsprogramme entwickelt ((Krawatte,[12] BWA,[13] und SOAP2[14]) die die Burrows -Wheeler -Transformation verwenden.
BWT für die Bildkomprimierung
Die Transformation von Burrows -Wheeler hat sich als grundlegend für grundlegend erwiesen Bildkompression Anwendungen. Zum Beispiel, [15] Zeigten eine Kompressionspipeline basierend auf der Anwendung der Burrows-Wheeler-Transformation, gefolgt von Inversion, Run-Länge und arithmetischen Encodern. Die in diesem Fall entwickelte Pipeline ist mit einem Inversionscodierer (BWIC) als Burrows -Wheeler -Transformation bekannt. Es wird gezeigt, dass die von BWIC gezeigten Ergebnisse die Komprimierungsleistung von bekannten und weit verbreiteten Algorithmen wie übertreffen LUSTLESS_JPEG und JPEG_2000. Es wird gezeigt, dass BWIC übertrifft LUSTLESS_JPEG und JPEG_2000 In Bezug auf die endgültige Kompressionsgröße der Radiographie medizinischen Bilder in der Größenordnung von 5,1% bzw. 4,1%. Die Verbesserungen werden durch Kombination von BWIC und einem vor-Bwic-Scan des Bildes in vertikaler Schlangenordnung erzielt. In jüngerer Zeit zusätzliche Arbeiten wie die von [16] haben die Implementierung der Burrows -Wheeler -Transformation in Verbindung mit dem bekannten gezeigt Umwandlung zu der Front-Transformation(MTF) Erreichen Sie nahezu verlustfreie Komprimierung von Bildern.
BWT zur Komprimierung genomischer Datenbanken
Cox et al. [17] präsentierte ein genomisches Kompressionsschema, das BWT als Algorithmus verwendet, der während der ersten Stufe der Komprimierung mehrerer genomischer Datensätze angewendet wurde, einschließlich der humanen genomischen Informationen. Ihre Arbeit schlug vor, dass die BWT-Komprimierung durch einen Komprimierungsmechanismus im zweiten Stadium verbessert werden könnte, der als gleiche als previöse Codierung ("SAP") bezeichnet wird, wodurch die Tatsache verwendet wird, dass Suffixe von zwei oder mehr Präfixbuchstaben gleich sein könnten. Mit dem Kompressionsmechanismus BWT-SAP haben Cox et al. zeigten, dass in der genomischen Datenbank ERA015743, 135,5 GB Größe, das Komprimierungsschema BWT-SAP das Era015743-Datensatz um etwa 94%auf 8,2 GB komprimiert.
BWT für die Sequenzvorhersage
BWT hat sich auch als nützlich bei der Sequenzvorhersage erwiesen, die ein gemeinsamer Studienbereich in ist maschinelles Lernen und Verarbeitung natürlicher Sprache. Insbesondere Ktistakis et al. [18] schlug ein Sequenzvorhersageschema namens Subseq vor, das die verlustfreie Komprimierung der Daten der Burrows -Wheeler -Transformation ausnutzt. Subseq nutzt BWT, indem er die extrahiert FM-Index und dann eine Reihe von Operationen ausführen Suffix. Die Vorhersagen werden dann basierend auf einem Gewicht klassifiziert und in ein Array gesteckt, aus dem das Element mit dem höchsten Gewicht als Vorhersage aus dem Subseq -Algorithmus angegeben wird. Suchseq wurde gezeigt, dass sie übertreffen Der letzte Stand der Technik Algorithmen zur Sequenzvorhersage sowohl in Bezug auf die Trainingszeit als auch in Bezug auf die Genauigkeit.
Verweise
- ^ a b Burrows, Michael; Wheeler, David J. (1994), Ein blocksortierter verlustloser Datenkomprimierungsalgorithmus, Technischer Bericht 124, Digital Equipment Corporation
- ^ "Adrien-Mogenet/scala-bwt". GitHub. Abgerufen 19. April 2018.
- ^ Simpson, Jared T.; Durbin, Richard (2010-06-15). "Effiziente Konstruktion eines Montage-String-Diagramms mit dem FM-Index". Bioinformatik. 26 (12): i367 - I373. doi:10.1093/bioinformatics/btq217. ISSN 1367-4803. PMC 2881401. PMID 20529929.
- ^ a b Manzini, Giovanni (1999-08-18). "Die Burrows -Wheeler -Transformation: Theorie und Praxis" (PDF). Mathematische Grundlagen der Informatik 1999: 24. Internationales Symposium, MFCS'99 Szklarska Poreba, Polen, 6. bis 10. September 1999 Proceedings. Springer Science & Business Media. ISBN 9783540664086.
- ^ Gil, J.; Scott, D. A. (2009), Eine bijektive String -Sortiertransformation (PDF)
- ^ Kufleitner, Manfred (2009), "über bijektive Varianten der Burrows -Wheeler -Transformation", in Holub, Jan; Žďárek, Jan (Hrsg.), Prager Stringologiekonferenz, S. 65–69, Arxiv:0908.0239, Bibcode:2009ArXIV0908.0239K.
- ^ * Lothaire, M. (1997),, Kombinatorik auf Wörtern, Encyclopedia of Mathematics und ihre Anwendungen, vol. 17, Perrin, D.; Reuutenauer, C.; Berstel, J.; Pin, J. E.; Pirillo, G.; Fata, D.; Sakarovitch, J.; Simon, ich.; Schützenberger, M. P.; Choffrut, C.; Cori, R.; Lyndon, Roger; Rota, Gian-Carlo. Vorwort von Roger Lyndon (2. Aufl.), Cambridge University Press, p. 67, ISBN 978-0-521-59924-5, Zbl 0874.20040
- ^ Duval, Jean-Pierre (1983), "faktorisieren Worte über ein geordnetes Alphabet", Journal of Algorithmen, 4 (4): 363–381, doi:10.1016/0196-6774 (83) 90017-2, ISSN 0196-6774, Zbl 0532.68061.
- ^ Salson M., Lecroq T., Léonard M., Mouchard L. (2009). "Ein vierstufiger Algorithmus zur Aktualisierung eines Burrows-Wheeler-Transformation". Theoretische Informatik. 410 (43): 4350–4359. doi:10.1016/j.tcs.2009.07.016.
- ^ Li r; et al. (2008). "Seife: Kurzes Oligonukleotid -Ausrichtungsprogramm". Bioinformatik. 24 (5): 713–714. doi:10.1093/bioinformatics/btn025. PMID 18227114.
- ^ Li H, Ruan J, Durbin R (2008-08-19). "Mapping Short DNA -Sequenzierung liest und aufgerufene Varianten mithilfe von Mapping -Qualitätswerten". Genomforschung. 18 (11): 1851–1858. doi:10.1101/gr.078212.108. PMC 2577856. PMID 18714091.
- ^ Langmead B, Trapnell C, Pop M, Salzberg SL (2009). "Ultraspastische und speichereffiziente Ausrichtung kurzer DNA-Sequenzen auf das menschliche Genom". Genombiologie. 10 (3): R25. doi:10.1186/GB-2009-10-3-R25. PMC 2690996. PMID 19261174.
- ^ Li H, Durbin R (2009). "Schnelle und genaue kurze Leseausrichtung mit Burrows -Wheeler -Transformation". Bioinformatik. 25 (14): 1754–1760. doi:10.1093/bioinformatics/btp324. PMC 2705234. PMID 19451168.
- ^ Li r; et al. (2009). "SOAP2: Ein verbessertes ultraastes Tool für kurze Leseausrichtung". Bioinformatik. 25 (15): 1966–1967. doi:10.1093/bioinformatics/btp336. PMID 19497933.
- ^ Collin P, Arnavut Z, Koc B (2015). "Verlustlose Komprimierung von medizinischen Bildern unter Verwendung von Burrows -Wheeler -Transformation mit Inversion Codierer". 2015 37. jährliche internationale Konferenz der IEEE Engineering in Medicine and Biology Society (EMBC). Vol. 2015. S. 2956–2959. doi:10.1109/embc.2015.7319012. ISBN 978-1-4244-9271-8. PMID 26736912. S2CID 4460328.
- ^ Devadoss CP, Sankaragomathi B (2019). "Beinahe verlustfreie medizinische Bildkompression unter Verwendung von Block BWT -MTF- und Hybrid -Fraktalkomprimierungstechniken". Cluster Computing. 22: 12929–12937. doi:10.1007/s10586-018-1801-3. S2CID 33687086.
- ^ Cox AJ, Bauer MJ, Jakobi T, Rosone G (2012). "Große Komprimierung von genomischen Sequenzdatenbanken mit den Höhlen-Rad-Transformationen". Bioinformatik. Oxford University Press. 28 (11): 1415–1419. Arxiv:1205.0192. doi:10.1093/bioinformatics/bts173. PMID 22556365.
- ^ Ktistakis R, Fournier-Viger P, Puglisi SJ, Raman R (2019). "Prägnante BWT-basierte Sequenzvorhersage". Datenbank- und Expertensystemanwendungen. Vorlesungsnotizen in Informatik. Vol. 11707. S. 91–101. doi:10.1007/978-3-030-27618-8_7. ISBN 978-3-030-27617-1. S2CID 201058996.
Externe Links
- Artikel von Mark Nelson über die BWT
- Eine bijektive String-Sortiertransformation von Gil und Scott
- Yutas OpenBWT-V1.5.zip enthält Quellcode für verschiedene BWT-Routinen, einschließlich BWTs für die bijektive Version
- Auf bijektiv
- Blogeintrag und Projektseite Für ein Open-Source-Komprimierungsprogramm und eine Bibliothek basierend auf dem Burrows-Wheeler-Algorithmus
- MIT Open Courseware Lecture on BWT (Grundlagen der Computer- und Systembiologie)
- Liga Table Sort (LTS) oder der Gewichtungsalgorithmus zu BWT von Abderrahim Hechachea