Euler-Graph - Universität des Saarlandes

Werbung
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
Herunterladen