Textkompression: Burrows-Wheeler-Transformation



Ähnliche Dokumente
Textkompression: Burrows-Wheeler-Transformation

Textkompression: Burrows-Wheeler-Transformation

Die Burrows-Wheeler-Transformation

Dynamisches Huffman-Verfahren

Der LZ77 Algorithmus. von. Stefan Mühlinghaus Matrikelnummer: Benutzerkennung: ai495

Kompression.pdf h. völz /17

Effiziente Algorithmen und Komplexitätstheorie

Algorithmen und Datenstrukturen 2-3. Seminar -

Eigenschaften von Kompressionsverfahren


Kompression: Lempel/Ziv-Algorithmen

Kapitel 2 Quellencodierung

16 - Kompressionsverfahren für Texte

Kompressionsverfahren

Kompression und Datenformate. Grundlagen der Bildspeicherung, Kompressionsverfahren, Datenformate

Suffix Arrays Eine Datenstruktur für Stringalgorithmen

4.4 Anwendungen von Suffixbäumen und Suffix-Arrays

Datenkompression: Weitere verlustfreie Komprimierungsverfahren. H. Fernau

Seminar Kompressionsalgorithmen Huffman-Codierung, arithmetische Codierung

Beispiel: Zeigen Sie, dass H(x) = H 0 = I gilt, wenn alle Zeichen gleichwahrscheinlich sind.

Datenkompression. Theorie

LZSS und Deflate. Lars Kunert. April 18, Seminar Kompressionsalgorithmen RWTH Aachen

Proseminar. Thema: Shannon-Fano und Huffman Verfahren

Kompressionsverfahren für Texte

Datenbanken: Datenkompression. Dr. Matthias Uflacker, Stefan Klauck 2. Mai 2018

Untersuchung von Verfahren zur Messdatenreduktion und kompression für den Einsatz in einer Nanomessmaschine

Seminar. Codierungstheorie

Algorithmen und Datenstrukturen (für ET/IT)

Eine Variante der Burrows-Wheeler Transformation mit Permutationen

Pat Trees und Pat Arrays Datenstrukturen zur effizienten Suche in Texten

Textkompression. Komprimierung von Daten. Runlength Komprimierung (2) Runlength Komprimierung (1) Herkömmliche Kodierung. Runlength Komprimierung (3)

Kapitel 7: Optimalcodierung und Huffman Coding

Algorithmen und Datenstrukturen (für ET/IT)

Nutzung der Oracle Database InMemory Option für SAP BW

Projekt Systementwicklung

Zeichenketten Benedikt Straßner. Programming Systems Group Martensstr Erlangen Germany

2. Digitale Codierung und Übertragung

1 Kompressionsarten Verlustfreie Kompression Verlustbehaftete Kompression... 3

Kompression. Tim Kilian

Optimalcodierung. Thema: Optimalcodierung. Ziele

Algorithmen und Datenstrukturen in der Bioinformatik Drittes Übungsblatt WS 05/06 Musterlösung

Suffix Arrays Eine Datenstruktur für Stringalgorithmen

3.2. Divide-and-Conquer-Methoden

Programmierung. Rückblick. VWA - Programmierung Winter Algorithmus. Programmiersprache. Variable. Zuweisung. Bedingung.

Grundlagen des Burrows-Wheeler-Kompressionsalgorithmus

Interaktive Visualisierung zeitabhängiger Volumendaten

Datenkompression. 1 Allgemeines. 2 Verlustlose Kompression. Holger Rauhut

Übung Datenstrukturen. Sortieren

5. Übungsblatt zu Algorithmen I im SoSe 2016

Vorbesprechung. Proseminar Bioinformatik. Sommersemester Februar 2015

Praktikum BKSPP. Aufgabenblatt Nr Umrechnung zwischen Stellenwertsystemen

PPM - Prediction by Partial Matching

2.7 Der Shannon-Fano-Elias Code

Molekulare Bioinformatik

Fehlererkennung und Fehlerkorrektur in Codes

Algorithmen auf Sequenzen

Digitale Medien. Vorlesung: Heinrich Hußmann Übung: Renate Häuslschmid. Übung zur Vorlesung

Farb-Fernsehsignal (Composite FBAS)

Gierige Algorithmen Interval Scheduling

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Verlustfreie Kompression

Referat zum Thema Huffman-Codes

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Kompression. Kompression. Beseitigung der unnötigen Daten... Redundanz. Folie 2

Abschnitt 19: Sortierverfahren

Basisinformationstechnologie II

Datenkompression. 1. Einleitung. Einfache Techniken. RLE (Text/Bild) Move-to-Front Coding. 1.1 Einteilung der Verfahren.

Kombinatorische Optimierung

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:

Klausur Informatik 1 SS 08. Aufgabe Max. Punkte Punkte. Gesamtpunkte:

