s-1

Werbung
Proseminar “Algorithmen und Datenstrukturen”
im WS 02/03
Phylogenetische Bäume &
ihre Konstruktion
referiert von
Marc Bachstein und Youssef Ben cheikh
Gliederung
1. Was ist Phylogenie?
2. Aufbau von phylogenetischen Bäumen
3. Konstruktion von phylogenetischen Bäumen
1. UPGMA (Greedy-Ansatz)
 Ultra-Metriken
2. Neighbour Joining
4. Zusammenfassung
1. Was ist Phylogenie?
Phylogenie beschäftigt sich mit der Verwandtschaft zwischen „Spezies“
( Darwins Evolutionstheorie)
Baumartige Darstellung der Verwandschaftsgrade
Klassifizierung hier unter morphologischen Gesichtspunkten wie z.B. Fell, Federn
2. Aufbau von phylogenetischen Bäumen
Nun Differenzierung über die verschiedenen DNAs
Zur Erinnerung:
DNA – Sequenz ist eine Folge von Buchstaben (bzw. Basen)
aus dem Alphabet A = {A,G,C,T}
z. B.
S = ATCGAATACAGATTCGGT
Doch wie sehen diese Bäume nun aus?
Bei phylogenetischen Bäumen gibt es 2 verschiedene Darstellungen:
S2
S3
S6
S7
S1
Zeit
S1 S3
S5
S2 S4
Phylogenetischer
Baum mit „Urvater“
S8
S5
S4
Phylogenetischer
Baum ohne „Urvater“
S1, ..., S8 sind DNA-Sequenzen
Bei beiden gilt:
•Kanten sind gewichtet ( Kantenlänge gibt zeitlichen Abstand zwischen
zwei Sequenzen an)
•Es ist ein natürliches Distanzmaß D(Si,Sj) zwischen zwei Sequenzen Si und
Sj gegeben
Definition:
Ein phylogenetischer Baum T auf einer Sequenzfamilie S ist ein Baum
dessen Blätter mit den Elementen von S markiert sind.
S1, ..., S5 sind DNA-Sequenzen
Sequenzfamilie S = {S1, ..., S5}
Zeit
S1
S3
S5
S2 S4
Ein (phylogenetisches) Alignment für T ist eine Markierung der inneren
Knoten von T.
(Die Struktur des Baumes wird dabei nicht verändert!)
Dieses Alignment heißt intern (pseudo-lifted) wenn alle Markierungen
aus S stammen, und streng intern (lifted), wenn jeder Elter-Knoten die
Markierung eines seiner Kind-Knoten übernimmt.
Betrachten wir noch einmal das Kostenmaß zwischen zwei Sequenzen:
Zwei Sequenzen si und sj stehen in einer (zeitlichen) Distanz D(si,sj)
zueinander.
Für jede dieser Distanzen gilt die Eigenschaft der Metrik:
Die Funktion D: S2  R+ heißt Metrik, wenn
(M1)  s1,s2  S: D(s1,s2) = 0  s1 = s2
(Definitheit),
(M2)  s1,s2  S: D(s1,s2) = D(s2,s1)
(Symmetrie),
(M3)  s1, s2, s3  S: D(s1,s3)  D(s1,s2) + D(s2,s3) (Dreiecksungleichung)
Im folgenden werden alle Distanzen zwischen den Sequenzen als vorgegeben
vorausgesetzt. Sie können aber auch anhand von Algorithmen (1. Vortrag) im
Vorfeld berechnet werden.
In unseren Beispielen gehen wir von der einfachsten Form, der HammingDistanz DH aus.
Beispiel:
s1 = AGCACGAT
s2 = ATCACACT
DH(s1,s2) = 3
Gegeben sei nun ein Baum T.
Wir suchen ein optimales Alignment, welches die kleinsten Gesamtkosten
(Summe aller Kantenkosten) in einem Baum verursacht.
 NP-hartes Problem
Problem wird auf optimales internes Alignment beschränkt (s  S)
(Approximationsalgorithmus)
 Hier Lösung in O(|S|3) durch dynamische Programmierung
d(v,s) bezeichnet die Summe aller Kantenkosten des Baumes mit der Wurzel v
und mit der Markierung s an v.
v
...
...
s
...
Demnach ist dopt = min ( d(Wurzel,s)).
sS
...
...
Wir probieren also an der Wurzel alle s  S aus
und wählen dann das s, welches die geringsten
Gesamtkosten verursacht.
Wie berechnen wir d(v,s)?
Angenommen v habe nur Blätter:

