Algorithmen auf Sequenzen

Größe: px
Ab Seite anzeigen:

Download "Algorithmen auf Sequenzen"

Transkript

1 Algorithmen auf Sequenzen Vorlesung von Prof. Dr. Sven Rahmann im Sommersemester 2008 Kapitel 5 Approximative Textsuhe Weseite zur Vorlesung Sprehstunde Mo in OH14, R214 1

2 Üersiht Astandsmaße zwishen Strings Approximatives Suhprolem Sellers' und Ukkonen's Algorithmus Sorematrizen, Ähnlihkeiten Positionsspezifishe Sorematrizen Sequenz-Alignments Längster gemeinsamer Teilstring Längste gemeinsame Teilsequenz 2

3 Astandsmaße auf Strings Definiere Metriken auf A n (Menge aller Strings der Länge n üer A), separat für jedes n A* (Menge aller endlihen Strings üer A) Hamming-Distanz Die Hamming-Distanz (Anzahl der Untershiede zwishen zwei gleihlangen Strings) ist eine Metrik auf A n. Edit-Distanz Seien s,t elieige endlihe Strings üer A. Man üerführt s in t, indem man auf s von links nah rehts folgende Operationen anwendet das nähste Zeihen aus s kopieren (Kosten 0) das nähste Zeihen aus s durh ein anderes ersetzen (Kosten 1) das nähste Zeihen aus s löshen (üerspringen; Kosten 1) ein zusätzlihes Zeihen einfügen (Kosten 1) Die Edit-Distanz (unter Einheitskosten) zwishen s und t ist definiert als die Operationsfolge mit minimalen Kosten, die s in t üerführt. Statt Kosten 0/1 können für jede Operation spezifishe Kosten festgelegt werden. Dies definiert eine Metrik auf A* (Beweis: Definitheit, Symmetrie, Dreieksungleihung?). 3

4 Astandsmaße auf Strings Indel-Distanz wie Edit-Distanz, aer Ersetzungen sind niht zugelassen. Dies definiert eine Metrik auf A*. q-gram-distanz Zähle wie oft jedes q-gram z (Wort der Länge q, Element von A q ) jeweils in s,t vorkommt: Die Anzahlen seien N z (s), N z (t). Definiere d q (s,t) := z A q N z (s) - N z (t) Dies definiert im allgemeinen keine Metrik auf A*. (Welhe Eigenshaft einer Metrik wird verletzt?) 4

5 Beispiele s = ABRACADABRA t = CANDELABRAS Hamming-Distanz: 11 (alle Buhstaen sind vershieden) ABRACADABRA CANDELABRAS sssssssssss Edit-Distanz: 8 ABRACA-DABRA- --CANDELABRAS ddsssisi Indel-Distanz: 8 ABRACA-D--ABRA- ----CANDELABRAS ddddiiii q-gram-distanz für q=1,2: Üung Legende der Operationen: = opy, Kopieren, Kosten 0 s = sustitute, Ersetzen, Kosten 1 d = delete, Löshen, Kosten 1 i = insert, Einfügen, Kosten 1 Visualisierung als Alignment: d und i werden durh Gaps (-) in jeweils einer Sequenz dargestellt 5

6 Alignments Definition Ein Alignment A von zwei Strings s,t üer dem Alphaet ist ein String üer dem Alphaet der Paare ( {-}) 2 \ {(-,-)}, so dass line1(a)=s und line2(a)=t. Daei ist line1(a) der durh line1(a,) := line1(a,-) := a und line1(-,) := ² definierte String-Homomorphismus, line2 entsprehend. (Mit anderen Worten, die erste Zeile des Alignments, ohne Gaps gelesen, muss s ergeen, die zweite t.) Die Kosten eines Alignments sind definiert als Summe der Kosten seiner Symole (Spalten), d.h. die Summe der Kosten der repräsentierten Operationen. s = ABRACADABRA t = CANDELABRAS Alignment 1 mit Kosten 8 ABRACA-DABRA- --CANDELABRAS Alignment 2 mit Kosten 8 ABRACA-D--ABRA- ----CANDELABRAS Alignment 3 mit Kosten 12 -ABR--AC-ADABRA CANDELABRAS---- Zur Berehnung der Edit-Distanz von s,t suht man also nah den minimalen Kosten aller Alignments von s und t unter den erlauten Edit-Operationen. Ein Alignment mit minimalen Kosten heißt optimales Alignment. 6