Transkript:

Textkompression: Burrows-Wheeler-Transformation Proseminar Algorithmen der Bioinformatik Uli Köhler 12. November 2012 Folie 2 von 49

Aufbau dieser Präsentation Kompression in der Bioinformatik Die Burrows-Wheeler-Transformation Algorithmus der Hintransformation Algorithmus der Rücktransformation Probleme der BWT Diskussion verschiedener Resultate Burrows & Wheeler Cox & Bauer Eigene Resultate Folie 3 von 49

Groÿe Datenmengen in der Bioinformatik I High-Throughput-Sequencing erzeugt durch n-fache Abdeckung groÿe Datenmengen Oft Speicherung der Rohdaten gewünscht Speicherplatz ist teuer, teils langsamer Zugri Folie 4 von 49

Groÿe Datenmengen in der Bioinformatik II Lösung: Verlustfreie Datenkompression Daten unter Einsatz von weniger Speicherplatz darstellen Prinzip: Eliminierung von Redundanzen Anforderungen je nach Anwendung: Schnelle Kompression/Dekompression Wenig Speicherplatzverbrauch Folie 5 von 49

Ein naiver Kompressionsalgorithmus I Eingabestring S := AAAAAAAAATTT S = 12 Der Algorithmus fasst gleiche aufeinanderfolgende Zeichen (Runs) zusammen Resultat: S = 9A3T S = 4 75% Speicherplatzeinsparung Problem: Viele Strings (z.b. ATATATAT) können nicht komprimiert werden Folie 6 von 49

Ein naiver Kompressionsalgorithmus II Aufeinanderfolgende gleiche Zeichen können von diesem Algorithmus besser komprimiert werden Einige reale Kompressionsalgorithmen können davon ebenfalls protieren Ist es möglich, einen String reversibel so umzuordnen, dass möglichst viele, möglichst lange Runs auftreten? Burrows-Wheeler-Transformation Folie 7 von 49

BWT - Kompression I Eingabestring S := aabrac Initialisierung einer Matrix M der Dimensionen S S Bildung aller zyklischen Rotationen des Eingabestrings M 0 aabrac 1 abraca 2 bracaa 3 racaab 4 acaabr 5 caabra Folie 8 von 49

BWT - Kompression II Lexikographische Sortierung der Rotationen des Eingabestrings M aabrac abraca acaabr bracaa caabra racaab Folie 9 von 49

BWT - Kompression III Resultat: Das Tupel (L, I ), wobei L die letzte Spalte der Matrix ist und I der Index des Eingabestrings in der Matrix ist (L, I ) = (caraab, 1) M 0 aabrac 1 abraca 2 acaabr 3 bracaa 4 caabra 5 racaab Folie 10 von 49

BWT Rücktransformation I Eingabetupel: (L, I ) Initialisierung einer Matrix M der Dimensionen L L Bereits bekannt: L ist die letzte Spalte von M M c a r a a b Folie 11 von 49

BWT Rücktransformation II Die erste Spalte ist immer sortiert Kann durch sortieren von L ausgefüllt werden M a c a a a r b a c a r b Folie 12 von 49

BWT Rücktransformation III Die entstandene Matrix wird um ein Zeichen rotiert M ca aa ra ab ac br Folie 13 von 49

BWT Rücktransformation IV Die Matrix wird lexikographisch sortiert M aa ab ac br ca ra Folie 14 von 49

BWT Rücktransformation V Die Schritte Schreiben von L in die rechteste freie Spalte Lexikographisches Sortieren werden wiederholt bis die Matrix voll ist Folie 15 von 49

BWT Rücktransformation VI M caa aab rac abr aca bra Sortieren M aab abr aca bra caa rac Folie 16 von 49

BWT Rücktransformation VII M caab aabr raca abra acaa brac Sortieren M aabr abra acaa brac caab raca Folie 17 von 49

BWT Rücktransformation VIII M _caabr _aabra _racaa _abrac _acaab _braca Sortieren M _aabra _abrac _acaab _braca _caabr _racaa Folie 18 von 49

BWT Rücktransformation IX M caabra aabrac racaab abraca acaabr bracaa Sortieren M aabrac abraca acaabr bracaa caabra racaab Folie 19 von 49

BWT Rücktransformation X M wurde vollständig rekonstruiert Zeile I ist der Originaltext M 0 aabrac 1 abraca 2 acaabr 3 bracaa 4 caabra 5 racaab Folie 20 von 49

BWT Rücktransformation (Original) Besseres Laufzeitverhalten - keine mehrfache Sortierung notwendig Berechnung von C[ch] := Anzahl der Zeichen in L, die im Alphabet vor ch vorkommen Berechnung von P[i] := Anzahl der Vorkommen von L[i] im Präx von L der Länge i Rekursive Berechnung des Originaltextes S i[ L ] := I (1) i j 1 := P[i j ] + C[L[i j ]] (2) S[j] := L[i j+1 ] (3) Folie 21 von 49