d(v,s) =
alle Blätter xi mit
Markierung si
D(si,s)
v habe nun auch Teilbäume mit Wurzeln w1, w2, ..., wr
d(v,s) = min
s1,..., sr
[ 1i r [D(s,s ) + d(w ,s )]]
i
i i
(|S|r verschiedene Möglichkeiten)
Da Wahlen der si unabhängig voneinander:
d(v,s) =

1 i r
min [D(s,si) + d(wi,si)]
si
Bei streng internem Alignment noch weniger zu berechnen:
d(v,s) =
[

1 i r, ij
S Blatt im j-ten Teilbaum
]
min [D(s,si) + d(wi,si)] + d(wj,s)
Wir werden nun zeigen, dass ein Baum mit optimalem lifted Alignment
höchstens doppelt so große Gesamtkosten hat wie ein Baum mit optimalem
Alignment:
Also: Dopt(lifted Alignment)  2  D(opt Aligmnet)
Beim lifted Alignment existieren Kanten mit Kosten 0 und > 0
s1
s2
s3 s4
s1
s5 s6 s7 s8 s9 s10 s11
s4
s3
s10
s 5 s8
s10
:= Kosten >0
:= Kosten 0
s10
s4
s4
Beispiel für phylogenetischen Baum TL mit lifted Alignment
s1
s2
s3 s4
s1
s5 s6 s7 s8 s9 s10 s11
s4
s3
s10
s5 s8
s10
s10
s4
s4
Vergleich der Kosten von TL und T*
Bevor wir die Kosten der Bäume
miteinander vergleichen können,
benötigen wir aber zunächst einen
Zwischenschritt, in welchem wir
zeigen werden, dass:
TL (optimales lifted Alignment)
s1
s2
s3 s4
D(SvL,SwL)  2  D(SwL,Sv*)
s5 s6 s7 s8 s9 s10 s11
Sv L
Sv *
SwL
TL
T* (optimales Alignment)
T*
Z.z.: D(SvL,SwL)  2  D(SwL,Sv*)
Sq L = S v L
Sq L
Sv *
SwL
TL
D(SvL,SwL)  D(SvL,Sv*) + D(Sv*,SwL)
= D(SqL,Sv*) + D(Sv*,SwL)
 D(SwL,Sv*) + D(Sv*,SwL)
= 2  D(SwL,Sv*)
T*
Unter den Kindern von v
wählen wir ein Kind q aus, das
den Wert D(SqL,Sv*) minimiert.
Als Markierung von vL wählen
wir SqL.
Z.z.: D(SvL,SwL)  2  D(SwL,Sv*)
Sq L = S v L
Sq L
Sv *
SwL
TL
T*
Nun können wir die Kosten der Bäume miteinander vergleichen:
Kosten(T*)  Kosten(TL)
=  Kantenkosten  0
=
iS
Kosten der durch Si verursachten Kante
= 2  Kosten (T*)
3. Konstruktion von phylogenetischen Bäumen
In der Praxis handelt es sich bei phylogenetischen Bäumen stets um
binäre Bäume!
Unser Ziel bei der Konstruktion von phylogenetischen Bäumen ist es
möglichst nah am optimalen Baum zu bleiben.
D.h. wir wollen die „Fehler“ zum optimalen Baum möglichst gering
halten, also folgenden Ausdruck minimieren:
 (D(i,j) - d(i,j))2
D(i,j) = vorgegebene Distanz
(i,j)
d(i,j)= im Baum abgelesene Distanz
 NP-hartes Problem
Eine effiziente Alternative dazu bietet z.B. der Greedy-Ansatz UPGMA
3.1 UPGMA (unweighted pair groups methods with arithmetic mean)
Idee: Wir gruppieren die Sequenzen in Cluster (Mengen), berechnen
die Distanzen der Cluster zueinander, und gruppieren erneut...
s1
s2
s3
s4
Die Distanz zwischen zwei Clustern ergibt sich durch:
Dij = d(Ci,Cj) :=

pCi, qCj
d(p,q)
|Ci|  |Cj|
Ci und Cj sind Cluster (Mengen)
Die Distanz zwischen zwei bereits vereinigten Clustern (i,j) und einem neuen
Cluster k:
d((i,j),k) = d(Ci U Cj, Ck)
=