7 Prolem der Approximativen Textsuhe Gegeen ein Text T und ein Muster p üer demselen Alphaet, sowie ein Astandsmaß d (entweder auf A P oder A*) und ein Shwellenwert k, finde die (Start- und) End-Positionen aller Teilstrings t von T mit d(p,t) <= k. Für k=0 erhält man das Prolem der einfahen Textsuhe. Das Prolem lässt sih auf Mengen von Strings P als Muster verallgemeinern: Gesuht sind dann die Teilstrings t von T, so dass es einen String p in P git mit d(p,t) <= k. Statt die Menge P explizit anzugeen, kann man wieder z.b. verallgemeinerte Strings verwenden. Später etrahten wir noh ein weiteres Modell für Muster: Positionsspezifishe Sorematrizen (PSSMs) Bemerkung Das Prolem der approximativen Textsuhe lässt sih im Prinzip lösen, indem man die Menge aller passenden Strings aufzählt, und darauf die Methoden für Stringmengen anwendet (Kapitel 3). Für viele Distanzmaße ist die Größe der Menge jedoh exponentiell in k. 7

8 DP-Algorithmus von Sellers für die Edit-Distanz Idee Löse das Prolem für alle Präfixe und T und p, taelliere Lösungen der kleineren Teilproleme (dynami programming) Eingaen Muster p, Text T, Ersetzungkosten für jedes Zeihenpaar d(a,)>=0 mit d(a,a)=0 für alle a, Zeihenspezifishe Löshkosten d(a,²) und Einfügekosten d(²,a) Definition Sei p i das Präfix der Länge i von p, analog T j. Sei D(i,j) die minimale Edit-Distanz zwishen p i und allen Suffixen von T j. Rekurrenzen D(0,0) = 0 [leere Strings] D(i,0) = D(i-1,0) + d(p i,²) für i>0 [ganz p i muss gelösht werden] D(0,j) = 0 für alle j [leeres Musterpräfix gegen leeres Suffix von T j ] D(i,j) =??? Wie kann man D(i,j) aus D-Werten für kleinere Argumente erehnen? 8

9 Kern des Algorithmus von Sellers Beoahtung Jedes Alignment von p i und jedem Suffix von T j muss auf genau eine von drei Arten enden: Sei p i = a und T j =. (1)...a (2)...a (3)..a In (1) wird (a,) einem existierenden Alignment von p i-1 und T j-1 hinzugefügt. In (2) wird (a,-) einem existierenden Alignment von p i-1 und T j hinzugefügt. In (3) wird (-,) einem existierenden Alignment von p i und T j-1 hinzugefügt. Behauptung Das optimale Alignment von p i und T j ergit sih als este der drei genannten Möglihkeiten, d.h. als kostengünstigste Verlängerung der drei optimalen Präfix-Alignments. Also D(i,j) = min { D(i-1,j-1) + d(p i, T j ), D(i-1, j) + d(p i, ²), D(i, j-1) + d(², T j ) } Beweis durh Induktion und Widerspruh angenommen, es gäe ein esseres Alignment; dann erhielte man ein esseres Präfix-Alignment, was nah Annahme niht sein kann. 9

10 Algorithmus von Sellers Üersiht Man erehnet spaltenweise die Matrix D. Spalte 0: Initialisierung wie angegeen Spalte j: D(0,j)=0 wie angegeen, danah D(i,j) durh Minimum üer 3 Fälle für i>0 Ist der letzte Eintrag D( p,j) in Spalte j kleiner gleih k, dann haen p und ein Text-Teilstring, der an Position j endet, eine Edit-Distanz von höhstens k. Details Treffer treten in Clumps (Intervallen) auf etrahte in solhen Intervallen nur Minima. Laufzeit O( p T )=O(mn); jeder Taelleneintrag enötigt konstante Zeit. Speiheredarf O( p ), man rauht immer nur 2 Spalten gleihzeitig Man erhält nur die Endpunkte der passenden Teilstrings, niht die Anfangspunkte oder die Alignments. Wie ekommt man die Anfangspunkte und Alignments? Man merkt sih in jedem Shritt, welhe der drei Vorgängerzellen zur optimalen Wahl geführt hat, zw. in welher Spalte deren optimaler Anfangspunkt lag, etwa start(i,j) =... Tafeleispiel 10