Eziente Kompression Die Kompression kann ezient mit Sux Trees implementiert werden Aber: Sux Trees sind auf realer Hardware vergleichsweise langsam Lösung: Sux Arrays Vortrag am 19.11.2012 Folie 22 von 49

Komprimierbarkeit Einige Zeichenkombinationen tauchen häuger in Texten auf als andere, z.b. an in and Alle Zeilen von M, die mit nd beginnen, tauchen nacheinander auf (Sortierung) Durch Rotation ist bei nahezu allen Zeilen, die mit nd beginnen, das letzte Zeichen a L enthält viele aufeinanderfolgende a Folie 23 von 49

Skalierbarkeit Komplexität der BWT-Transformation ist O(n 2 ) Anwendung der BWT auf sehr groÿe Datensätze (z.b. Genome) skaliert nicht Zeitverbrauch hauptsächlich durch Sortierung Wahl des Sortieralgorithmus wichtig Burrows und Wheeler stellen einen für englische Texte optimierten Quicksort vor Lösung: Unterteilung des Datensatzes in kleinere Blöcke - Anwendung der BWT auf diese Blöcke Folie 24 von 49

Overhead Die Länge des Tupels (L, I ) ist insgesamt gröÿer als S Genauer Längenunterschied hängt von der Repräsentation von (L, I ) ab Lösung: Anwendung eines Kompressionsalgorithmus, z.b. der Human-Kodierung auf (L, I ) Je nach Kompressionsalgorithmus oft vorherige Anwendung einer Codierung wie der Move-To-Front-Codierung (MTF) Folie 25 von 49

Vergleich mit anderen Algorithmen Kompression ist meist ein Kompromiss zwischen Geschwindigkeit und Platzeinsparung Einige Algorithmen sind für spezielle Datentypen (z.b. Bilder) besser geeignet Einige Algorithmen (z.b. bzip2) benutzen bereits die BWT Kein Vergleich möglich Folie 26 von 49

Resultate von Burrows & Wheeler I 600 Zeitaufwand verschiedener Algorithmen 400 Dauer (s) Typ Dekompression Kompression 200 0 LZW Deflate BWT+Huffman comp 2 Algorithmus Folie 27 von 49

Resultate von Burrows & Wheeler II Größe nach Kompression in Bytes (Calgary Corpus) 1200000 800000 400000 0 LZW Deflate BWT+Huffman comp 2 Algorithmus Folie 28 von 49

Resultate von Burrows & Wheeler III Größeneinsparung / Zeit verschiedener Algorithmen Größeneinsparung in Bytes pro Sekunde 4e+05 3e+05 2e+05 1e+05 Typ Dekompression/Größe Kompression/Größe 0e+00 LZW Deflate BWT+Huffman comp 2 Algorithmus Folie 29 von 49

Diskussion der Resultate von Burrows & Wheeler Zeitdaten sind kritisch zu bewerten - Hardware von 1994 BWT+Human: Gute Kompression, aber dennoch akzeptables Verhältnis Kompression / Zeit Beispiele beziehen sich nicht auf Bioinformatik-Datensätze, sondern auf einen Kompressionstestkorpus Folie 30 von 49

Resultate von Cox & Bauer I BWT muss zur Anwendung von Sequenzdaten generalisiert werden Cox & Bauer denieren dafür den BWT-SAP-Algorithmus Ein Algorithmus von Bauer zur Reduktion des BWT-Speicherverbrauches ohne stark erhöhten CPU-Zeitverbrauch wird verwendet Folie 31 von 49

Resultate von Cox & Bauer II 2.0 Kompression nach Cox und Bauer 1.5 Bits pro Base 1.0 Kompressionsstufe PPMd(default) 0.5 0.0 Keine BWT BWT SAP Codierungsstufe Folie 32 von 49

Resultate von Cox & Bauer III 4000 Kompressionsdauer nach Cox und Bauer Kumulative Kompressionsdauer in Sekunden 3000 2000 1000 Kompressionsstufe PPMd(default) 0 Keine BWT BWT SAP Codierungsstufe Folie 33 von 49

Resultate von Cox & Bauer IV Kompression / Sekunde nach Cox und Bauer Reduktion in Bits/Base pro Sekunde 0.015 0.010 0.005 Kompressionsstufe PPMd(default) 0.000 Keine BWT BWT SAP Codierungsstufe Folie 34 von 49

Resultate von Cox & Bauer V Im Vergleich zu früheren Verfahren konnte die Kompressionsrate um 10% erhöht werden Die Kompressionszeit wurde von 14 Stunden auf 1 Stunde gesenkt (auf schnellerer Hardware) Folie 35 von 49

