MAP Speeding up whole-genome alignment by indexing frequency vectors Veröffentlicht am 8. April 2004 in BIOINFORMATICS Autoren: Tamer Kahveci, Vebjom Ljosa, Ambul K. Singh Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
Marco Hackenberg, Benjamin Großmann Motivation Unser Ziel: effizientes whole-genome Alignment Bisher: BLAST – der Standard in puncto approximatives String-Matching Probleme: Datenstrukturen für Alignments sind sehr platzintensiv Erfolgsrate bei Alignments zwischen Seeds und DB-Substrings ist extrem klein Unser Lösungsansatz: Alignments nur zwischen vielversprechenden Substrings Indexstruktur nötig Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
Marco Hackenberg, Benjamin Großmann Frequency Vectors Idee: Über Substrings fest definierter Länge werden Häufigkeiten auftretender Zeichen gespeichert Diese Anzahl der Vorkommnisse wird für jedes Zeichen des Alphabets Σ im frequency vector υ festgehalten Die Dimension von υ ist somit σ = |Σ| Beispiel: S = GTAATACTTCGATATAA Σ = {A,C,G,T} υ = (#A, #C, #G, #T) = (7, 2, 2, 6) σ = 4 Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
Marco Hackenberg, Benjamin Großmann Ein neues Distanzmaß... Def.: frequency distance u und υ seien frequency vectors der Strings S und T Die frequency distance FD(u,υ) ist die minimale Anzahl an erforderlichen Basisoperationen (insert, delete, replace), um S in einen String T' mit frequency vector υ umzuwandeln. Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
Frequency Vectors: Beispiel Gegeben sind frequency vectors u und υ zweier Strings: u = (4, 0, 0, 2) υ = (2, 1, 1, 2) Frequency distance: FD(u,υ) = 2 2x Replace: A C, A G Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
Frequency Vectors: Beispiel Gegeben sind frequency vectors u und υ zweier Strings: u = (4, 0, 0, 2) υ = (2, 1, 1, 2) Frequency distance: FD(u,υ) = 2 2x Replace: A C, A G mögliche Repräsentanten für u und υ: S: TATAAA T: TATCGA Editabstand: ED(S,T) = 2 ED(S,T) = FD(u,υ) S : TATAAA T': TTACGA Editabstand: ED(S,T') = 4 ED(S,T') > FD(u,υ) Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
Frequency Vectors: Eigenschaften Die frequency distance zweier Strings ist eine untere Schranke ihres Editabstandes: FD(u,υ) ED(S,T) Sind zwei Strings gleich, ist ihre frequency distance Null. Gilt nicht umgekehrt – keine metrischen Eigenschaften! Praktischer Nutzen: Ist die frequency distance zweier Strings klein, sind sie vermutlich ähnlich. oder: Ist die frequency distance zweier Strings groß, sind sie mit Gewissheit verschieden Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
Frequency Vectors: Anwendung Alignierung zweier Substrings (z.B. mit BLAST) nur noch bei geringer frequency distance nötig ca. 98% aller Sub-Alignierungsversuche entfallen gerade bei großen Alignments erheblicher Geschwindigkeitszuwachs zu erwarten ermöglicht weitere Vorteile im Hauptspeicher-Management (kein Swapping mehr!) Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
Marco Hackenberg, Benjamin Großmann MAP – Das Verfahren... F-Index für ersten String aufbauen Frequenzraum des zweiten Strings partitionieren Bool'schen Match-Table aus ersten und zweiten String aufbauen Aufteilung in für I/O effiziente Teilbereiche zur Weitergabe an BLAST Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
Marco Hackenberg, Benjamin Großmann F-Index: Beispiel Substring der Länge |s|=15 Boxen-Kapazität c=3 Fenstergröße w=7 Anzahl der Boxen = (|s|-w+1)/c = 3 A T C G 3 2 1 T T A C A A G C C T G T G C A T T A C A A G C C T G T G C A T T A C A A G C C T G T G C A T T A C A A G C C T G T G C A T T A C A A G C C T G T G C A T T A C A A G C C T G T G C A T T A C A A G C C T G T G C A T T A C A A G C C T G T G C A T T A C A A G C C T G T G C A Gängige Größen: 200.000 < |s| < 20 Mio.; w=4000; c=1000 Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
F-Index: Von der Definition … Def.: Menge von σ-dimensionalen Boxen Box: umschließt eine Menge von aufeinanderfolgenden frequency vectors eines Substrings S „anschaulich“: σ-dimensionaler Quader, der minimal alle frequency vectors von S umschließt Daten je Box: Kleinste und größte Koordinaten Startposition des Substrings Boxkapazität (Anzahl enthaltener frequency vectors) Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
F-Index: … zur Umsetzung Scannen des Strings per „Sliding Window“ Für jeden Sliding-Vorgang frequency vector für Fensterausschnitt erstellen Nach c (Boxkapazität) mal sliden Zusammenfassung zu einer Box Einfügen der Box in den Indexbaum Schlüssel? Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
Frequency Score ermitteln /* v: σ-dimensional integer point B: σ-dimensional integer box of lower and higher coordinates B.L and B.H w: window size used to construct B */ Procedure FSw( v, B ) inc := dec := 0; for i from 1 to σ: if v[ i ] < B.L[ i ] then inc += B.L[ i ] – v[ i ]; else if B.H[ i ] < v[ i ] then dec += v[ i ] – B.H[ i ]; 3. ScoreInc := (w – inc) * Smatch + inc * Smismatch; ScoreDec := (w – dec) * Smatch + dec * Smismatch; Return min{ ScoreInc, ScoreDec }; inc/dec: Summe der Abstände Smatch > 0 Smismatch < 0 Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
Frequenzraum partitionieren zweiter String: Erstellen von frequency vectors durch Shifting Window Problem: Errechnen der frequency scores aller Box-Punkt-Paare dauert lange: O(|B|*|v|) Aber: ähnliche Substrings haben ähnliche frequency vectors Zerteilen den Frequenzraum des zweiten Strings in Teilbereiche Vergleichen nur innerhalb benachbarter Regionen Rest: Mismatch Benutzung der equi-depth- histogram Technik Ziel: gleiche Anzahl von Punkten je Partition Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
Match-Table erstellen Finden aller Box-Punkt Paare, deren FS einen „Cutoff“-Wert überschreiten Punkte repräsentieren mögliche Übereinstimmungen zwischen Substrings aus s und q Problem bei Punkteermitt- lung per Shifting Window: evtl. Zerschneiden innerhalb einer ähnlichen Sequenz Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
I/O-Optimierung: Aufteilung in Teilbereiche Ziel: Alignierungen von Substrings mit BLAST ohne swapping iterativ zwei Schritte durchführen: Entscheidung: horizontal oder vertikal splitten? Partition so weit wie möglich ausdehnen, so dass Markierungen noch in Hauptspeicher passen anpassbar an Hauptspeichergröße Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
Trade-off-Parameter von MAP Fenstergröße w (Praxis: w = 4000) größer: schneller kleiner: Reduzierung von kurzen false negatives Boxkapazität c (Praxis: c = 1000) größer: Platzbedarf geringer kleiner: Reduzierung von false positives Page-Größe p (Praxis: p = w) größer: weniger Hauptspeicherbedarf (Matchtable-Größe) kleiner: präzisere Matchtable (weniger false positives) Anzahl der Partitionen im Frequenzraum (Praxis: 5) größer: weniger FrequencyScore-Berechnungen kleiner: weniger Speicher-Overhead (max. Performance) Zu Page-Größe: Matchtable-Größe = O(n²) Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
Trade-off: Fenstergröße – Box Kapazität - Genauigkeit Zu Page-Größe: Matchtable-Größe = O(n²) Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
Experimentelle Bewertung: Qualität BLAST: Alignment von 2 E.coli Strängen Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
Experimentelle Bewertung: Qualität MAP: Alignment von 2 E.coli Strängen Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
Experimentelle Bewertung: Qualität Alignment von 2 E.coli Strängen mittels MAP – Translokation eines Substrings Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
Experimentelle Bewertung: Qualität Alignment von 2 E.coli Strängen mittels MAP – Inversion eines Substrings Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
Experimentelle Bewertung: Qualität Alignment von 2 E.coli Strängen mittels MAP – Duplikation eines Substrings Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
Experimentelle Bewertung: Performance Zeit bis zum Erstellen eines Matchtables Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
Experimentelle Auswertung: MAP vs. BLAST Sensitivität & Spezifität: Alignments mit hohem Score werden absolut sicher erkannt Kurze Alignments können eher vergessen werden, da sie u.U. durch Shifting Window nicht erkannt werden Geschwindigkeit: Test mit E.coli: MAP ca. 100x schneller als BLAST Platzbedarf Der Frequency Index benötigt nur ca. 2% der DB-Kapazität Alignments mit 20Mb sind auf Desktop-PCs kein Problem (BLAST scheitert ab 5 Mb) Sommersemester 2005 Marco Hackenberg, Benjamin Großmann
Marco Hackenberg, Benjamin Großmann Bewertung Sehr spezifische Selektion sinnvoller Alignments Partitionen des Matchtables auf Hauptspeichergröße skalierbar Große Alignments auf preiswerten Desktop-Systemen überhaupt erst möglich Pruning kann prinzipiell für jedes beliebige Alignierungs-verfahren durchgeführt werden (nicht nur für BLAST) Vergleich nur mit Editabständen geführt gibt auch schon andere Konzepte Gapped Alignment nicht vorgesehen, aber umsetzbar Sommersemester 2005 Marco Hackenberg, Benjamin Großmann