11 Beispiel Gegeen: p = BAABA, T = AABCABAABBABAABA Einheitskosten, k = T A A B C A B A A B B A B A A B A p B A A B A Farlih hervorgehoen: Pfade (ggf. mehrere) durh die Matrix, die zu den Einträgen <= 1 der letzten Zeile führen. Der helllaue Pfad stellt eine Azweigung des dunkellauen Pfades dar. Üung Wie sehen die zugehörigen Alignments aus? 11

12 Veresserung: Algorithmus von Ukkonen Gegeen: p = BAABA, T = AABCABAABBABAABA Einheitskosten, k = T A A B C A B A A B B A B A A B A p B A A B A Idee In jeder Spalte j, etrahte last(j), die tiefste Zeile mit Wert <= k (unterstrihen). Die genauen Werte darunter sind irrelevant und müssen niht etrahtet werden. Da Kosten nihtnegativ sind, führen sie niht zu kleineren Werten weiter rehts. In Spalte j+1 muss zunähst is Zeile last(j)+1 erehnet werden, da mögliherweise die Diagonale Kosten 0 aufweist. Ist der Wert D(last(j)+1, j+1) > k, so suht man last(j+1) oerhal (z.b. Spalte 4) Ist der Wert noh <= k, ergeen sih die Werte unterhal nur durh vertikale Kosten; man fügt diese so lange hinzu, is erstmalig k üershritten wird. 12

13 Algorithmus von Ukkonen Bemerkung Bei Einheitskosten ist das vertikale Weitersuhen niht notwendig, da sih enaharte Zellinhalte um 0 oder 1 untersheiden. Analyse Man kann zeigen, dass auf zufälligen Strings gilt: last(j) = O(k), so dass sih eine Laufzeit von O(kn) ergit, was insesondere ei k << m vorteilhaft gegenüer O(mn) ist. Definition Den Quotienten e := k/m nennt man zulässige Fehlerrate (error level). Wihtig in der Praxis sind kleine Fehlerraten (z.b. 1%, 5%, 10%). 13

14 Anwendung: Mapping von Sequenzfragmenten Das menshlihe Genom ist seit a weitgehend sequenziert und esteht insgesamt aus a. 3 Gigaasen DNA. Die öffentlih verfügare Genomsequenz ist eine Art Durhshnitt, oder Konsensus-Sequenz, aus mehreren Individuen. Weniger gut erforsht sind individuelle Varianten und deren Bedeutung. In den letzten Jahren ist DNA-Sequenziertehnologie sehr viel effizienter (weil paralleler) und illiger geworden. Man kann jetzt prinzipiell zufällig ausgewählte DNA-Bereihe aus zahlreihen Individuen sequenzieren und in der Konsensus-Sequenz lokalisieren; durh das Alignment werden die Untershiede zum Konsensus deutlih. Untershiede können mehrere Ursahen haen: Sequenzierfehler tatsählihe individuelle Untershiede, z.b. SNPs (single nuleotide polymorphisms) Je nah verwendeter Tehnologie sind die sequenzierten DNA-Stüke (reads) sehr kurz (25 35 nt; Solid, Illumina/Solexa) oder kurz ( nt, 454/Rohe). Längere reads erlauen eher eine Zuordnung (mapping) zu einem eindeutigen Bereih auf der Konsensus-Sequenz. Hier lässt sih Ukkonnen's Algorithmus mit e = 5% anwenden. 14