Warum eine eigene Implementierung? Alle vorgestellten Resultate verwenden die BWT zusammen mit anderen Verfahren Oene Fragen: Wie verhält sich die BWT alleine und zusammen mit anderen Verfahren Welche Kombination von anderen Verfahren erzielt für welche Datensätze die besten/schnellsten Resultate? Sind moderne (nicht-bwt-basierte) Kompressionsalgorithmen der BWT für bestimmte Anforderungen überlegen? Welche Blockgröÿen sind für die BWT optimal? Sind Bioinformatikdaten mit den bekannten Kompressionstestkorpora vergleichbar? Folie 36 von 49

Methodik Erstellung eines Bioinformatik-Kompressionstestkorpus Software in C++ zur Kompression der Datensätze mit verschiedenen Kombinationen von Algorithmen Teilweise wird auf Speicherung von kleinen Datenmengen verzichtet, um Verzerrung zu vermeiden Messung von: Kompressionszeit Resultierende Dateigröÿe Folie 37 von 49

Implementierte Verfahren Verfahren BWT Komprimierend MTF Entropie Huffman- Codierung RLE Dictionary Deflate Snappy LZO... Folie 38 von 49

Resultate der Eigenimplementierung I Kompression des Calgary Corpus, book1 (Fiction book) 60 Relative Größe (%) 40 20 Erste Codierungsstufe BWT(10k) BWT(500) Keine 0 gzip Algorithmus Folie 39 von 49

Resultate der Eigenimplementierung II Kompression des C. Elegans Chromosoms III (FASTA) 30 Relative Größe (%) 20 10 Erste Codierungsstufe BWT(10k) BWT(500) Keine 0 gzip Algorithmus Folie 40 von 49

Resultate der Eigenimplementierung III Kompression book1 Calgary Corpus (Fictional text) 1.6 Dateigröße 1.2 Algorithm BWT+MTF+Huffman MTF+Huffman Snappy 0.8 0.4 0 10000 20000 30000 40000 50000 Blockgröße Folie 41 von 49

Resultate der Eigenimplementierung IV Kompression des Chromosoms III aus C. Elegans (FASTA) 1.0 Relative Dateigröße in % 0.8 0.6 Algorithm BWT+MTF+Huffman MTF+Huffman Snappy 0.4 0 10000 20000 30000 40000 50000 Blockgröße Folie 42 von 49

Resultate der Eigenimplementierung V Kompression des Chromosoms III aus C. Elegans (FASTA) 10000 Kompressionszeit (ms) 5000 Algorithm BWT+MTF+Huffman Deflate Snappy 0 0 10000 20000 30000 40000 50000 Blockgröße Folie 43 von 49

Diskussion der eigenen Resultate I Nur ein kleiner Teil der Resultate konnte hier diskutiert werden Verbreitete Dictionary-basierte Verfahren wie Deate erzeugen mit BWT gröÿere Dateien als ohne BWT Kompression von BWT+MTF+Human erzeugt unter den BWT-Verfahren die besten Gröÿeneinsparungen Aber: Langsame Kompression Implementierung langsam? Stark Optimierter Encoder in C++ Folie 44 von 49

Diskussion der eigenen Resultate II BWT+MTF+Human erzeugt bei Genomdatensätzen nur unwesentlich kleinere Dateien als MTF+Human Andere Datensätze - auch Bioinformatische - zeigen diesen Eekt nicht Groÿe Blockgröÿen (über etwa 50 kibytes) erhöhen die Laufzeit bei der BWT, erhöhen die Kompressionsrate aber nur unwesentlich Folie 45 von 49

Diskussion der eigenen Resultate III Konklusion: Unmodizierte BWT ist oft ungeeignet, wenn die Kompressions- oder Dekompressionszeit eine übergeordnete Rolle spielt BWT-SAP Mögliche Alternative: Asymmetrische Kompressionsalgorithmen Einzelfallentscheidung Folie 46 von 49

Zusammenfassung I Datenkompression ist aufgrund der enormen Datenmengen, die durch Methoden wie High-Throughput-Sequencing entstehen, oftmals notwendig Verschiedene Algorithmen erreichen verschiedene Kompressionsraten und benötigen unterschiedlich viel Rechenzeit für Kompression und Dekompression Folie 47 von 49

Zusammenfassung II Die Burrows-Wheeler-Transformation ist ein Algorithmus, um Zeichenketten besser komprimierbar zu machen Im Unix-Programm bzip2 wird die BWT eingesetzt BWT-basierte Algorithmen sind nicht für alle Anwendungsfälle Folie 48 von 49

Vielen Dank für eure Aufmerksamkeit! Alle Quellen unter https://github.com/ulikoehler/proseminar Folie 49 von 49