d(p,q)
p Ci U Cj, qCk
=
=
=
1
|Ci| + |Cj|
1
|Ci| + |Cj|
1
|Ci| + |Cj|
(|Ci| + |Cj|)  |Ck|
(
(

d(p,q)
pCi, qCk
|Ck|

|Ci|
pCi, qCk
( |C |  d
i
ik

+
d(p,q)
pCj, qCk
|Ck|
+ |Cj|

d(p,q)
|Ci|  |Ck|
)
pCj, qCk
+ |Cj|  djk
)
Die Distanz ist also in O(1) berechenbar.
d(p,q)
|Cj|  |Ck|
)
Der Algorithmus von UPGMA:
•Initialisierung: Bilde aus jeder Sequenz ein Cluster der Größe 1 und
der Höhe 0.
•Wähle 2 Cluster Ci und Cj mit minimaler Distanz.
•Bilde neues Cluster Ck = Ci U Cj, streiche Ci, Cj, berechne alle dkl
•Bilde Knoten für Ck mit Kindern Ci und Cj und Höhe
dij
2
Also:
s1
s2
s3
s4
Cluster: C1 = {s1}, C2 = {s2}, C3 = {s3}, C4 = {s4}
s1
s2
s3
s4
Cluster: C1 = {s1}, C2 = {s2}, C3 = {s3}, C4 = {s4}
Cluster: C1 = {s1}, C5 = {s2,s3}, C4 = {s4}
dij
s1
s2
s3
s4
2
Ultra-Metriken:
In einer Ultra-Metrik gilt für 3 Werte a,b,c entweder
•a = b = c
•oder (sei c o.B.d.A. der kleinste der 3 Werte) a = b > c
Übertragen auf die Distanzen bedeutet dies:
a
b
c
dab = dac = dbc
a
b
c
dac = dbc > dab
Besitzen die Distanzen der Eingabe-Sequenzen zueinander nicht die
Ultrametrik-Eigenschaft, dann kann es bei dem durch UPGMA
konstruierten Baum zu falschen Ergebnissen kommen.
UPGMA mit Ultra-Metrik
Behauptung: Wenn die Distanzen eine Ultra-Metrik bilden, bekommen wir
duch den UPGMA-Algorithmus einen vernünftigen Baum.
(d.h. Höhe Eltern ≥ Höhe Kinder)
Beweis (durch Widerspruch):
Annahme: Höhe(p) < Höhe(k)
dkl =
p
k
i
l
(also k kein Blatt, da Blätter Höhe 0 haben)
1
(dil  |Ci| + djl  |Cj|)
|Ci| + |Cj|
= 2  Höhe(p) < 2  Höhe(k) =dij (nach Annahme)
j
Also:
1
|Ci| + |Cj|
( |C |  d
i
il
+ |Cj|  djl < d
ij
)
=> |Ci|  dil + |Cj|  djl < dij  |Ci| + dij  |Cj|
Nach der Ultrametrik-Eigenschaft gilt: dil = djl ≥ dij
=> dil < dij und djl < dij
=> i und j durften gar nicht verbunden werden, weil
dij nicht kleinste Distanz war. (Widerspruch)
Beispiel:
Wir haben 5 unterschiedliche Sequenzen:
A: ATCGAATACAGATTCGGT
B: AACGAATACAGATTCGGT
D: AGTGCATCCAGTTTCAGT
E: AGAGCATCCAGTTTCCGT
C: ACCGTATGCAGCTTCGGT
A
B
C
D
A
B
C
D
E
-
1
-
4
4
-
6
6
6
-
6
6
6
2
-
E
Bestimmen des Minimus:
d(A,B) = 1
=> neues Cluster = {{A},{B}}
Berechnung der Kantenlänge bis zum
Knoten:
=> d(A,B)/2 = 0,5
0,5
A
Distanzmatrix M
B
C
D
E
Die Distanz zwischen zwei Clustern Ci,j und Ck berechnet man (wie schon
gezeigt) mit folgender Formel:
d((i,j),k) =
1
|Ci| + |Cj|
( |C |  d
i
ik
+ |Cj|  djk
)
Man erhält somit folgende neue Distanzmatrix:
A
A
B
C
D
-
B
1
-
C
4
4
-
D
6
6
6
-
E
alte Distanzmatrix M
E
6
6
6
2
-
{A,B}
C
D
{A,B}
C
D
E
-
(4+4)/2
=4
(6+6)/2
=6
(6+6)/2
=6
-
6
-
6
2
-
E
neue Distanzmatrix M’
Mit der neuen Matrix M’ fahren wir nun genauso fort:
{A,B}
{A,B}
-
C
D
4
-
C
D
6
6
-
E
E
6
6
2
-
Bestimmen des Minimus:
d(D,E) = 2
=> neues Cluster = {{D},{E}}
Berechnung der Kantenlänge bis zum
Knoten:
=> d(D,E)/2 = 1
Distanzmatrix M’
{A,B}
C
{D,E}
{A,B}
C
{D,E}
-
4
(6+6)/2 =6
-
(6+6)/2 =6
1
0,5
A
neue Distanzmatrix M’’
B
C
D
E
Analog geht es weiter mit der Matrix M’’:
{A,B}
C
{D,E}
-
4
6
-
6
{A,B}
C
{D,E}
-
Bestimmen des Minimus:
d((A,B),C) = 4
=> neues Cluster = {{A,B},{C}}
Berechnung der Kantenlänge bis zum
Knoten:
=> d((A,B),C)/2 = 2
Distanzmatrix M’’
{A,B,C}
{A,B,C} {D,E}
{D,E}
(12+6)/(2+1) =6
neue Distanzmatrix M’’’
1,5
1
0,5
A
B
C
D
E
Als letztes wird die Matrix M’’’ bearbeitet:
{A,B,C}
{D,E}
{A,B,C}
{D,E}
-
6
-
Distanzmatrix M’’’
Bestimmen des Minimus:
d((A,B,C),(D,E)) = 6
=> neues Cluster = {{A,B,C},{D,E}}
Berechnung der Kantenlänge bis zum
Knoten:
=> d((A,B,C),(D,E))/2 = 3
1
2
Unser fertiger UPGMA-Baum!
1,5
1
0,5
A
B
C
D
E
Bei dem UPGMA-Verfahren entstehen immer Bäume mit Urvater, wobei
zwei Sequenzen als benachbart angesehen werden, deren Abstand minimal ist.
Bei dem nächsten Algorithmus entstehen Bäume ohne Urvater. Es werden
Distanzen gebildet, die die mittlere Distanz zu allen anderen Sequenzen
abziehen.
Es können hier Kanten zwischen Sequenzen entstehen, die nicht die minimale
Distanz zueinander haben.
Es wird ein ungewurzelter, additiver Baum konstruiert.
Es handelt sich um den Neighbour –Joining-Algorithmus.
3.2 Neighbour-Joining Algorithmus
Zur Erinnerung:
Unser Ziel bei der Konstruktion von phylogenetischen Bäumen ist es
möglichst nah am optimalen Baum zu bleiben.
D.h. wir wollen die „Fehler“ zum optimalen Baum möglichst gering
halten, also folgenden Ausdruck minimieren:
 (D(i,j) -
d(i,j))2
(i,j)
D(i,j) = vorgegebene Distanz
d(i,j)= im Baum abgelesene Distanz
 NP-hartes Problem