15 NFAs für die approximative Textsuhe Anderer Ansatz (nur für Einheitskosten!): Wir konstruieren einen NFA, der alle Vorkommen des Musters mit <= k Fehlern erkennt. Wir etrahten dann vershiedene Methoden, diesen NFA it-parallel zu simulieren. Design-Ideen Der NFA hat (k+1)(m+1) Zustände und esteht aus (k+1) Kopien des Muster-NFAs. Diese Kopien müssen geeignet verunden werden. Nah Lesen eines Textzeihens ist Zustand (e,i) mit 0<=e<=k, 0<=i<=m= p aktiv, wenn das Präfix p i mit <= e Fehlern gleih einem Suffix des isher gelesenen Textes ist. Wann immer ein Zustand (e,m) aktiv ist, wurde ein Vorkommen mit e Fehlern gefunden. Von Interesse ist immer nur das kleinste e, für das (e,m) aktiv ist. Üergänge von (e,i) aus: Durh Lesen des nähsten Muster-Zeihens p i+1 gelangt man nah (e,i+1) [Math]. Durh Lesen eines elieigen Zeihens gelangt man nah (e+1, i+1) [Sustitution]. Man gelangt auh direkt (Epsilon-Transition) nah (e+1, i+1) [Löshung von p i+1 ]. Durh Lesen eines eliegien Zeihens gelangt man nah (e+1, i) [Einfügung vor p i+1 ]. Es git wie immer eine Alphaet-Shleife in (0,0) [Warten auf den Beginn von p]. 15

16 NFA - Beispiel Beispiel p = a, k = 2 (0,0) (0,1) (0,2) a (0,3) (0,4) (0,5) (0,6) (1,0) (1,1) (1,2) a (1,3) (1,4) (1,5) (1,6) (2,0) (2,1) (2,2) a (2,3) (2,4) (2,5) (2,6) Startzustände (dunkellau): Epsilon-Ashluss der ersten Spalte Epsilon-Transitionen -Transitionen 16

17 Zusammenhang NFA und DP-Algorithmus Nah Lesen des j-ten Textzeihens gilt: D(i,j) <= k genau dann wenn D(i,j) = min { e: NFA-Zustand (e,i) ist aktiv }. D(i,j) > k genau dann wenn keiner der NFA-Zustände in Spalte i aktiv ist. 17

18 Zeilenweise itparallele Simulation Repräsentiere Zeile e in Bitvektor ative[e], ohne Spalte 0, für e = 0.. k (wie Shift-And) Definiere Masken mask[] für alle Buhstaen wie ei Shift-And. Initialisierung (Aktivierung der Startzustände) ative[0] = ative[1] = ative[2] = Shritt: Lesen des nähsten Text-Zeihens Zum Update der ative[e]-bits zu ative+[e] enötigt man sowohl die alten Werte ative[e-1] als auh die neuen Werte ative+[e-1] der Vorzeile. e = 0: ative+[0] := (ative[0] << 1 1) & mask[] (normales Shift-And für e=0) Für alle e > 0: ative+[e] := ((ative[e] << 1) & mask[]) ative[e-1] (ative[e-1] << 1) (ative+[e-1] << 1) Test, o das m-te Bit in einem ative+-vektor gesetzt ist ative[e] := ative+[e] für alle e. Laufzeit O(nk m/w), daei w die Wortlänge (32 oder 64), praktish O(nk) 18

19 Verallgemeinerungen Die zeilenweise it-parallele Simulation des k-fehler NFA lässt sih auf verallgemeinerte Strings verallgemeinern (Kapitel 2): Zeihenklassen, üer die Masken mask[] Lüken eshränkter Länge (x(min,max)-notation) Optionale Zeihen (?) Wiederholare Zeihen (+, *) Vorgehen Man wendet die NFA-Tehniken aus Kapitel 2 auf jede der k+1 Kopien des NFA an. Üung Wie sieht der Automat zu C x(2,4) A B? C+ [AB] mit k=1 Fehler aus? Wiederhole die Methoden zur it-parallelen Simulation von x(min,max),?, +, * 19

20 Diagonale it-parallele Simulation Andere Sihtweise: Der Automat esteht aus m-k+1 vollständigen Diagonalen (0.. m k) der Länge k + 1. Wir repräsentieren jede Diagonale durh k+2 Bits (das erste ist jeweils konstant 0). Epsilon-Transitionen treten nur innerhal einer Diagonale auf. (Keine Details) (0,0) (0,1) (0,2) a (0,3) (0,4) (0,5) (0,6) (1,0) (1,1) (1,2) a (1,3) (1,4) (1,5) (1,6) (2,0) (2,1) (2,2) a (2,3) (2,4) (2,5) (2,6) Diagonale