Der Bauplan des Menschen Sequencing by Hybridization SBH Zentrum für Bioinformatik der Universität des Saarlandes WS 2001/2002 Der Bauplan des Menschen • Zwei komplementäre DNA-Einzelstränge können durch Wasserstoffbrückenbildung eine Doppelhelix bilden. Diesen Vorgang nennt man Hybridisierung. Adenin Thymin Guanin Cytosin • Durch Erwärmung auf Temperaturen über 80 Grad C oder durch Zugabe von organischen Lösungsmitteln (wie Formamid) können Doppelstränge in zwei Einzelstränge getrennt werden. Diesen Vorgang nennt man Denaturierung. Der Bauplan des Menschen • Bestimmte DNA-Muster in Chromosomen oder mRNA kann man wie folgt nachweisen: (1) Wohldefinierte DNA-Moleküle (Folgen von Basen) werden mit einer Oberfläche verlinkt: (2) Die DNA-Moleküle, in denen man diese Basenfolge nachweisen möchte, werden mit einem Fluoreszenzfarbstoff markiert, der durch eine geeignete Lichtquelle zur Fluoreszenz angeregt wird. (3) Durch Hybridisierung werden die Moleküle mit komplementären Strängen gebunden. Der Bauplan des Menschen • Durch den Einsatz von photolithographischen Verfahren kann man zweidimensionale DNA-Chips erzeugen, die tausende von verschiedenen DNA-Sequenzen an wohldefinierten Orten auf dem Chip tragen. • Zum Beispiel kann man Felder erzeugen, die alle möglichen Basenfolgen der Länge l (für kleines l) auf der Oberfläche präsentieren. AA AC AG AT CC CG CT CA GG GC GT GA TT TC TG TA Der Bauplan des Menschen • Ein Graph besteht aus Knoten und Kanten. • G = (V,E), wobei V die Menge der Knoten (vertices) und E die Menge der Kanten E (edges) ist. • Der Grad eines Knoten ist gleich der Zahl der Kanten, die im Knoten enden. Hamburg 200 km Berlin 300 km 450 km 200 km Dresden Köln 200 km 400 km Frankfurt 300 km 200 km 50 km 150 km Mannheim Nürnberg 100 km Saarbrücken 250 km Stuttgart 200 km München Der Bauplan des Menschen • Ein Graph besteht aus Knoten und Kanten. • G = (V,E), wobei V die Menge der Knoten (vertices) und E die Menge der Kanten E (edges) ist. • Der Grad eines Knoten ist gleich der Zahl der Kanten, die im Knoten enden. v1 e2=(v1,v3) e1=(v1,v2) v3 e5=(v3,v5) v2 e4=(v3,v4) e6=(v4,v5) v4 e3=(v2,v5) v5 e11=(v6,v10) v10 e9=(v5,v7) e8=(v5,v6) v6 e10=(v6,v9) e7=(v4,v7) v7 e12=(v7,v8) v9 e13=(v8,v9) v8 Der Bauplan des Menschen • Ein Graph besteht aus Knoten und Kanten. • G = (V,E), wobei V die Menge der Knoten (vertices) und E die Menge der Kanten E (edges) ist. • Der Grad eines Knoten ist gleich der Zahl der Kanten, die im Knoten enden. Ein Pfad von Knoten vi nach Knoten vj ist eine Folge von Knoten vi , v?, ...., vj , wobei jedes Paar von aufeinander folgene2=(v1,v3) den Knoten vk, vl durch eine Kante v3 (vk, vl) verbunden ist. v1 e1=(v1,v2) e5=(v3,v5) v2 e6=(v4,v5) e3=(v2,v5) v5 e11=(v6,v10) v10 e9=(v5,v7) e8=(v5,v6) v6 e10=(v6,v9) e4=(v3,v4) v4 Ein Pfad wird als einfach bezeichnet, wenn jeder Knoten in der e7=(v4,v7) Pfadbeschreibung genau einmal vorkommt. v7 e12=(v7,v8) v9 e13=(v8,v9) v8 Der Bauplan des Menschen • Ein Graph besteht aus Knoten und Kanten. • G = (V,E), wobei V die Menge der Knoten (vertices) und E die Menge der Kanten E (edges) ist. • Der Grad eines Knoten ist gleich der Zahl der Kanten, die im Knoten enden. Ein Pfad von Knoten vi nach Knoten vj ist eine Folge von Knoten vi , v?, ...., vj , wobei jedes Paar von aufeinander folgene2=(v1,v3) den Knoten vk, vl durch eine Kante v3 (vk, vl) verbunden ist. v1 e1=(v1,v2) e5=(v3,v5) v2 e6=(v4,v5) e3=(v2,v5) v5 e11=(v6,v10) v10 e9=(v5,v7) e8=(v5,v6) v6 e10=(v6,v9) v9 e13=(v8,v9) e4=(v3,v4) v4 Ein Pfad wird als einfach bezeichnet, wenn jeder Knoten in der e7=(v4,v7) Pfadbeschreibung genau einmal vorkommt. v7 Ein Pfad wird als Circuit bezeiche12=(v7,v8) net, wenn der erste und der letzte Knoten des Pfades identisch sind. v8 v3 v5 v6 v9 v8 v7 v5 v3 Der Bauplan des Menschen • Ein Graph besteht aus Knoten und Kanten. • G = (V,E), wobei V die Menge der Knoten (vertices) und E die Menge der Kanten E (edges) ist. • Der Grad eines Knoten ist gleich der Zahl der Kanten, die im Knoten enden. Ein Pfad von Knoten vi nach Knoten vj ist eine Folge von Knoten vi , v?, ...., vj , wobei jedes Paar von aufeinander folgene2=(v1,v3) den Knoten vk, vl durch eine Kante v3 (vk, vl) verbunden ist. v1 e1=(v1,v2) e5=(v3,v5) v2 e6=(v4,v5) e3=(v2,v5) v5 e11=(v6,v10) v10 Ein Circuit (Rundgang) wird als einfach (oder als Kreis) bezeichnet, falls alle Knoten außer dem ersten und dem letzten nur einmal auftreten: v3 v5 v6 v9 v8 v7 v4 v3 e9=(v5,v7) e8=(v5,v6) v6 e10=(v6,v9) v9 e13=(v8,v9) e4=(v3,v4) v4 Ein Pfad wird als einfach bezeichnet, wenn jeder Knoten in der e7=(v4,v7) Pfadbeschreibung genau einmal vorkommt. v7 Ein Pfad wird als Circuit bezeiche12=(v7,v8) net, wenn der erste und der letzte Knoten des Pfades identisch sind. v8 v3 v5 v6 v9 v8 v7 v5 v3 Der Bauplan des Menschen • Ein bipartiter Graph besteht aus zwei disjunkten Mengen von Knoten (rot, blau). • Es gibt nur Kanten zwischen einem roten und einem blauen Knoten. • Haben die Kanten eine Richtung, so spricht man von einem gerichteten Graphen (andernfalls von einem ungerichteten Graphen). Mitarbeiter Aufgaben Der Bauplan des Menschen Existiert zwischen jedem Knotenpaar eine Kante, so spricht man von einem vollständigen Graphen. Der Bauplan des Menschen Der Schweitzer Mathematiker Leonard Euler hat sich 1736 mit der folgenden Fragestellung, dem sogenannten Königsberger-Brückenproblem, beschäftigt: A Pregel C D B Ist es möglich, von irgendeinem Punkt in der Stadt loszulaufen und zu diesem Punkt wieder zurückzukehren und dabei genau einmal über jede der sieben Brücken zu wandern. Der Bauplan des Menschen Der Schweitzer Mathematiker Leonard Euler hat sich 1736 mit der folgenden Fragestellung, dem sogenannten Königsberger-Brückenproblem, beschäftigt: A Pregel C D B Ist es möglich, von irgendeinem Punkt in der Stadt loszulaufen und zu diesem Punkt wieder zurückzukehren und dabei genau einmal über jede der sieben Brücken zu wandern. Der Bauplan des Menschen Der Schweitzer Mathematiker Leonard Euler hat sich 1736 mit der folgenden Fragestellung, dem sogenannten Königsberger-Brückenproblem, beschäftigt: A Multi-Graph: Mehrere Kanten zwischen zwei Knoten sind erlaubt. C D B Ist es möglich, von irgendeinem Punkt in der Stadt loszulaufen und zu diesem Punkt wieder zurückzukehren und dabei genau einmal über jede der sieben Brücken zu wandern. = Gibt es einen Circuit in diesem Graphen, der jede Kante nur einmal „begeht“ (verwendet)? Nein! Warum kann es keinen solchen Circuit geben? Der Bauplan des Menschen Der Schweitzer Mathematiker Leonard Euler hat sich 1736 mit der folgenden Fragestellung, dem sogenannten Königsberger-Brückenproblem, beschäftigt: A Multi-Graph: Mehrere Kanten zwischen zwei Knoten sind erlaubt. C D B Ein Graph heißt zusammenhängend (connected), wenn man von jedem Knoten aus jeden anderen Knoten über einen Pfad erreichen kann. Antwort: Es gibt Knoten mit ungeradem Grad (3 und 5). Ein solcher Circuit kann aber nur existieren, wenn alle Knoten geraden Grad haben und der Graph zusammenhängend ist. Nein! Warum kann es keinen solchen Circuit geben? Der Bauplan des Menschen Definition: Ein Graph heißt Euler-Graph, wenn jeder Knoten einen geraden Grad hat und der Graph zusammenhängend ist. Satz: Ein Graph besitzt genau dann einen Euler-Circuit, wenn der Graph ein Euler-Graph ist. A H C I Wir beweisen die schwierigere Richtung (Euler-Graph => Euler Circuit) mittels vollständiger Induktion über die Anzahl m der Kanten: Induktionsstart: m = 2 (trivial). Induktionsannahme: Jeder zusammenhängende Graph mit weniger als m Kanten, dessen Knoten alle geraden Grad haben, besitzt eine Euler-Tour. ein Euler-Graph mit m Kanten. D Sei1.G=(V,E) Bestimme in G einen Kreis. Zum Beispiel K=ACBDA. 2. Lösche die Kanten von K. B E F G Der Bauplan des Menschen Definition: Ein Graph heißt Euler-Graph, wenn jeder Knoten einen geraden Grad hat und der Graph zusammenhängend ist. Satz: Ein Graph besitzt genau dann einen Euler-Circuit, wenn der Graph ein Euler-Graph ist. A H C I B E Wir beweisen die schwierigere Richtung (Euler-Graph => Euler Circuit) mittels vollständiger Induktion über die Anzahl m der Kanten: Induktionsstart: m = 2 (trivial). Induktionsannahme: Jeder zusammenhängende Graph mit weniger als m Kanten, dessen Knoten alle geraden Grad haben, besitzt eine Euler-Tour. ein Euler-Graph mit m Kanten. D Sei1.G=(V,E) Bestimme in G einen Kreis. Zum Beispiel K=ACBDA. 2. Lösche die Kanten von K. Den neuen Graphen nennen wir G‘. Alle Knoten von G‘ haben geraden Grad. Aber der Graph G‘ kann aus mehreren Zusammenhangskomponenten (ZKs) mit weniger als m Kanten bestehen: Z(1) = {A}, Z(2) = {D}, Z(3) = {H,I,C}, Z(4)={B,E,G,F} F G 3. Bestimme die Zusammenhangskomponenten von G‘ 4. Starte für alle Zusammenhangskomponenten diesen (rekursiven) Algorithmus zur Berechnung eines Euler-Circuits: Circ(Z(3)) = CIHC Circ(Z(4)) = BEGFB 5. Mische den Kreis K und die Euler-Circuits der ZKs: Circuit = ACIHCBEGFBDA Der Bauplan des Menschen Zusammenhangskomponenten: Gegeben ein ungerichteter Graph G=(V,E) und ein Knoten v. Bestimme die Zusammenhangskomponente, zu der v gehört. v1 v3 ZK (G,v): 1. Markiere v; 2. Für alle Kanten (v,w) führe die folgenden Operationen aus: v2 v4 a. Falls w nicht markiert ist, dann starte ZK(G,w); v5 v6 v10 v7 Die Laufzeit von ZK(G,v) ist O(#Kanten in ZK(v)). v9 v8 Der Bauplan des Menschen Zusammenhangskomponenten: Gegeben ein ungerichteter Graph G=(V,E) und ein Knoten v. Bestimme alle Zusammenhangskomponenten von G. v1 1 Zusammenhangskomponenten(G): NummerDerZK = 0; Solange es in G einen unmarkierten Knoten v gibt: NummerDerZK++; 1 v3 ZK (G,v, NummerDerZK): 1. Markiere v mit NummerDerZK; 2. Für alle Kanten (v,w) führe die folgenden Operationen aus: 1 v2 1 v4 a. Falls w nicht markiert ist, dann starte ZK(G,w,NummerDerZK); v5 v10 1 1 1 v6 1 v7 1 Die Laufzeit von ZK(G,v, ..) ist O(#Kanten in ZK(v)). v9 1 v8 Die Laufzeit des obigen Algorithmus ist O(|V|+|E|). Der Bauplan des Menschen Zusammenhangskomponenten: Gegeben ein ungerichteter Graph G=(V,E) und ein Knoten v. Bestimme alle Zusammenhangskomponenten von G. v1 1 Zusammenhangskomponenten(G): NummerDerZK = 0; Solange es in G einen unmarkierten Knoten v gibt: NummerDerZK++; 1 v3 ZK (G,v, NummerDerZK): 1. Markiere v mit NummerDerZK; 2. Für alle Kanten (v,w) führe die folgenden Operationen aus: 1 v2 1 v4 a. Falls w nicht markiert ist, dann starte ZK(G,w,NummerDerZK); v5 v10 2 1 2 v6 2 v7 2 Die Laufzeit von ZK(G,v, ..) ist O(#Kanten in ZK(v)). v9 2 v8 Die Laufzeit des obigen Algorithmus ist O(|V|+|E|). Der Bauplan des Menschen Definition: Ein Knoten v eines gerichteten Graphen ist balanciert, wenn die Zahl der in v endenden Kanten gleich der Zahl der in v startenden Kanten ist. Definition: Ein gerichteter Graph ist balanciert, wenn jeder Knoten des Graphen balanciert ist. Definition: Ein gerichteter Graph heißt Euler-Graph, wenn der Graph zusammenhängend und balanciert ist. Satz: Ein Graph besitzt genau dann einen Euler-Circuit, wenn der Graph ein Euler-Graph ist. Beweis: Analog zum konstruktiven Beweis im Falle des ungerichteten Graphen. Definition: Ein Graph besitzt einen Euler-Pfad, wenn es einen Pfad im Graphen gibt, der jede Kante genau einmal verwendet bzw. genau einmal über diese Kante geht. Definition: Ein Knoten v eines gerichteten Graphen ist semi-balanciert falls | indegree(v) – outdegree(v) | = 1. Der Bauplan des Menschen Definition: Ein Graph besitzt einen Euler-Pfad, wenn es einen Pfad im Graphen gibt, der jede Kante genau einmal verwendet bzw. genau einmal über diese Kante geht. Definition: Ein Knoten v eines gerichteten Graphen ist semi-balanciert falls | indegree(v) – outdegree(v) | = 1. Satz: Ein zusammenhängender Graph besitzt genau dann einen Euler-Pfad, wenn er höchstens zwei semi-balancierte Knoten besitzt und alle anderen balanciert sind. Beweis: Analog zum Beweis der Existenz eine Euler-Circuit (mit mehr Fallunterscheidungen). Der Bauplan des Menschen Gegeben ein unbekanntes DNA-Molekül, d.h., die Basenfolge ist unbekannt. Man möchte die Basenfolge lesen (bestimmen). A T C G ????????? ????????? ATGCAGGTCC TACGTCCAGG Gegeben sei ein DNA-Array mit allen möglichen l-Tupeln (alle Basenfolgen der Länge l). • Kopien des mit Fluoreszenzfarbstoff markierten DNAMoleküls werden in Lösung befindlich auf das Array aufgetragen. • Die Kopien des Moleküls binden durch Hybridisierung an die Stellen des Arrays, wo komplementäre l-Tuple vorhanden sind. • Lokalisiere die l-Tuple mittels spektroskopischer Detektoren. • Rekonstruiere die Sequenz anhand ihrer l-Tuple mit Hilfe von kombinatorischen Algorithmen. AA AT AG AC TA TT TG TC GA GT GG GC CA CT CG CC ATG AGG TGC TCC GTC GGT GCA CAG Definition: l-Spektrum einer Sequenz = Menge aller l-Tuple, die in der Sequenz auftreten. Der Bauplan des Menschen • Rekonstruiere die Sequenz anhand ihres l-Spektrums mit Hilfe von kombinatorischen Algorithmen. Shortest-Superstring-Problem: Gegeben eine Menge von Strings { S1, ... , Sm }. Man berechne einen kürzesten (Super) String S, der alle Si als Teilstrings enthält. Das Shortest-Superstring-Problem ist NP-vollständig. Es kann als eine Variante des Traveling-Salesman Problem formuliert werden. Jeder String Si wird durch einen Knoten eines gerichteten vollständigen Graphen G=(V,E) repräsentiert. Die Kante von Si nach Sj erhält ein Gewicht von „– overlap(Si , Sj)“, wobei der „Overlap“ die Länge des maximalen Präfixes von Sj ist, das auch Suffix von Si ist. 0 TGC GCA 0 Hamiltonian Path: -2 Berechne den kürzesten Pfad, CAG der jeden Knoten genau einmal -2 ATG besucht. -2 TCC -2 -2 -2 GTC GGT AGG Der Bauplan des Menschen • Rekonstruiere die Sequenz anhand ihres l-Spektrums mit Hilfe von kombinatorischen Algorithmen. Euler-Pfad-Ansatz: Wir betrachten alle (l-1)-Tuple. Für jedes l-Tuple im l-Spektrum führen wir eine Kante in den Graph ein. Die Kante führt vom Knoten mit den ersten (l-1) Buchstaben des l-Tuple zum Knoten mit den letzten (l-1) Buchstaben des l-Tuple. Berechne den (einen) Euler-Pfad des Graphen.. Ein Graph kann mehrere (viele) Euler-Pfade besitzen. • l-Spektrum S = { ATG, TGC, GCA, CAG, AGG, GGT, GTC, TCC } AT TG GC CA AG GG • l-Spektrum S = { ATG, TGG, GGC, GCG, CGT, GTG, TGC, GCA } AT GT CG TG GC GG CA GT TC Der Bauplan des Menschen Wie kann man testen, ob ein Euler-Graph einen eindeutig bestimmten Euler-Circuit besitzt? • Man zerlege den Euler-Graph in einfache Kreise. „Einfach“ bedeutet, dass jede Kante zu genau einem Kreis gehört. Der Schnittgraph G= (V, E) dieser Kreise ist wie folgt definiert: A H K1 C K2 Die Kreise des Graphen sind die Knoten V = { K1 , ... , Kn }. D I Für jeden Knoten, den Ki und Kj gemeinsam haben, wird eine Kante zwischen Ki und Kj eingeführt. Satz: B E K3 G Ein Euler-Graph hat genau dann einen eindeutig bestimmten Euler-Circuit, wenn der Schnittgraph ein Baum ist. F Der Bauplan des Menschen Fehler bei der Hybridisierung oder bei der Auswertung des DNA-Arrays? Eliminieren den Euler-Pfad. Repeats länger als (l-1) Buchstaben. Eliminieren den Euler-Pfad. ATCTG.....TTCTA TG AT TC TT CT TA Mit DNA-Arrays (SBH) kann man nur sehr kurze DNA-Moleküle sequenzieren. Man hat auch nur sehr kurze l-Tuple (l=8) zur Verfügung. Der Bauplan des Menschen Fragment-Sequence-Assembly-Problem: Gegeben eine große Zahl (10 x Überdeckung) von sequenzierten Fragmenten der Länge ca. 500 bp. (5) Assemblieren ATGGCCTCGTCAATGCATG CCGGTGCATGCATGGCCTCGTCAA ATGCGGTTGCTACGT ATCGGTGACCA ATTCATGCGGTTGC CGTCGTATCG GACCACGGTT TCATGCGG ACGTCGT TCGGTGACCACGGTT ATTCATG GGTTGCTAC CGTATCG ACCACGG -------------------------------------ATTCATGCGGTTGCTACGTCGTATCGGTGACCACGGTT • Man suche alle Paare von Textfragmenten, die sich überlappen, d.h., das Ende des einen Fragments ist identisch oder ähnelt dem Anfang des anderen Fragments oder umgekehrt. • Mit Hilfe dieser Überlappungsinformationen versucht man das riesige Textpuzzle zusammenzusetzen und den Originaltext zu rekonstruieren. Der Bauplan des Menschen Fragment-Sequence-Assembly-Problem: Gegeben eine große Zahl (10 x Überdeckung) von sequenzierten Fragmenten der Länge ca. 500 bp. (5) Assemblieren Idury & Waterman (1995): Idee: SBH Nachahmen. Zerlege jedes Fragment der Länge n in (n-l+1) l-Tuple (z.B. l = 20). Generiere Graph wie bei SBH mit den entsprechenden (l-1) Tuples. Berechne den (einen) Euler-Pfad. AATGCCCGTTGCTACTGCGACGTCACGTGCATGCG........................................................ AATGCCCGTTGCTACTGCG ATGCCCGTTGCTACTGCGA TGCCCGTTGCTACTGCGAC GCCCGTTGCTACTGCGACG CCCGTTGCTACTGCGACGT CCGTTGCTACTGCGACGTC usw. Der Bauplan des Menschen Fragment-Sequence-Assembly-Problem: Gegeben eine große Zahl (10 x Überdeckung) von sequenzierten Fragmenten der Länge ca. 500 bp. (5) Assemblieren Idury & Waterman (1995): Idee: SBH Nachahmen. Zerlege jedes Fragment der Länge n in (n-l+1) l-Tuple (z.B. l = 20). Generiere Graph wie bei SBH mit den entsprechenden (l-1) Tuples. Berechne den (einen) Euler-Pfad. Dieser Ansatz funktioniert, falls 1. perfekte Daten (keine Fehler) vorliegen. 2. keine Repeats, die länger als (l-2) sind, vorkommen. Der Bauplan des Menschen Pevzner&Tang&Waterman (2001): Sei S = { s1 , ... , sn } die Menge der Fragmente. Sei Sl-1 das (l-1)-Spektrum von S. Sei U eine obere Schranke für die Zahl der Fehler in jedem der Fragmente. Idee: Man minimiere die Größe |Sl-1| des (l-1)-Spektrums, indem man in jedem Fragment maximal U Korrekturen durchführt. Jeder Fehler generiert (l-1) fehlerhafte Tuple (< (l-1) falls am Rand eines Fragments). Brute-Force-Ansatz (Greedy): Für alle Fragmente: 1. ZahlDerKorrekturen = 0; 2. Solange (ZahlDerKorrekturen < U) a. Bestimme Korrektur, so dass |Sl-1| um (l-1) verkleinert wird. b. ZahlDerKorrekturen++; Tests von Pevzner&Tang&Waterman (2001) zeigen, dass die Zahl der Sequenzierungsfehler um 86.5 % reduziert werden. Der Bauplan des Menschen Pevzner&Tang&Waterman (2001): Sei S = { s1 , ... , sn } die Menge der Fragmente. Sei Sl-1 das (l-1)-Spektrum von S. Ein (l-1) Tuple heißt solide, wenn es in mehr als M Fragmenten vorkommt. Beispiel: M = 5 (2) für 10 x Überdeckung. Zwei (l-1) Tuple heißen Nachbarn, wenn sie eine Mutation voneinander „entfernt“ sind. Ein (l-1) Tuple t heißen Orphan (Waise), wenn 1. es nicht solide ist, d.h., m(t) M, 2. es genau einen Nachbarn t‘ hat und 3. m(t) m(t‘). Für alle Fragmente: 1. ZahlDerKorrekturen = 0; 97.7 % Fehlerreduzierung 2. Solange (ZahlDerKorrekturen < U) a. Suche Orphan t, so dass ERSETZE(t durch t‘) b. ZahlDerKorrekturen++; |Sl-1| um (l-1) verkleinert. Der Bauplan des Menschen Pevzner&Tang&Waterman (2001): Sei S = { s1 , ... , sn } die Menge der Fragmente. Sei Sl-1 das (l-1)-Spektrum von S. G(Sl-1) = (V,E) sei der sogenannte de Bruijn Graph mit V = (l-1) Spektrum von S. E = {(vi , vj) | vi und vj repräsentieren „benachbarte“ (l-1) Tuples } Genauer: Jede Kante in G entspricht einem l-Tuple t von S. vi repräsentiert die ersten (l-1) Buchstaben von t. vj repräsentiert die letzten (l-1) Buchstaben von t. Bemerkung: Der de Bruijn Graph besitzt einen (eindeutigen) Euler-Pfad, wenn 1. keine Sequenzierungsfehler in den si vorliegen, 2. keine Repeats, die länger als (l-2) sind, in den si vorkommen und 3. der Graph zusammenhängend ist (keine Überdeckungslücken vorkommen). Contig 1 Contig 2 Der Bauplan des Menschen Pevzner&Tang&Waterman (2001): Ein Pfad v1 , .... , vn in dem de Bruijn Graph heißt Repeat, falls v1 a. indegree(v1) > 1 b. c. outdegree(vn) > 1 indegree(vi) = outdegree(vi) = 1 v2 für i {2, ..., n} vn-1 vn Ein Euler-Pfad besucht diesen Teilpfad mehrmals (Multiplizität der Kanten ?, Multigraph?). Die Kanten, die in v1 enden, heißen Eingänge. Die Kanten, die in vn starten, heißen Ausgänge. Jedes Vorkommen eines Repeats besitzt einen Eingang und einen Ausgang. Die Information, welcher Ausgang mit welchem Eingang gekoppelt ist (zu einem Vorkommen eines Repeats gehört), geht im de Bruijn Graph verloren. Der Bauplan des Menschen Pevzner&Tang&Waterman (2001): Euler-Superpfad-Problem: Gegeben ein de Bruijn Graph G und einem Menge von Pfaden P (die Pfade, die den Fragmenten entsprechen). Finde einen Euler-Pfad in diesem Graph, der alle Pfade von P als Teilpfade enthält. pi v1 v2 vn-1 vn pj Lösungsansatz: Führe eine Reihe von Äquivalenztransformationen aus, (G,P) (G1,P1) (Gk,Pk) so dass es eins-zu-eins Beziehung zwischen den Euler-Superpfaden in den Gi gibt. Der Bauplan des Menschen Pevzner&Tang&Waterman (2001): Lösungsansatz: Führe eine Reihe von Äquivalenztransformationen aus, (G,P) (G1,P1) (Gk,Pk) so dass es eins-zu-eins Beziehung zwischen den Euler-Superpfaden in den Gi gibt. Ziel: Ein Graph Gk, in dem jeder Pfad aus Pk aus einer Kante besteht, d.h., das Euler-Pfad-Problem in Gk liefert dann eine Lösung des Superpfad-Problems in G. Transformation bei einfachen Kanten (keine multiplen Kanten). P->x = {p| p endet mit x} Px,y = {p| p enthält x und y} Py-> = {p| p startet mit y} vin x=(vin,vmid) vmid vor Transformation y=(vmid,vout) vout Der Bauplan des Menschen 1. Ersetze x und y in allen Pfaden in Px,y durch z. z vin vout vmid nach Transformation P->x = {p| p endet mit x} 2. Ersetze y durch z in allen Pfaden in Py-> 3. Ersetze x durch z in allen Pfaden in P->x Px,y = {p| p enthält x und y} Py-> = {p| p startet mit y} vin x=(vin,vmid) vmid vor Transformation y=(vmid,vout) vout Der Bauplan des Menschen Px,y = {p| p enthält x und y1} y1 =(vmid,vout1) vin x=(vin,vmid) vout1 vmid P->x = {p| p endet mit x} y2 =(vmid,vout2) vout2 Beispiel mit mutiplen Kanten: vor Transformation Problem: Wie enden die Pfade in P->x ? Px,y = {p| p enthält x und y1} z vin P->x x=(vin,vmid) vout1 vmid y2 =(vmid,vout2) vout2 Beispiel mit multiplen Kanten: nach Transformation Der Bauplan des Menschen Für jeden Pfad p P->x muß entschieden werden, ob (1) x durch z ersetzt wird. (2) er (weiter) in x endet (Richtung y2). Definition: Zwei Pfade heißen konsistent, wenn ihre Vereinigung wieder ein Pfad ist. Ein Pfad p ist konsistent mit einer Menge von Pfaden P, wenn p zu jedem Pfad in P konsistent ist. Problem: Wie enden die Pfade in P->x ? Px,y = {p| p enthält x und y1} z vin P->x x=(vin,vmid) vout1 vmid y2 =(vmid,vout2) vout2 Beispiel mit multiplen Kanten: nach Transformation Der Bauplan des Menschen Sei p P->x : Fall 1: p ist konsistent mit genau einer der Pfadmengen Px,y1 und Px,y2 Px,y1 p vout1 x=(vin,vmid) vin vmid vout2 (1) x wird durch z in p ersetzt. Px,y2 Problem: Wie enden die Pfade in P->x ? Px,y = {p| p enthält x und y1} z vin P->x x=(vin,vmid) vout1 vmid y2 =(vmid,vout2) vout2 Beispiel mit multiplen Kanten: nach Transformation Der Bauplan des Menschen Sei p P->x : Fall 1: p ist konsistent mit genau einer der Pfadmengen Px,y1 und Px,y2 Px,y1 vout1 x=(vin,vmid) vin p vmid vout2 (2) p endet (weiter) in x. Px,y2 Problem: Wie enden die Pfade in P->x ? Px,y = {p| p enthält x und y1} z vin P->x x=(vin,vmid) vout1 vmid y2 =(vmid,vout2) vout2 Beispiel mit multiplen Kanten: nach Transformation Der Bauplan des Menschen Sei p P->x : Fall 2: p ist inkonsistent mit beiden Pfadmengen Px,y1 und Px,y2 Px,y1 vout1 x=(vin,vmid) vin vmid Px,y2 p vout2 Es existiert keine Lösung des Superpfad-Problem Problem: Wie enden die Pfade in P->x ? Px,y = {p| p enthält x und y1} z vin P->x x=(vin,vmid) vout1 vmid y2 =(vmid,vout2) vout2 Beispiel mit multiplen Kanten: nach Transformation Der Bauplan des Menschen Sei p P->x : Fall 3: p ist konsistent mit beiden Pfadmengen Px,y1 und Px,y2 Px,y1 p vout1 x=(vin,vmid) vin vmid Existiert ein p P->x mit dieser Eigenschaft, so nennt man x nicht-auflösbar. Nicht-auflösbare Kanten x werden zum Schluss behandelt. Problem: Wie enden die Pfade in P->x ? Px,y = {p| p enthält x und y1} z vin P->x x=(vin,vmid) vout2 vout1 vmid y2 =(vmid,vout2) vout2 Beispiel mit multiplen Kanten: nach Transformation Px,y2 Der Bauplan des Menschen Sei x eine nicht-auflösbare Kante (siehe Beispiel unten). In diesen Situationen wendet man Cut-Techniken an. Px-> P->x vin vout1 x=(vin,vmid) vmid P->x vout2 Px-> Man kürze die Pfade um x. vout1 vin x=(vin,vmid) vmid vout2 Der Bauplan des Menschen Resultate von Pevzner&Tang&Waterman für „Neisseria Meningitidis“: • Länge des Genoms: 2,184,406 bp. • 53263 Fragmente mit durchschnittlicher Länge 400 bp. • 126 perfekte Repeats bis zu einer Länge von 3832bp. • 255631 Fehler in den Fragmenten (4.8 per Fragment, 1.2 % Fehlerrate). • 234410 Fehler wurden durch die „Waisenprozedur“ (M=2) eliminiert. • 1452 Fehler wurden durch die „Waisenprozedur“ produziert eliminiert. • l = 20 Tuple-Größe wurde verwendet. • 4,081,857 = Zahl der Knoten im de Bruijn Graph bevor das Superpfad-Problem gelöst wurde. • 999 = Zahl der Knoten im de Bruijn Graph nachdem das Superpfad-Problem gelöst wurde. • 1023 = Zahl der Kanten im de Bruijn Graph nachdem das Superpfad-Problem gelöst wurde. • 122 Zusammenhangskomponenten • 5 Stunden Laufzeit auf einer Sun Enterprise E4500/5500