Wie der UPGMA-Algorithmus bietet der Neighbour-Joining eine effiziente
Alternative mit einer Laufzeit von O(N3).
Distanz von einem neuen Elterknoten k zu allen anderen Knoten
Gegeben sind dim, dij, djm.
m
k = (i,j)
i
j
dim = dik + dkm
djm = djk + dkm
Also: dkm =
2 dkm = dim – dik + djm - djk
= dim + djm - dij
dim + djm - dij
(wegen dij = dik + djk)
2
Wir haben also zwei Knoten i und j miteinander verbunden, erhalten dabei
den Knoten k, und berechnen die Distanzen von k zu allen anderen Knoten.
Doch es bleibt die Frage, welche Knoten i und j man verbinden soll.
Dazu definieren wir eine sog. “Kunstdistanz” K:
Kij := dij – (ri +rj)
ri ist der durchschnittliche Abstand zu allen anderen Knoten
1
ri :=
m≠i dim
n-2
∑
Wir definieren dik und djk:
dik =
dij+(ri-rj)
2
djk =
dij+(rj-ri)
2
Wir haben nun alle Formeln, mit denen der Neighbour-Joining Algorithmus
arbeitet:
m
Zusammgefasst:
Distanz von neuem Knoten k zu allen anderen Knoten
dim + djm - dij
dkm =
i
2
Wir haben eine “Kunstdistanz” K definiert, um i und j zu wählen:
Kij := dij – (ri +rj)
ri ist der durchschnittliche Abstand zu allen anderen Knoten
1
∑ k≠i dik
ri :=
n-2
Die Kantenlängen dki und dkj:
dij+(rj-ri)
dij+(ri-rj)
d
=
jk
dik =
2
2
Es folgt jetzt der Algorithmus.
k = (i,j)
j
Algorithmus: Neighbour Joining
1) Berechne alle ri und alle Kij.
2) Wähle i und j mit minimalem Kij.
3) Erzeuge den neuen Knoten k=(i,j) und Kanten (i,(i,j)) und (j,(i,j)) mit den
Längen:
dij+(rj-ri)
dij+(ri-rj)
d
=
jk
dik =
2
2
Dann ist zwar dik ≠ djk, aber dij ist richtig widergegeben.
4) Berechne für m  {i,j}
dkm =
dim + djm - dij
2
5) Die neue Blättermenge B’ ergibt sich aus der alten Blättermenge B durch
B’ = (B – {i,j}) U {k}
Alle Schritte werden iteriert, bis alle Blätter im Baum durchlaufen sind, also
(n-1)-mal.
Beispiel:
Gegeben seien 4 Sequenzen, die sich in
der folgenden Distanzmatrix darstellen
lassen.
1) Alle ri werden berechnet:
rA = ½ (8+7+12)=13,5
rB = ½ (8+9+14)=15,5
rC = ½ (7+9+11)=13,5
rD = ½ (12+14+11)=18,5
B= {A,B,C,D}
5) B’ ={C,D,k1}
2
=3
dB,k =
1
-
8
-
C
D
7
B -21
9
C -20 -20 -
= 8 – (13,5 +15,5) = -21
2) Wähle i und j mit minimalem Kij.
=> KAB oder KCD
Wir wählen die Knoten A und B
3) Bestimmung der Kantenlänge:
8 +(13,5-15,5)
B
A
Alle Kunstdistanzen Kij werden berechnet:
KAB = dAB – (rA +rB)
dA,k
1
=
A
12
14
11
D -20 -20 -21 Distanzmatrix M
B
5
A
C
k1
3
D
8 +(15,5-13,5)
2
=5
4)  nächste Seite
4) Distanzen von k1 werden neu ermittelt. Es entsteht eine neue Distanzmatrix.
A
A
-
B
C
D
8
-
7
B -21
9
C -20 -20 -
12
14
11
D -20 -20 -21 alte Distanzmatrix M
Hierbei ist:
dAC + dBC - dAB
dk C =
=4
1
2
dAD + dBD - dAB
dk D =
=9
1
2
K1 C
D
K1 -
4
9
C
-
11
D
-
neue Distanzmatrix M’
Mit dieser Distanzmatrix wird
analog verfahren.
1) Alle ri werden berechnet:
B ={C,D,k1}
5) B’ ={D,k2}
rK = ½ (4+9)=6,5
1
rC = ½ (4+11)=7,5
rD = ½ (9+11)=10
K1 C
Alle Kunstdistanzen Kij werden berechnet:
2) Wähle i und j mit minimalem Kij.
Wir wählen die Knoten K1 und C
1
2
4+(6,5-7,5)
= 1,5 dC,k =
4 +(7,5-6,5)
K1 -
4
9
C -10
-
11
D -7,5 -6,5
3) Bestimmung der Kantenlänge:
dk , k =
D
= 2,5
2
2
2
4) Da wir nur noch 2 Knoten verbinden müssen,
berechnen wir keine neue Distanzmatrix,sondern
verbinden sie direkt.
-
Distanzmatrix M’
B
5
A
k1
3
2,5
k2
1,5
8,5
D
Es bleibt nur noch die Kantenlänge von k2 zu D zu berechnen.
Aus der vorgegebenen Distanzmatrix entnehmen wir die Distanz dCD = 11.
Hieraus ergibt sich dk
2D
= 8,5.
C
Zur Laufzeitanalyse von Neighbour Joining:
In der ersten Runde ergibt sich
1. Schritt: Berechnung ri: O(n2)
Berechnung Kij: O(n2)
2. Schritt: Minimales Kij wählen: O(n2)
3. Schritt: Neuer Knoten mit Längen: O(1)
4. Schritt: Neue Distanzmatrix erstellen: O(n)
5. Schritt: Neue Blättermenge erstellen: O(n)
Für die weiteren Durchläufe gilt:
1. Schritt:
3.- 5. Schritt:
Berechnung ri: O(n)
Berechnung Kij: O(n)
Zusammen in O(n2)
Damit hat der Algorithmus eine Gesamtlaufzeit von O(n3)
4. Zusammenfassung
Herunterladen