Algorithmische Bioinformatik Prof. Dr. Sven Rahmann LS 11, Fakultät für Informatik, TU Dortmund Spezialvorlesung Wintersemester 2008/09 Spezialvorlesung Sommersemester 2010 Entwurf vom 22. Juli 2010 Inhaltsverzeichnis 1 Physikalische Kartierung 1.1 Das Partial Digest Problem (PDP) . . . . . . . . . . . . . . . . . . . 1.1.1 Problemstellung . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.2 Fragen zur Eindeutigkeit des PDP . . . . . . . . . . . . . . . 1.1.3 Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Das Double Digest Problem (DDP) . . . . . . . . . . . . . . . . . . . 1.2.1 Problemstellung . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.2 Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.3 Komplexität . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Kartierung durch Hybridisierung und das Consecutive Ones Problem 1.3.1 Problemstellung . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.2 pq-Bäume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.3 Der Reduce-Algorithmus: Übersicht . . . . . . . . . . . . . . 1.3.4 Der Reduce-Algorithmus: Regeln . . . . . . . . . . . . . . . . 1.3.5 Ein Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 1 2 3 4 4 5 5 6 6 7 8 9 10 . . . . . . . . 11 11 11 12 13 15 15 16 18 3 Phylogenetik: Merkmalsbasierte Methoden 3.1 Einführung und Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Perfekte Phylogenien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 21 24 2 DNA-Microarrays und SBH 2.1 DNA-Microarrays . . . . . . . . . . . . . . . . . . . . . . 2.1.1 Hauptphasen eines Microarray-Experiments . . . 2.1.2 Schritte der Microarray-Datenanalyse . . . . . . 2.1.3 Low-Level-Analyse anhand von Beispielen . . . . 2.2 Sequencing by Hybridization (SBH) . . . . . . . . . . . 2.2.1 Hintergrund und Problemstellung . . . . . . . . . 2.2.2 Algorithmen für das exakte SBH-Problem . . . . 2.2.3 Anzahl der Sequenzen mit gegebenem Spektrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i Inhaltsverzeichnis 3.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 26 26 27 29 30 30 4 Phylogenetik: Distanzbasierte Methoden 4.1 Metriken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Agglomeratives Clustern . . . . . . . . . . . . . . . . . . . . . . 4.3 Neighbor Joining auf additiven Distanzen . . . . . . . . . . . . 4.3.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.2 Definitionen . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.3 Übersicht und Algorithmus . . . . . . . . . . . . . . . . 4.3.4 Das Auswahlkriterium SD . . . . . . . . . . . . . . . . . 4.3.5 Berechnung der Kantenlängen und der neuen Distanzen 4.3.6 Korrektheit des NJ-Algorithmus . . . . . . . . . . . . . 4.4 Neighbor Joining auf fast additiven Distanzen . . . . . . . . . . 4.5 Fast Neighbor Joining . . . . . . . . . . . . . . . . . . . . . . . 4.6 Weitere Resultate zum Neighbor-Joining-Algorithmus* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 35 36 39 39 39 40 40 44 45 45 49 51 5 Genomumordnungen 5.1 Einführung . . . . . . . . . . . . . . . . . 5.2 Problemstellung . . . . . . . . . . . . . . . 5.3 Sortieren durch Blockvertauschungen . . . 5.4 Genommodell . . . . . . . . . . . . . . . . 5.5 Die DCJ-Operation . . . . . . . . . . . . . 5.6 Die DCJ-Distanz zwischen zwei Genomen 3.4 Maximum Parsimony . . . . . . . . . . . . . . 3.3.1 Motivation . . . . . . . . . . . . . . . 3.3.2 Problemstellung . . . . . . . . . . . . 3.3.3 Das Kleine Parsimony-Problem . . . . 3.3.4 Das Große Parsimony-Problem . . . . 3.3.5 Inkonsistenz von Maximum Parsimony Minimum-Flip-Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 53 54 56 57 58 61 6 Algorithmen der Massenspektrometrie 6.1 Moleküle, Atome und ihre Massen . . . . . 6.2 Massenzerlegungsproblem und Subset-Sum 6.2.1 Lösung mit Dynamic Programming . 6.2.2 Lösung mit einer Restklassentabelle 6.2.3 Frobenius-Zahl . . . . . . . . . . . . 6.2.4 Realistisches Beispiel . . . . . . . . . 6.3 Vorhersage von Massenspekten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 65 66 67 68 69 70 70 A Molekularbiologische Grundlagen A.1 Desoxyribonukleinsäure (DNA) . . . . . . A.2 Ribonukleinsäure (RNA) . . . . . . . . . . A.3 Proteine . . . . . . . . . . . . . . . . . . . A.4 Das zentrale Dogma der Molekularbiologie A.5 Genregulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 73 75 76 78 79 . . . . . B Molekularbiologische Arbeitstechniken 81 C Genomprojekte und Sequenziertechnologien 83 ii Vorbemerkungen Dieses Dokument ist das Skript zu der Lehrveranstaltung Algorithmische Bioinformatik, die ich im Sommersemester 2010 an der TU Dortmund gehalten habe. Zur Zeit befindet sich dieses Skript im Aufbau; mit Fehlern und Unvollständigkeiten ist daher leider noch zu rechnen. Für Hinweise dazu bin ich jederzeit dankbar. – Prof. Dr. Sven Rahmann, TU Dortmund iii Inhaltsverzeichnis iv KAPITEL 1 Physikalische Kartierung 1.1 Das Partial Digest Problem (PDP) Wir betrachten ein Problem, das bei früheren Genomprojekten von Interesse war, nämlich das Erstellen einer Restriktionskarte, die die Verteilung von Schnittstellen eines Restriktionssenzyms in einem DNA-Abschnitt liefert. 1.1.1 Problemstellung Zunächst folgen einige Begriffe und Definitionen: • Restriktionsenzym: Protein, das DNA bei bestimmten (oft palindromischen) Sequenzen zerschneidet. • Beispiel: HindII schneidet bei GTG|CAC oder GTT|AAC. • Restriktionsfragment: ausgeschnittenes DNA-Stück, das von zwei Schnittstellen eines Restriktionsenzyms begrenzt wird. • Restrktionskarte: Menge aller Schnittstellen eines Restriktionsenzyms auf einem (langen) DNA-Molekül (z.B. einem Chromosom) • vollständige Verdauung: Das Enzym wirkt so lange, dass an jeder der möglichen Schnittstellen geschnitten wird. Man bekommt DNA-Fragmente, die von benachbarten Schnittstellen begrenzt werden. • partielle Verdauung: Das Enzym wirkt nicht lange genug, so dass manche mögliche Schnitte nicht ausgeführt werden. Wiederholt man das Experiment mit verschiedenen Kopien desselben DNA-Moleküls oft genug, bekommt man Fragmente zwischen allen (nicht nur benachbarten) Paaren von Schnittstellen. 1 1 Physikalische Kartierung Sei X die Menge der Stellen, an denen ein Restriktionsenzym schneidet (Restriktionskarte). Sei ∆X die Multimenge aller auftretenden Längenfragmente bei partiellem Verdau: ∆X := {{ xj − xi : 1 ≤ i < j ≤ | X| }}. Beispiel: X = {0, 2, 4, 7, 10} führt zu ∆X = {{ 2, 2, 3, 3, 4, 5, 6, 7, 8, 10 }} (Skizze!). Informelle Problemstellung des Partial Digest Problems: • Bei bekannter DNA-Sequenz sind X und daraus ∆X leicht zu berechnen. • In den 1980er Jahren waren Verfahren wie Gel-Elektrophorese und Resktriktionsenzyme bekannt. • Die Genomsequenz war unbekannt. • Idee: Eine Restriktionskarte liefert teilweise Informationen über die Sequenz. • Man kann ∆X gut messen (wenn auch eher ohne Vielfachheiten). • Wenn man daraus X herleiten kann, erhält man Informationen über die GenomSequenz. • Bemerkung: Restriktionskartierung ist eine spezielle Form der physikalischen Kartierung. Formale Problemstellung: Partial Digest Problem (PDP) • Gegeben: die Multimenge(!) L aller n2 paarweisen Distanzen von Objekten, ohne Fehler. • Gesucht: Menge X aus n Objekten, so dass L = ∆X. 1.1.2 Fragen zur Eindeutigkeit des PDP Ist das Problem immer eindeutig lösbar? Es könnte sein, dass verschiedene Mengen X 6= Y die gleichen Differenzmengen ∆X = ∆Y besitzen. 1.1 Definition (Homometrie). Zwei Mengen X, Y heißen homometrisch, wenn ∆X = ∆Y . Triviale Homometrie: ∆X = ∆(−X) = ∆(X + c). Kann man ausschließen durch Forderungen: • 0∈X • alle Werte in X sind ≥ 0 • Symmetriebrechung durch: Zweitgrößte Zahl in L wird Element von X Nichttriviale Homometrie: Beispiel: X = { 0, 1, 3, 8, 9, 11, 12, 13, 15 } und Y = { 0, 1, 3, 4, 5, 7, 12, 13, 15 } (nachrechnen!) 1.2 Satz. Seien U, V Mengen von Zahlen. Sei X = U + V, Y = U − V . Dann sind X, Y homometrisch. Beweis. Übungsaufgabe. Ergebnis: Probleminstanzen mit mehreren Lösungen sind leicht zu konstruieren; Eindeutige Lösbarkeit kann nicht erwartet werden. 2 1.1 Das Partial Digest Problem (PDP) 1.1.3 Algorithmen Da es offensichtlich mehrere Lösungen zu einer Eingabe L des PDP geben kann, ist es von Vorteil zunächst einen (naiven, trivialen) Algorithmus anzugeben, der alle Lösungen aufzählt. Erinnerung: Die Eingabe L hat Größe Θ(n2 ). Um Lösungen zu vermeiden, die trivial homometrisch sind, genügt es, wenn wir Kandidaten X mit { 0, M 0 , M } ⊂ X betrachten. Dabei ist M := max L und M 0 := max(L \ { M }) die zweitgrößte Zahl in L. Die folgende Beobachtung schränkt ein, welche Zahlen noch in X vorkommen können. 1.3 Lemma. Ist X eine Lösung des PDP mit Eingabe L, dann gilt x ∈ X =⇒ x ∈ L. Beweis. Es können nur solche Elemente in X vorkommen, die auch in L enthalten sind, da die Distanz x − 0 für alle x ∈ X in L existieren muss. Ein naiver Algorithmus besteht nun darin, alle verschiedenen Teilmengen Y der Größe n − 2 von L \ { M 0 , M } aufzuzählen, daraus X := Y ∪ { M 0 , M } zu bilden und zu prüfen, ob n −2 ∆X = L gilt. Die Anzahl der zu prüfenden Mengen ist höchstens ( 2 ) ; dies wächst n−3 überexponentiell mit n. Ein besserer Algorithmus basiert auf folgender Idee: • Sei L die Eingabe-Multimenge und M := max(L). Dann gilt x := { 0, M } ⊂ X. • Reduziere L um die Menge der durch das bisher bekannte x gegebenen Differenzen. • Betrachte das verbleibende Maximum m in L \ x. 1.4 Lemma. Sofern überhaupt Lösungen X mit x ⊂ X existieren, gilt einer der folgenden drei Fälle: 1. m ∈ X, aber M − m ∈ / X (oder m ∈ X und M − m = m) 2. M − m ∈ X, aber m ∈ /X 3. m ∈ X und M − m ∈ X (und M − m 6= m); dies führt nur dann auf eine Lösung, wenn beide Werte doppelt in L enthalten sind. Beweis. Der größte verbleibende Wert in L muss dem Abstand eines Punktes von einem der Enden (0 oder M ) entsprechen – sonst Widerspruch! Der sich ergebende Algorithmus (den man als erschöpfende Suche mit branch-and-bound oder backtracking auffassen kann) stammt aus folgendem Artikel: Steven Skiena, Warren D. Smith, Paul Lemke: Reconstructing Sets from Interpoint Distances (Extended Abstract). Symposium on Computational Geometry 1990: 332–339. Sei Delta(y,X) die Menge der Abstände zwischen einem Punkt y und der Menge X. (Skizze zur Verdeutlichung!) 3 1 Physikalische Kartierung 1 2 3 4 S ki e n aP a r ti a l D ig e s t ( L ): global M = max ( L ) X = {0 , M } place ( L \ X , X ) 5 6 7 8 9 10 11 12 13 14 place (L , X ): # versuche alle M \" oglichkeiten , die verbleibenden Distanzen in L # in die partielle Karte X einzuf \" ugen , solange sich keine Widerspr \" uche erge if L is empty : output X ; return m = max ( L ) if Delta (m , X ) is a submultiset of L : place ( L \ Delta (m , X ) , X union { m }) if Delta ( M - m , X ) is a submultiset of L : place ( L \ Delta (M -m , X ) , X union {M - m }) 15 16 17 Delta (y , X ): # gibt die Menge der Distanzen {| y - x | : x in X } zur \" uck Der Algorithmus von Skiena hat im Idealfall eine lineare Laufzeit (in der Eingabegröße), nämlich dann wenn bei jedem place()-Aufruf nur ein Zweig weiterverfolgt werden muss. Im schlimmsten Fall werden immer zwei Zweige verfolgt, so dass sich eine Laufzeit von Ω(2n ) ergibt. Aber existieren überhaupt Eingaben mit solch einer worst-case Laufzeit? Diese Frage wird positiv beantwortet in folgendem Artikel: Zheng Zhang. An exponential example for a partial digest mapping algorithm. Journal of Computational Biology, 1(3):235-239, 1994. Dies legt die Fragen nahe: • Existiert auch ein Algorithmus für PDP mit polynomieller worst-case Laufzeit? • Kann man beweisen, dass das Problem NP-schwer ist? Bisher hat man weder einen Algorithmus noch einen Beweis gefunden; die Problemkomplexität ist unbekannt. Das PDP ist dasselbe Problem, wie das Problem, die Orte der Ausfahrten einer Autobahn zu bestimmen, wenn man nur die Distanzen zwischen allen Paaren von Ausfahrten kennt. 1.2 Das Double Digest Problem (DDP) 1.2.1 Problemstellung Ein verwandtes Problem zum PDP ergibt sich, wenn wir statt eines Enzyms zwei verschiedene Enzyme A,B und statt partiellem Verdau vollständigen Verdau annehmen. Man erhält statt einer Karte nun drei Karten A, B, X: 1. A enthält die Schnittpositionen nach Vollverdau mit Enzym A 2. B enthält die Schnittpositionen nach Vollverdau mit Enzym B 3. X enthält die Schnittpositionen nach Vollverdau mit beiden Enzymen, X ist die Vereinigung von A und B. 4 1.2 Das Double Digest Problem (DDP) Daraus erhalten wir Abstands-Multimengen Dist(A), Dist(B), Dist(X) mit Dist(Z) = { zi+1 − zi : 1 ≤ i ≤ | Z| − 1 } , wobei wir die Elemente von Z als aufsteigend geordnet durchnummeriert annehmen. 1.5 Problem (Double Digest Problem, DDP). Gegeben: Multimengen DA , DB , DX von Abständen. Gesucht: Mengen A, B, X mit DA = Dist(A), DB = Dist(B), DX = Dist(X) und X = A ∪ B. • 1.2.2 Algorithmen Um von Distanzen zu Positionen zurückzukehren, müssen wir die Reihenfolge der Elemente in den Multimengen der Abstände festlegen. Sei also p = (p[1], ..., p[|D|−1]) eine Permutation der Elemente einer Multimenge D. Die daraus entstehende Menge nennen wir Positionsmenge zu D und p: X Pos(D, p) := { 0, p[1], p[1] + p[2], . . . , | D | p[i] } . i=1 Es gilt Dist(Pos(D, p)) = D für alle Permutationen p von D. Es gilt in der Regel nicht für alle Permutationen Pos(Dist(Z), p) = Z ! Beim DDP sei p eine Permutation der Elemente von DA und q eine Permutation der Elemente von DB . Das DDP fragt nach Paaren (p, q), so dass gilt: Dist(Pos(DA , p) ∪ Pos(DB , q)) = DX . Dies führt auf einen erschöpfenden Suchalgorithmus: Probiere alle Paare von Permutationen (p, q) und teste die genannte Bedingung. Dieser Algorithmus kann verbessert werden, indem man die Permutationen Element für Element aufbaut und unzulässige Präfixe nicht weiter verfolgt. Im schlimmsten Fall gewinnt man dadurch aber nichts und man muss |DA |! · |DB |! Permutationen ausprobieren. 1.2.3 Komplexität Wie steht es um die Komplexität des DDP-Problems? Betrachten wir das zugehörige Entscheidungsproblem, das nach der Existenz von geeigneten Mengen A, B, X zu den gegebenen Multimengen DA , DB , DX fragt. 1.6 Satz. Das DDP-Entscheidungsproblem ist NP-vollständig. Beweis. (1) Das DDP-Entscheidungsproblem ist offensichtlich in NP, da man nach Raten des korrekten Permutationspaares (p, q) (sofern existent) in Polynomialzeit verifizieren kann, dass A := Pos(DA , p) und B := P os(DB , q) und X := A ∪ B die Bedingungen einer Lösung erfüllen. (2) Wir zeigen: Mit einem korrekten Polynomialzeit-Algorithmus für das DDP-Entscheidungsproblem können wir auch das Set-Partition-Problem in Polynomialzeit lösen. Dies ist als NP-vollständig bekannt. Es lautet: Gegeben eine Menge S von Zahlen, gibt es eine disjunkte Zerlegung 5 1 Physikalische Kartierung S = Q ∪ R, so dass die Summen in Q und R gleich sind? OBdA sei die Summe in S gerade und gleich s. Wir konstruieren eine DDP-Instanz wie folgt: Wir setzen DA := S, DB := { s/2, s/2 }, DC := S. Diese Transformation kann offensichtlich in Polynomialzeit durchgeführt werden. Es ist nun einfach zu zeigen, dass diese DDP-Instanz genau dann eine Lösung hat wenn das Set-Partition-Problem für S lösbar ist. 1.3 Kartierung durch Hybridisierung und das Consecutive Ones Problem 1.3.1 Problemstellung Bei der Kartierung durch Hybridisierung werden die zu sequenzierenden DNA-Fragmente (Klone, clones”, da sie i.d.R. innerhalb von Bakterien vervielfältigt = kloniert werden) gegen eine Reihe von DNA-Sonden (probes”) hybridisiert, um festzustellen, welche Sonden in welchen clones vorkommen. Dazu muss man weder die genaue Basenabfolge der Sonden, noch ihre genaue Position auf dem Genom kennen. Wir gehen aber davon aus, dass jede Sonde innerhalb des Genoms eindeutig ist. Das Ergebnis ist eine 0/1-Matrix, in der jede Zeile einem Klon, jede Spalte einer Sonde entspricht (Hybridisierungsmatrix). 1.7 Beispiel (Hybridisierungsmatrix). Wir betrachten 5 Klone und 8 Sonden: .. 1] 2] 3] 4] 5] .. A 1 0 0 1 0 A B 1 0 1 1 0 B C 0 0 0 1 0 C D 0 1 0 0 1 D E 0 1 0 0 0 E F 1 0 0 1 0 F G 0 1 0 0 0 G H 0 0 1 0 1 H ♥ Die Frage ist: Wie sind die Sonden auf dem Genom angeordnet und wie überlappen die sich die Klone? Welche Klone sollte man tatsächlich sequenzieren, um das gesamte Genom abzudecken? Da wir davon ausgehen, dass jeder Klon ein zusammenhängendes Stück DNA aus dem Genom repräsentiert, sollten die 1-Einträge in der Matrix (bei richtiger Anordnung der Sonden) jeweils zusammenhängend auftreten. Wir gehen dabei davon aus, dass jede Sonde genomweit eindeutig ist und dass die Hybridisierungsmatrix fehlerfrei ist. Das führt abstrakt auf folgendes Problem. 1.8 Problem (Consecutive Ones Problem, Problem aufeinanderfolgender Einsen). Gegeben: eine 0/1-Matrix der Größe n × m; oBdA besteht keine Zeile nur aus 0 oder nur aus 1. Fragen: Gibt es eine Permutation der m Spalten, so dass in der permutierten Matrix in jeder Zeile die Spaltenindizes der Einsen ein Intervall bilden? Welche Permutationen (wenn es welche gibt) erfüllen dies? • 6 1.3 Kartierung durch Hybridisierung und das Consecutive Ones Problem 1.9 Definition (C1P). Eine 0/1-Matrix, für die das Consecutive Ones Problem eine nichtleere Lösungsmenge hat, hat die Eigenschaft aufeinanderfolgender Einsen (Consecutive Ones Property, C1P) Eine 0/1-Matrix mit C1P, bei der in jeder Zeile die Einsen aufeinander folgen, ist in Consecutive Ones Form (C1F). 1.3.2 pq-Bäume Es ist überraschend, dass es eine effiziente Lösung des Consecutive Ones Problems gibt: Man kann (bei geschickter Implementierung, die wir nicht diskutieren werden) in Linearzeit entscheiden, ob eine Matrix die C1P besitzt. Linearzeit heißt konkret O(m+n+k) Zeit, wobei n × m die Matrixdimension ist und k die Anzahl der Einsen (es wird dabei angenommen, dass keine volle Matrix, sondern nur Mengen der 1-Indizes angegeben werden). In derselben Zeit kann man die Menge der Permutationen, die die Matrix in C1F überführen, kompakt angeben. Grundidee: • Wir bearbeiten die Zeilen der Matrix nacheinander. Jede Zeile enthält gewisse Einschränkungen bezüglich der möglichen Permutationen. • Wir verwalten zu jedem Zeitpunkt (Schritt) t eine Permutationsmenge, die alle Permutationen, die die Zeilen 1 bis t der Eingabematrix in C1F überführen, charakterisiert. • Wir beginnen mit der Menge aller m! Permutationen auf den m Spalten. Die Bearbeitung jeder Zeile schränkt die Menge weiter ein. • Wir verwenden eine spezielle Datenstruktur zur Verwaltung der Permutationsmenge: einen sogenannten pq-Baum. 1.10 Definition (pq-Baum). Ein pq-Baum ist entweder der leere Baum oder ein geordneter gerichteter Baum mit einer Wurzel r, einer endlichen Blattmenge (oBdA { 1, . . . , m }) und einer Zuordnung jedes inneren Knoten zum Typ “p” oder “q”. Die Semantik dahinter ist folgende: • ein Typ-“p” Knoten repräsentiert eine beliebige Permutation seiner Kinder, d.h., die Reihenfolge der Kinder darf beliebig umgeordnet werden, • ein Typ-“q” Knoten legt die Ordnung seiner Kinder fest, aber die Reihenfolge darf invertiert werden. Darstellung: • Ein Typ-“p” Knoten wird durch einen runden Knoten bzw. durch ein rundes Klammerpaar ( ), das die Liste seiner Kinder umschließt, dargestellt. • Ein Typ-“q” Knoten wird durch einen eckigen Knoten bzw. durch ein eckiges Klammerpaar [ ], das die Liste seiner Kinder umschließt, dargestellt. 1.11 Definition (durch einen pq-Baum repräsentierte Permutationen). Die Front eines pqBaums erhält man, indem man die Blattbeschriftungen von links nach rechts liest. (Dies ist eine Permutation der Blattmenge.) Die durch einen pq-Baum repräsentierten Permutationen sind alle Fronten, die sich durch erlaubte Umordnungen an den p- und q-Knoten erreichen lassen. 7 1 Physikalische Kartierung 1.12 Definition (universeller pq-Baum). Wenn noch keine Einschränkungen an die Permutationen bekannt sind, wenn der Baum also die Menge aller Permutationen repräsentiert, sprechen wir vom universellen pq-Baum auf der Blattmenge. 1.13 Beispiel (pq-Baum). Betrachte ((D,E,G),[H,B,(A,F),G]). Wie viele Permutationen auf { A, . . . , H } werden hierdurch repräsentiert? Der universelle pq-Baum auf der gleichen Blattmenge lautet (A,B,C,D,E,F,G,H) und repräsentiert alle 8! Permutationen. ♥ 1.3.3 Der Reduce-Algorithmus: Übersicht Die Grobstruktur des Algorithmus ist nun folgende: 1 2 3 4 5 6 7 8 C o n s e c u t i v e O n e s P r o p e r t y (m , Restrictions ): # Die Blattmenge ist {1 ,2 ,... , m }. # Restrictions ist eine Liste von Teilmengen von {1 ,... , m } , # entspricht den 1 - Eintraegen der Zeilen der Matrix T = UniversalTree ( m ) for R in Restrictions : T = Reduce (T , R ) return T Der zu Beginn universelle Baum wird also nach und nach eingeschränkt. In der Funktion Reduce(T,R) müssen die Restriktionen es aktuellen Baums T erhalten bleiben und die durch R zusätzlich bestimmten hinzukommen. Ist dies nicht mehr möglich, erhalten wir irgendwann den leeren Baum zurück. Weitere Reduce-Anwendungen liefern dann ebenfalls stets den leeren Baum zurück. Wir überlegen, wie ein einzelner Reduce-Schritt aussieht, damit er die o.g. Anforderungen erfüllt. Zuerst müssen wir feststellen, wo sich die Blätter befinden, die laut der aktuellen Restriktion (Matrixzeile) R nebeneinander liegen sollen. 1. Ist T bereits der leere Baum, hat das Problem keine Lösung und wir liefern T zurück. 2. Wir markieren die durch R gegebenen Blätter als “voll”, die anderen Blätter als “leer”. 3. Wir bestimmen den kleinsten Teilbaum tree(R), in dem sich alle “vollen” Blätter befinden, und dessen Wurzel root(R). 4. Wir arbeiten uns bottom-up durch tree(R), bis root(R) erreicht wird, und sorgen in jedem Knoten dafür, dass ”volleËlemente adjazent sind. Hierzu wenden wir gewisse Regeln an, die wir unten separat für p-Knoten und für q-Knoten aufstellen. Kann einmal keine Regel angewendet werden, so hat das Problem keine Lösung und wir liefern einen leeren Baum zurück. Andernfalls geben wir den durch die Anwendung der Regeln modifizierten Baum zurück, sobald root(R) bearbeitet wurde. Das “Geheimnis” liegt also in den Regeln Pi für p-Knoten und Qi für q-Knoten. Jede Regel stellt sicher, dass in der dort genannten Situation die Voraussetzungen dafür geschaffen werden, dass am Ende alle “vollen” im betreffenden Knoten Knoten nebeneinanderstehen. 8 1.3 Kartierung durch Hybridisierung und das Consecutive Ones Problem 1.3.4 Der Reduce-Algorithmus: Regeln Wir nennen jetzt die Regeln im Detail. Blätter und p-Knoten können nur “voll” oder “leer” sein, aber q-Knoten können auch “partiell” sein. Im folgenden sei stets x der aktuell betrachtete Knoten. Die Regeln P0 bis Px sind für p-Knoten und die Regeln Q0 bis Qx für q-Knoten. Regeln für p-Knoten: P0 : Alle Kinder von x sind “leer”: Dann setze x auch auf “leer”. P1 : Alle Kinder von x sind “voll”: Dann setze x auch auf “voll”. P2 : Ein Teil der Kinder von x ist “leer”, der andere Teil “voll”, und es ist x = root(R): Die “vollen” Kinder von x werden als Kinder eines neuen “vollen” p-Knoten y unter x zusammengefasst; die leeren Kinder bleiben direkte Kinder von x. P3 : Ein Teil der Kinder von x ist “leer”, der andere Teil “voll”, und es ist x 6= root(R): Da noch andere “volle” Knoten außerhalb des Teilbaums unter x existieren und wir daher im weiteren Verlauf Knoten oberhalb von x betrachten, muss x als “partiell” markiert werden. Daher machen wir x zu einem partiellen q-Knoten mit 2 neuen p-Knoten als Kindern (bei nur 2 Kindern spielt es keine Rolle, ob x ein p-Knoten oder ein q-Knoten ist, aber nur q-Knoten lassen wir als partiell zu). Der eine neue p-Knoten unter x erhält die leeren vormaligen Kinder von x; der andere die vollen. P4 : Ein Teil der Kinder von x ist “leer”, ein Teil “voll”, und es gibt genau ein partielles Kind z von x, dessen volle Kinder sich außen befinden, und es ist x = root(R): Da oberhalb von x nichts zu tun ist, genügt es, die vollen Kinder mit dem partiellen Kind zu integrieren; x selbst muss nicht partiell gemacht werden. Die vollen Kinder von x kommen als Kinder an einen neuen vollen p-Knoten, der außen an z neben den vollen Kindern hängt. P5 : wie P4 , aber es ist x 6= root(R). Hierbei wird x zu einem partiellen q-Knoten. Kinder sind ein p-Knoten, an dem die leeren bisherigen Kinder von x hängen, gefolgt von allen Kindern von z (in der Reihenfolge leer, voll), gefolgt von einem weiteren p-Knoten, an dem die vollen bisherigen Kinder von z hängen. Man beachte, dass nun in x, wie vorher in z vorausgesetzt wurde, die vollen Kinder außen stehen. P6 : Ein Teil der Kinder von x ist “leer”, ein Teil “voll”, und es gibt genau zwei partielle Kinder y, z von x, dessen volle Kinder sich jeweils außen befinden, und es ist x = root(R): Die beiden partiellen und die vollen Kinder müssen zu einem partiellen qKnoten zusammengefasst werden, in dem alle vollen Knoten benachbart sind. Das heißt, x bleibt ein p-Knoten mit folgenden Kindern: alle leeren bisherigen Kinder von x und ein partieller q-Knoten u, der seinerseits folgende Kinder hat: zunächst die leeren Kinder von y, dann die vollen Kinder von y (deren Reihenfolge ist durch y genau vorgegeben), dann ein p-Knoten mit den vollen bisheringen Kindern von x, dann die vollen Kinder von z, dann die leeren Kinder von z (wiederum ist die Reihenfolge durch z genau vorgegeben). In allen anderen Fällen (mindestens 3 partielle Kinder, oder 2 partielle Kinder und x 6= root(R)) keine Chance besteht, alle “vollen” Knoten nebeneinander anzuordnen. Also ist das Problem, wenn keine der P-Regeln in einem p-Knoten anwendbar ist, nicht lösbar. Regeln für q-Knoten: 9 1 Physikalische Kartierung Q0 : Alle Kinder von x sind “leer”: Dann setze x auch auf “leer”. Q1 : Alle Kinder von x sind “voll”: Dann setze x auch auf “voll”. Q2 : Ein Teil der Kinder von x ist “leer”, ein Teil “voll” und es gibt höchstens ein partielles Kind, dessen volle Kinder außen stehen: Das partielle Kind wird in x hineingehoben, wodurch x selbst partiell wird. Dadurch stehen in x wiederum volle Knoten außen. Q3 : Ein Teil der Kinder von x ist “leer”, ein Teil “voll”, es gibt genau zwei partielle Kinder und x = root(R): Beide partiellen Kinder werden in x hineingehoben, so dass danach in x alle vollen Knoten benachbart sind. (Dies funktioniert nur, wenn die vollen Knoten so angeordnet werden können, dass sie nebeneinander “innen” stehen. Wieder gilt, dass in allen anderen Fällen (mindestens drei partielle Kinder oder zwei partielle Kinder und x = 6 root(R)) keine Chance besteht, alle “vollen” Knoten nebeneinander anzuordnen. Also ist das Problem, wenn keine der Q-Regeln in einem q-Knoten anwendbar ist, nicht lösbar. Um die Korrektheit des Reduce-Algorithmus zu beweisen, muss man insgesamt die Invariante beweisen, dass nach einer Reduce-Sequenz mit Mengen R1 , . . . , Rn genau die dadurch gegebenen Adjazenzen eingehalten werden, aber auch nicht mehr. Dazu zeigt man: 1. Reduce(T, R) erzwingt die Adjazenzen in R. 2. Reduce(T, R) vergisst keine bereits in T enthaltenen Adjazenzen. 3. Reduce(T, R) schränkt die Menge der Permutationen nicht unnötig ein. Während die ersten beiden Punkte langwierig, aber standardmäßig per Induktion durch Fallunterscheidung gemäß der Regeln zu beweisen sind, tut man sich beim letzten Punkt schwerer. 1.3.5 Ein Beispiel siehe Übungen. 10 KAPITEL 2 DNA-Microarrays und SBH 2.1 DNA-Microarrays 2.1.1 Hauptphasen eines Microarray-Experiments Ein Experiment mit Microarrays läuft in 4 Phasen ab. 1. Experimentelles Design: Was ist die biologische Fragestellung; wie viele und welche Experimente macht man, um diese gut beantworten zu können? Hier ist i.d.R. Expertenwissen von Statistikern gefragt. 2. Durchführung der experimentellen Arbeiten: Extrahieren der RNA/cDNA-Probe aus den Zellen, Amplifizierung und Markierung derselben mit fluoreszierenden Farbstoffen, Vorbereiten des Microarrays, Aufbringen der Probe auf das Array, Hybridisierung, Waschen, Aufnahme eines Bildes mit Intensitäten des fluoreszierenden Farbstoffes (i.d.R. vollautomatisiert). 3. Datenanalyse: Aus den Bilddaten werden biologisch interpretierbare Informationen gewonnen. Hierbei sind sowohl statistisches Wissen als auch Informatik-Methoden gefragt. Genaueres siehe unten. 4. Biologische Interpretation: Hierbei sieht man, ob und inwieweit die Anfangsfrage beantwortet werden konnte, und welche Erkenntnisse daraus gewonnen werden bzw. welche Fragen sich anschließen. Die Interpretation übernimmt i.d.R. ein Biologe oder Mediziner, ein Spezialist auf dem jeweiligen Fachgebiet. 11 2 DNA-Microarrays und SBH 2.1.2 Schritte der Microarray-Datenanalyse Für die Informatik sind vor allem die Schritte der Datenanalyse interessant. Die Eingabe ist eine (sehr große) Bilddatei mit einer Aufnahme aller Spots, z.B. im BMP-Format (unkomprimiert). Es folgt eine Übersicht über die einzelnen Schritte: 1. Bildanalyse: Spot-Erkennung, Quantifizierung der Intensitäten für jeden Spot. Ausgabe: Ein Intensitätswert pro Spot (pro Chip). 2. Hintergrund-Korrektur: Es ist zu erwarten, dass an jedem Spot unspezifische Hybridisierung stattfindet, zusätzlich zu einem eventuellen Signal. In diesem Schritt wird für jeden Spot die Hintergrundintensität geschätzt und der Intensitätswert entsprechend korrigiert. Ausgabe: Ein Intensitätswert (Signal) pro Spot pro Chip. 3. Normalisierung: Ein sinnvolles Experiment besteht aus mehr als einer Hybridisierung; meist will man zwei oder mehrere Bedingungen, denen man die Zellen aussetzt, vergleichen (Tumorgewebe gegen normal; Hitzeschock gegen normal; ...). Hierzu muss sichergestellt werden, dass die Signalwerte vergleichbar sind. Dazu dient die Normalisierung. Einfaches Beispiel: Die meisten Werte auf Chip B sind doppelt so gross wie auf Chip A. Man sollte also alle Werte auf Chip B halbieren. Warum ist das sinnvoll? Es ist biologisch unplausibel, dass alle Gene doppelt so stark transkribiert werden; plausibler ist, dass z.B. länger hybridisiert oder weniger gründlich gewaschen wurde, so dass alle Intensitäten stärker sind. Ausgabe: Ein Intensitätswert pro Spot pro Chip. 4. Zusammenfassen von Spots: Jedes Transkript (Gen) wird i.d.R. durch mehrere (z.B. 10) Sonden auf dem Chip abgedeckt, die evtl. unterschiedlich stark binden. In diesem Schritt werden die jeweilgen 10 Werte zu einem Transkript-spezifischen Wert zusammengefasst. Ausgabe: Ein Expressionswert pro Transkript pro Chip. 5. Ggf. kann sich erneut ein Normalisierungsschritt (nun auf Transkript- statt auf Sonden/SpotEbene anschließen). Ausgabe: Ein Expressionswert pro Transkript pro Chip. 6. Identifikation interessanter Transkripte (i.d.R. differentiell exprimierter Transkripte): Aus den normalisierten Transkript-Expressionswerten ermittelt man, welche Transkripte sich unter unterschiedlichen Bedingungen signifikant unterschiedlich verhalten (statistische Tests). Dies ist dann möglich, wenn die einzelnen Hybridisierungen bereits verschiedenen Klassen zugeordet worden sind (z.B. Tumor gegen normal). Ausgabe: Nach Signifikanz sortierte Liste der Transkripte (pro Klasseneinteilung). 7. (Bi-)Clustering von Transkripten und Genen: Wenn noch keine Klassifikation vorliegt oder man neue Klassen in den Daten entdecken will, sucht man mit Hilfe von Biclusteringverfahren gleichzeitig eine Gruppe von Transkripten und eine Partition der Daten, so dass die ausgewählten Transkripte die Partition gut trennen. Ausgabe: mehrere Paare aus je einer Liste von Transkripten und einer Partition der Hybridisierungen, ggf. sortiert nach einem zu definierenden Qualitätskriterium. 8. Prädiktion: Anhand der ausgewählten Transkripte (“features”) sollen neue Fälle (Hybridisierungen) in eine der existierenden Klassen eingeteilt werden (Klassifikationsproblem). Bei den Schritten 1.–5. spricht man von Low-Level-Analyse (Technologie-spezifische Modellierung, effiziente Algorithmen, Statistik) Bei den Schritten 6.–8. spricht man von verschiedenen Aspekten der High-Level-Analyse (Statistik, Clustering, Klassifikation: Machine 12 2.1 DNA-Microarrays Learning-Methoden). Bei der Auswahl ı̈nteressanterTranskripte spricht man auch von feature selection. 2.1.3 Low-Level-Analyse anhand von Beispielen Wir betrachten jetzt nur noch die Low-Level-Analyse aus Sicht der Bioinformatik. Es gibt unzählige Kombinationen von Verfahren, die man in jedem einzelnen Schritt anwenden kann. Wir stellen hier einige wenige(!) Möglichkeit beispielhaft vor und lassen dabei die Bildanalyse außer Acht. (Häufig wird für die Bildanalyse die vom Hersteller mitgelieferte Lösung verwendet.) Details dazu gibt es in Bildanalyse-Vorlesungen, Details zur High-Level-Analyse in KI- und ML-Vorlesungen. Eine hier u.a. betrachtete Prozedur heißt RMA (Robust Multichip Analysis) und besteht aus den 3 Schritten Hintergrundkorrektur, Normalisierung, Zusammenfassung. Eine andere Sammlung von Verfahren ist MAS. MAS ist die Software “MicroArray Suite” des R Man kann sie als komplette Pipeline einsetzen oder eigene Array-Herstellers Affymetrix. Verfahren für die einzelnen Schritte verwenden. MAS-Hintergrundkorrektur. Die Hintergrundkorrektur findet auf jedem Chip separat statt. Eingabe: Ein (Roh-)Intensitätswert pro Spot; z.B. 16-bit unsigned int. Ausgabe: Ein (korrigierter) Intensitätswert pro Spot; z.B. float oder double. Bei der MAS-Hintergrundkorrektur wird insbesondere berücksichtigt, dass das unspezifische Signal (Hintergrund) in verschiedenen Bereichen des Chips verschieden stark sein kann. Dazu wird der Chip z.B. in 4x4 (=16) Felder eingeteilt (oder auch mehr). In jedem Bereich wird das 2%-Quantil (also die 2% niedrigsten Werte) als Hintergrund angesehen. Die unterschiedliche Behandlung in jedem Feld kann zu Problemen an den Feldgrenzen führen. Daher wird der Hintergrundwert für jeden Spot als gewichtetes Mittel der Hintergrundwerte der umliegenden Felder berechnet. Die Gewichte ergeben sich aus den Distanzen zu den Feldmittelpunkten. Von jedem Spot wird der Hintergrundwert abgezogen. Negative Werte und Werte nahe bei Null werden auf einen Mindestwert (z.B. 0.01) gesetzt. RMA-Hintergrundkorrektur. Bei RMA werden keine lokalen Effekte berücksichtigt, sondern es wird nur ein globales Modell für den ganzen Chip aufgestellt. Das Modell sagt: • Die gemessene Intensität Y an jedem Spot ist eine Summe aus zwei Zufallsvariablen: Hintergrund B und Signal S. • Alle Spots sind unabhängig. An jedem Spot sind B und S unabhängig. • Der Hintergrund folgt einer Normalverteilung mit unbekannten Parametern Mittelwert µ und unbekannter Varianz σ 2 . • Das Signal folgt einer Exponentialverteilung mit unbekanntem Parameter λ: Y = B + S; B ∼ N (µ, σ 2 ); S ∼ Exp(λ). 13 2 DNA-Microarrays und SBH Die Wahrscheinlichkeitsdichten von B und S sind also bekannt, hängen aber von den unbekannten Parametern ab. Die Dichte von Y berechnet sich als Faltung derer von B und S. (Die Dichte der Summe von unabhängigen ZVen ist die Faltung der einzelnen Dichten.) Sie hängt von den drei Parametern ab. Diese Parameter können numerisch mit Hilfe der Maximum-Likelihood-Methode aus den Daten (vorhandenen Y -Werten) geschätzt werden. Das ist aus numerischer Sicht nicht unproblematisch, da viele Parameterkombinationen in etwa gleich plausibel sein können. Wenn die Parameter bekannt sind, hat man immer noch das Problem, dass man zu einem einzelnen Spot-Wert Y nicht konkret die Anteile S und B angeben kann (diese sind ja jeweils zufällig). Man zieht sich elegant aus der Affäre, indem man die bedingten Erwartungswerte E[S | Y = y] berechnet und als Schätzung für die Signalkomponente S bei gegebenem Y -Wert y nimmt. Normalisierung durch lineare Transformation. Normalisierung erstreckt sich über alle Chips/Hybridisierungen, die zu einem Experiment gehören. Eingabe: Ein Intensitätswert pro Spot pro Chip (nicht vergleichbar über Chips). Ausgabe: Ein Intensitätswert pro Spot pro Chip (vergleichbar über Chips). Grundsätzlich kommt es bei der Normalisierung darauf an, abzuwägen: In welchem Umfang will man alle Chips einer vorgegebenen Referenz angleichen, und in welchem Umfang will man die Originalwerte beibehalten? Zu starke Normalisierung kann biologisch interessante Signale vernichten. Zu schwache Normalisierung lässt Unterschiede zwischen Chips auftreten, die uninteressant sind (d.h., die nicht durch biologische Unterschiede zu erklären sind, sondern durch Unterschiede im experimentellen Protokoll). Eine schwache Form der Normalisierung ist die Angleichung der Lage und Skala an eine Referenz; man spricht von affiner Transformation. Als Lageparameter µ kann beispielsweise der Mittelwert oder der Median aller Intensitäten verwendet werden; als Skalenparameter σ beispielsweise die Standardabweichung (Wurzel der Varianz) oder der Interquartilsabstand. Die Referenzwerte seien µ0 und σ 0 . Auf einem Chip mit gemessenen Intensitäten x und daraus berechneten Parametern µ, σ korrigiert man wie folgt: x 7→ (x − µ) · σ 0 + µ0 . σ Diese affine Transformation bringt zunächst die Lage auf 0 und die Skala auf 1, um dann die Skala und Lage auf die gewünschten Werte abzubilden. Häufig werden danach noch kleine xWerte (z.B. kleiner als 1) auf einen Minimalwert (z.B. 1) gesetzt und ggf. die Transformation wiederholt. Woher bekommt man die Referenz-Werte? Entweder diese werden vorgegeben, oder man nimmt den Durchschnitt oder den Median über alle Datensätze. Es gibt auch andere Verfahren, eine affine Transformation zu berechnen, die weniger anfällig gegenüber Ausreißern ist. 14 2.2 Sequencing by Hybridization (SBH) RMA-Normalisierung (Quantilnormalisierung). Bei RMA wird eine stärkere Form der Normalisierung verwendet, die Quantilnormalisierung: Jedes(!) Quantil eines Chip-Datensatzes wird auf das entsprechende Quantil der Referenz gesetzt. Das bedeutet, was auch immer der r-t kleinste Wert des Datensatzes ist, er wird auf den r-t kleinsten Wert der Referenz gesetzt (für alle r). In der Programmiersprache R ist dies ein Einzeiler: x[order(x)] = ref. Hierbei nehmen wir an, dass x ein Vektor mit den Originaldaten ist und ref die der Größe nach sortierten Referenzdaten. Der Aufruf order(x) liefert eine Permutation zurück, die das Argument x der Größe nach sortiert. Beispiel: Die Referenz sei (sortiert) (1, 2, 3, 4), und x = (17, 9, 56, 34). Nach der Normalisierung besteht x aus den Werten { 1, 2, 3, 4 }. Die Reihenfolge ergibt sich daraus, dass die Ordnung der Zahlen in x nicht verändert werden darf. Nach der Normalisierung ist also x = (2, 1, 4, 3). Einfache Methoden der Zusammenfassung. Hat man n Werte, die im Prinzip das Gleiche messen sollen (nämlich den Expressionswert desselben Gens), so kann man diese am einfachsten durch ihren Mittelwert zusammenfassen. Der Mittelwert ist jedoch nicht robust gegenüber Ausreißern. Schon ein einzelner extremer Wert kann den Mittelwert stark verfälschen (vgl. die Mittelwerte von (34,32,35,33,31) und (34,32,350,33,31)). So etwas passiert leicht durch einzelne defekte Spots. Robuster ist ein sogenanntes getrimmtes Mittel, bei dem vor der Mittelwertbildung ein gewisser Anteil der extremsten (kleinsten und grössten) Beobachtungen gestrichen wird. Streicht man alle bis auf eine oder (bei gerade Anzahl) zwei Beobachtungen, so erhält man den Median, ein robustes Maß für die Lage eines Datensatzes, das allerdings auch viele Informationen aus dem Datensatz nicht benutzt. RMA-Zusammenfassung. Keine der einfachen Methoden (getrimmtes Mittel / Median) berücksichtigt, dass unterschiedliche Sonden aufgrund ihrer Zusammensetzung (z.B. GCGehalt) unterschiedlich stark an ihre Zieltranskripte binden. Hätte man Informationen der Art “Sonde b bindet immer doppelt so stark wie Sonde a”, könnte man diese benutzen und vor der Zusammenfassung herausrechnen. Aber woher kann man diese Information bekommen? TODO: Weitere Details folgen. 2.2 Sequencing by Hybridization (SBH) 2.2.1 Hintergrund und Problemstellung Ende der 80er Jahre war die Sanger-Sequenzierung relativ langsam und teuer. Daher suchte man nach möglichen Alternativen. Eine Idee dabei war, dass man für eine kleine Oligonukleotidlänge L (ca. 8–11) ein universelles Microarray herstellen kann, also ein DNA-Microarray, das alle 4L Oligonukleotide der Länge L enthält. Man könnte dann eine (nicht zu lange) DNA-Sequenz an dieses Array hybridisieren und testen, welche Teilstrings der Länge L in der Sequenz vorkommen. Daraus kann man möglicherweise auf die DNA-Sequenz schließen. Man spricht daher von Sequenzierung durch Hybridisierung (Sequencing by Hybridization, 15 2 DNA-Microarrays und SBH SBH). Diese Ideen wurden entwickelt von Bains and Smith (1988), Drmanac et al. (1989), Lysov et al. (1988), Southern (1988). Wegen der unterschiedlichen GC-Gehalte hätten die Oligos auf den universellen Arrays jedoch sehr verschiedene Hybridisierungseigenschaften. Bis heute konnte sich die SBH-Idee nicht praktisch durchsetzen. Dass dies in Zukunft noch geschieht, ist extrem unwahrscheinlich, da es nun jede Menge zuverlässige Hochdurchsatz-Technologien zur DNA-Sequenzierung gibt. Die verwewndeten algorithmischen Ideen waren jedoch sehr fruchtbar und haben in der Zwischenzeit viele weitere Anwendungen gefunden, so dass es sich lohnt, sie zu beleuchten. Ferner haben Sequenzier-Chips durchaus andere Anwendungen im Bereich der Re-Sequenzierung gefunden: Wenn man die Sequenz im Prinzip schon kennt und nur prüfen möchte, ob der bekannte Wildtyp vorliegt oder Mutationen aufgetreten sind, kann man sie (im Gegensatz zur de novo Sequenzierung) gut einsetzen. Dabei können spezifischere längere Oligos (20bis 30-mere) verwendet werden, da nicht alle Oligos auf dem Chip sein müssen, sondern nur die perfekten Matches der Referenz-Sequenz und Variationen davon. Sogenannte SNP-Arrays R enthalten zahlreiche Paa(SNP für single nucleotide polymorphism) der Firma Affymetrix re von 25-meren, von denen ein Oligonukleotid eine bestimmte Stelle im Referenzgenome repräsentiert und das andere eine bekannte mögliche Mutation an dieser Stelle. Wenn man ganze Genome mit einem Array abdeckt, spricht man von einem (genome) tiling array (to tile s.th.: etwas kacheln, Fliesen legen). Wir betrachten jetzt das exakte SBH-Problem, bei dem wir davon ausgehen, die exakten Vielfachheiten jedes enthaltenen L-mers zu kennen. Formal ergibt sich das Problem, einen String anhand der Kenntnis über enthaltene Teilstrings zu rekonstruieren: 2.1 Problem (SBH). Gegeben: Vielfachheiten jedes L-mers in einer unbekannten DNASequenz s ∈ Σ∗ . Diese 4L Zahlen nennt man das L-Spektrum von s. Gesucht: s ∈ Σ∗ . • Diese Problemstellung ist relativ praxisfern, da man anhand der Hybridisierung nicht genau ermitteln kann, wie oft ein L-mer in s vorkommt. Andere Varianten des Problems gehen daher nur davon aus, dass man eine binäre Entscheidung zu jedem L-mer bekommt (kommt nicht vor oder kommt mindestens einmal vor) und fragen nach jeder Lösung (mit einer gewissen Mindest- und Höchstlänge). Statistische Varianten nehmen an, dass eine (gute) Schätzung für die Vielfachheiten gegeben ist und fragen nach der plausibelsten Rekonstruktion von s. Dabei sind natürlich zunächst geeignete Fehlermodelle zu entwickeln und zu formalisieren. Fehlerquellen sind folgende: Es können falsch positive (FP) Hybridisierungen zwischen s und Oligos auftreten, die nicht perfekt in s enthalten sind. Es können weiter falsch negative (FN) Hybridisierungen auftreten, d.h., ein in s vorkommendes Oligo bindet nicht oder nicht stabil genug, warum auch immer. Schon kleine Fehlerraten führen dazu, dass mehrere Lösungen plausibel sind; somit kann s nicht eindeutig rekonstruiert werden. 2.2.2 Algorithmen für das exakte SBH-Problem Es hilft, sich das exakte SBH-Problem an folgenden zwei Beispielen zu verdeutlichen: 2.2 Beispiel (3-Spektren). • Spektrum (jeweils Vielfachheit 1): ATG, AGG, TGC, TCC, GTC, GGT, GCA, CAG 16 2.2 Sequencing by Hybridization (SBH) • Spektrum (jeweils Vielfachheit 1): ATG, TGG, TGC, GTG, GGC, GCA, GCG, CGT ♥ (Ineffiziente) Modellierung als Hamilton-Pfad-Problem. Es scheint natürlich, das Problem auf folgende Weise in ein Problem auf einem gerichteten Graphen G = (V, E) zu übersetzen: • Definiere die Knotenmenge V als die Menge aller L-mere entsprechend ihrer Vielfachheit (wenn z.B. ACGT dreimal vorkommt, gibt es drei Knoten in V , die ACGT entsprechen). • Ziehe Kanten zwischen Knoten u → v, falls das (L − 1)-Suffix von u gleich dem (L − 1)Präfix von v ist. Das Problem, aus den L-meren die Sequenz s zu rekonstruieren, führt auf das bekannte Problem, einen Hamilton-Pfad in G zu finden. 2.3 Problem (Hamilton-Pfad). Gegeben: gerichteter Graph G = (V, E). Gesucht: Pfad in G, der alle Knoten genau einmal besucht. • Es ist instruktiv, Beispiel 2.2 als Hamilton-Pfad-Problem zu formulieren. Das Problem ist nah verwandt mit dem Traveling-Salesperson-Problem und NP-schwer. Heißt das, dass SBH auch NP-schwer ist? Nein! Es könnte ein (nicht stichhaltiges) Indiz dafür sein, aber eventuell haben wir nur ein einfaches Problem in ein schwieriges umformuliert! In der Tat ist dies hier der Fall. (Effiziente) Formulierung als Euler-Pfad-Problem. Wir versuchen es anders: Wir definieren einen gerichteten Graphen G = (V, E) mit gewichteten Kanten E. 2.4 Definition (De Bruijn Graph eines L-mer Spektrums). Den folgendermaßen definierten Graphen nennt man De Bruijn-Graphen eines gegebenen L-mer-Spektrums. • Definiere V als die Menge aller (L − 1)-mere. • Ziehe eine Kante u → v, falls das (L−2)-Suffix von u gleich dem (L−2)-Präfix von v ist. Diese Kante entspricht dem L-mer, das sich aus der überlappenden Konkatenation von u und v ergibt, und erhält die entsprechende Vielfachheit im Spektrum als Gewicht. Diese Umformulierung führt auf ein Euler-Pfad-Problem: 2.5 Problem (Euler-Pfad). Gegeben: gerichteter Graph G = (V, E) mit Kantengewichten (natürliche Zahlen). Gesucht: Pfad, der jede Kante genau so oft benutzt, wie ihr Gewicht vorschreibt. • Das Problem geht auf Leonhard Euler zurück, der das Königsberger Brückenproblem1 formulierte und löste. 1 siehe auch http://de.wikipedia.org/wiki/K\%C3\%B6nigsberger_Br\%C3\%BCckenproblem 17 2 DNA-Microarrays und SBH Es ist an dieser Stelle nützlich, Beispiel 2.2 als Euler-Pfad-Problem zu formulieren. Wir werden nun sehen, dass SBH-Problem in dieser Formulierung einfach zu lösen ist. Wir werden eine Kante mit Gewicht n auch als n Kanten zwischen den gleichen Knoten auffassen. Wir setzen weiter voraus, dass der betrachtete Graph zusammenhängend ist. 2.6 Definition (Euler-Kreis, Euler-Graph, Euler-Graph). Ein Pfad in einem Graphen heißt Euler-Pfad, wenn er jede Kante genau einmal benutzt. Ein Kreis (Pfad mit dem gleichen Anfangs- und Endpunkt) in einem Graphen heißt Euler-Kreis, wenn er jede Kante genau einmal benutzt. Ein Graph heißt Euler-Graph, wenn er einen Euler-Kreis enthält. 2.7 Definition (Eingrad, Ausgrad, (semi-)balancierte Knoten). Der Eingrad eines Knoten v in einem gerichteten Graphen ist die Anzahl der in v endenden Kanten und wird mit indeg(v) bezeichnet. Analog ist outdeg(v) der Ausgrad, die Anzahl der aus v ausgehenden Kanten. Ein Knoten v heißt balanciert, wenn indeg(v) = outdeg(v). Er heißt semi-balanciert, wenn | indeg(v) − outdeg(v)| = 1. 2.8 Satz (Satz von Euler). Ein Graph ist ein Euler-Graph genau dann, wenn jeder seiner Knoten balanciert ist. Beweis. Dies ist ein Klassiker der Graphentheorie. Ist der Graph ein Euler Graph, existiert ein Euler-Kreis. Damit sind alle Knoten balanciert. Die Rückrichtung folgt durch Angabe einer Konstruktionsvorschrift für Euler-Kreise, wenn alle Knoten balanciert sind: Beginne an einem beliebigen Knoten v0 und folge zufällig gewählten bisher unbenutzten Kanten, bis ein Knoten erreicht wird, von dem keine unbenutzten Kanten mehr ausgehen. Dies muss wegen der Balanciertheit v0 selbst sein; wir haben also einen Kreis gefunden. Ist dies ein Euler-Kreis, sind wir fertig. Wenn nicht, muss er wegen des Zusammenhangs einen Knoten w mit noch unbenutzten ausgehenden Kanten enthalten. Analog finden wir einen Kreis von und nach w aus bisher unbenutzten Kanten; diesen fügen wir in den exisitierenden Kreis ein. Dies machen wir solange, bis insgesamt ein Eulerkreis entstanden ist. Dieses Verfahren kann in Linearzeit O(|E|) implementiert werden. 2.9 Satz (Satz von Euler für Pfade). Ein Graph enthält einen Eulerschen Pfad genau dann, wenn er höchstens zwei semi-balancierte Knoten enthält und alle anderen Knoten balanciert sind. Beweis. Die eine ⇒-Richtung ist wieder offensichtlich. Zur ⇐-Richtung: Durch die SemiBalanciertheitsbedingung gibt es genau einen Knoten mit höherem Eingrad als Ausgrad und unmgekehrt. Diese müssen Start- und Endknoten eines Euler-Pfades sein. Wir fügen temporär eine Kanten vom End- zum Startknoten ein. Jetzt sind alle Knoten balanciert, und wir finden einen Euler-Kreis. Aus diesem löschen wir die eingefügte Kante und bekommen einen Euler-Pfad. 2.2.3 Anzahl der Sequenzen mit gegebenem Spektrum Zu einem gegebenem L-Spektrum können wir (bei geschickter Implementierung in Linearzeit) den De Bruijn-Graphen (mit (L − 1)-meren als Knoten) konstruieren und testen, ob dieser mindestens einen Euler-Pfad besitzt und auch einen solchen finden. 18 2.2 Sequencing by Hybridization (SBH) Häufig werden wir vor dem Problem stehen, dass die Sequenz aus dem Spektrum nicht eindeutig rekonstruiert werden kann. Deshalb fragen wir: Wie viele Euler’sche Pfade gibt es, wenn es mindestens einen gibt? Wir lösen das Problem zunächst nur in Euler-Graphen für Euler-Kreise; der Transfer auf Pfade ist eine Übungsaufgabe. 2.10 Definition (orientierter Baum mit Wurzel). Ein orientierter Baum mit Wurzel r ist ein gerichteter Graph T ohne Schleifen (Schleifen sind Kanten u → u) mit einem Knoten r, so dass es von jedem Knoten u 6= r aus genau einen Pfad von u nach r gibt. Es ist damit klar, dass der zugrundeliegende ungerichtete Graph damit ein ungerichteter Baum ist und in T alle Kanten auf r zulaufen. 2.11 Definition (aufspannender orientierter Baum mit Wurzel). Ein aufspannender orientierter Baum mit Wurzel r ∈ V (G) zu einem gerichteten Graphen G ist ein orientierter Baum T mit Wurzel r, der ein Teilgraph von G mit V (T ) = V (G) ist. 2.12 Satz (BEST-Theorem nach de Bruijn, van Aardenne-Ehrenfest, Smith, Tutte). Sei G = (V, E) ein gerichteter Graph, in dem alle Knoten balanciert sind. Sei e eine Kante in G und init(e) ihr Startknoten. Sei Euler(G, e) die Anzahl der Eulerkreise in G, die mit der Kante e beginnen. Sei Trees(G, v) die Anzahl der orientierten aufspannenden Bäume von G mit Wurzel v. Dann gilt: Y Euler(G, e) = Trees(G, init(e)) · (outdeg(u) − 1)! u∈V Beweis. Wir zeigen: 1. Jeder Euler-Kreis K, der mit e beginnt, entspricht einem bestimmten orientierten aufspannenden Baum TK mit Wurzel init(e). 2. Zu jedem orientierten aufspannenden Baum T mit Wurzel init(e) bekommen wir eine bestimmte Anzahl Euler-Kreise K, die mit Qe beginnen und für die mit der Konstruktion in 1. gilt, dass TK = T . Dies sind genau u∈V (outdeg(u) − 1)! Stück. Aus 1. und 2. folgt unmittelbar der Satz. Zu 1.: Sei K ein Euler-Kreis, der mit e beginnt, und sei v := init(e). Definiere zu jedem Knoten u die Kante e(u) als diejenige Kante, über die u beim Ablaufen von K zuletzt verlassen wird. Wir behaupten: Die |V | Knoten, zusammen mit den |V | − 1 Kanten e(u) für u 6= v, bilden einen orientierten aufspannenden Baum mit Wurzel v. Dies ist leicht zu verifizieren: (a) Von v geht keine Kante aus. (b) Von jedem Knoten u 6= v geht genau eine Kante aus. (c) Von jedem Knoten u 6= v existiert ein Pfad nach v. Zu 2.: Sei T ein orientierter aufspannender Baum von G mit Wurzel v. Wir können EulerKreise in G wie folgt konstruieren: Verlasse v über e. In jedem erreichten Knoten, wähle eine beliebige ausgehende Kante; aber wähle nur dann eine Kante aus T , wenn dies die einzige Möglichkeit ist, den Knoten zu verlassen (d.h. wähle die Kante aus dem Baum T erst beim letzten Verlassen eines Knotens). Bilden wir zu einem solchen Euler-Kreis wieder den Baum gemäß 1., so erhalten wir T zurück. Wie viele verschieden Euler-Kreise können wir zu T finden? In jedem Knoten u 6= v können wir eine beliebige Permutation der ausgehenden 19 2 DNA-Microarrays und SBH Kanten wählen, außer der letzten, die durch T vorgegeben ist. In v können wir eine beliebige PermutationQder ausgehenden Kanten wählen, außer der ersten, denn das ist e. Insgesamt gibt es also u∈V (outdeg(u) − 1) verschiedene Euler-Kreise, die mit e beginnen, zu T . Das war zu zeigen. Folgerungen: 1. Trees(G, v) ist unabhängig von v. (Denn: Euler(G, e) ist unabhängig von der Startkante e.) Wir definieren also Trees(G) := Trees(G, v) für irgendein v aus der Knotenmenge von G. 2. Es gibt auf jeden Fall mehr als einen Euler-Kreis in G, wenn T rees(G) > 1 oder wenn outdeg(v) ≥ 3 für mindestens ein v. Wir kı̈nnen jetzt die Anzahl der Euler-Kreise eines Euler-Graphen berechnen, wenn wir Trees(G) berechnen können. Hierfür gibt es eine Determinanten-Formel, die wir jetzt beweisen. 2.13 Satz (Formel für Trees(G)). Sei G ein zusammenhängender gerichteter Graph (ohne Schleifen) mit Knotenmenge V = { v1 , . . . , vp }. Sei kij die Anzahl der Kanten von vi nach vj (Adjazenzmatrix). Sei L die p timesp-Matrix mit Lij := −kij für i 6= j und Lii := outdeg(vi ). Sei L0 die Matrix, die aus L entsteht, wenn man die letzte Zeile und Spalte streicht. Dann gilt: det(L0 ) = Trees(G, vp ). Bemerkungen zum Satz: 1. Die Zeilensummen von L sind Null. 2. Der Satz gilt entsprechend, wenn man in L0 für irgendein i ∈ { 1, . . . , p } die i-te Zeile und Spalte weglässt; man erhält dann Trees(G, vi ). Wir hatten schon gesehen, dass die Zahl Trees(G, vi ) unabhängig von i ist. Beweis. [Skizze] Sei q die Anzahl der Kanten in G; wir führen Induktion nach q durch. Da G zusammenhängend ist, gilt auf jeden Fall q ≥ p − 1. Basisfall: q = p − 1. In diesem Fall ist der zugrundeliegende ungerichtete Graph ein Baum. Entweder G selbst ist orientierter Baum mit Wurzel vp oder nicht. Wenn nein, gibt es mindestens einen Knoten, von dem aus kein Pfad nach vp führt. D.h., es gibt einen Knoten u 6= vp mit outdeg(u) = 0. Das wiederum heißt, L0 besitzt eine Nullzeile und det(L0 ) = 0. Wenn ja, so lässt sich nachrechnen, dass [[det(L0 ) = 1]]. Induktionsfall: q > p − 1. Wir dürfen jetzt annehmen, dass der Satz schon für alle Graphen mit höchstens q − 1 Kanten bewiesen ist. Wir nehmen weiter an, dass keine Kante in G von vp ausgeht (eine solche kann gelöscht werden, ohne die zu beweisende Gleichung zu verändern). Da G mindestens p Kanten besitzt und outdeg(vp ) = 0, muss es einen anderen Knoten u geben mit outdeg(u) ≥ 2. Sei e eine der Kanten mit init(e) = u. Sei G0 der Graph G ohne e. Sei G00 der Graph G ohne die anderen Kanten, die von u ausgehen, aber mit e. Seien L00 , L000 die Matrizen zu G0 und G00 . Nach Induktionsannahme gilt hierfür der Satz. Jetzt überlegen wir, dass einerseits Trees(G) = Trees(G0 ) + Trees(G00 ) gilt, und anderereits aufgrund der Multilinearität der Determinante det L0 = det L00 + det L000 gilt. 20 KAPITEL 3 Phylogenetik: Merkmalsbasierte Methoden 3.1 Einführung und Grundlagen Fragestellung. Phylogenetische Bäume (auch evolutionäre Bäume) stellen die evolutionären Beziehungen zwischen einer Menge von Objekten (häufig Spezies oder Gruppen von Spezies) dar. Die Blätter des Baum repräsentieren die zur Zeit existierenden (und damit beobachtbaren) Spezies (oder Gruppen von Spezies). Man spricht in diesem Zusammenhang auch von operational taxonomic unit (OTU) oder einfach Taxon (Plural: Taxa). Die inneren Knoten sind stets verzweigend (haben einen Ausgrad von mindestens 2) und repräsentieren die letzten gemeinsamen Ahnen vor einem Speziations-Ereignis (Auftrennung einer Spezies in zwei). Da diese Ahnen im Normalfall nicht mehr existieren, sind Daten zu ihnen (im Gegensatz zu den Blättern) in der Regel nicht verfügbar. Das Ziel einer phylogenetischen Untersuchung ist häufig, aufgrund der Merkmalsausprägungen der heutigen Spezies auf die Baumtopologie und auf die Merkmalsausprägungen bei den Ahnen zu schließen. Aufgrund der fehlenden Daten aus der Vergangenheit, lassen sich nur Mutmaßungen anstellen, deren Plausibilität durch bestimmte Annahmen vewertet werden kann. Da die Speziation (Auftrennung von Arten) ein anschaulich schwer vorstellbarer Prozess ist, machen wir noch einige Bemerkungen dazu. Zunächst lässt sich formal nur schwer definieren, was eigentlich eine Spezies (Art) genau ist. Häufig definiert man eine Art als die Menge aller Individuen, die sich miteinander paaren und fruchtbaren Nachwuchs zeugen können; das führt aber im Detail auf Probleme. In jedem Fall bezieht sich der Begriff Art immer auf eine Population von Individuen, nicht auf ein einzelnes Individuum. Veränderungen (Mutationen) des Genoms finden aber auf individueller Ebene statt, so dass eine Speziation immer damit beginnen muss, dass es von der “Norm” abweichende Individuen gibt. Zur Entwicklung einer 21 3 Phylogenetik: Merkmalsbasierte Methoden neuen Art müssen diese in der Regel räumlich von ihren bisherigen Artgenossen getrennt werden, so dass sich die beiden Populationen getrennt entwickeln können. Im Laufe der Zeit häufen sich die genetischen Unterschiede zwischen den Teilpopulationen, so dass eine Paarung auch dann nicht mehr funktionieren würde, wenn sie ihren Lebensraum wieder miteinander teilen würden. Bäume. Wir setzen voraus, dass folgende grundlegende Begriffe zu Bäumen bekannt sind: (ungerichteter / gerichteter) Graph, Knoten, Kanten, Grad / Eingrad / Ausgrad eines Knoten, Zusammenhang, Pfad, Kreis oder Zyklus, einfacher Kreis (benutzt jede Kante höchtens einmal), Kantengewichte, Länge eines Pfades, Kanten- und Knotenlabel, Baum, Charakterisierung eines ungerichteten Baums: azyklisch und zusammenhängend, Wurzel eines Baums, innerer Knoten eines Baums, Blatt eines Baums. Die hier betrachteten Bäume haben verschiedene Beschriftungen (Label) in den Blättern, d.h. die Blätter sind unterscheidbar. Wir unterscheiden hier zwischen ungerichteten ungewurzelten Bäumen und gerichteten gewurzelten Bäumen, in denen per Konvention alle Kanten von der Wurzel zu den Blättern zeigen. Vergisst man in einem gewurzelten binären Baum die Wurzel (und klebt die beiden offenen Kanten zusammen), erhält man einen ungewurzelten Baum, in dem die ursprünglichen Kantenrichtungen unbekannt sind. Ein gewurzelter Baum ist ein Binärbaum, wenn die Wurzel und jeder innere Knoten Ausgrad 2 hat. Ein ungewurzelter Baum ist ein Binärbaum, wenn jeder innere Knoten den Grad 3 hat. Ein phylogenetischer Baum heißt auch vollständig aufgelöst, wenn er ein Binärbaum ist. Ein Knoten, der die Binärbaum-Bedingungen erfüllt, heißt Bifurkation. Ein Knoten, der die Bedingungen verletzt, heißt Multifurkation oder Polytomie. Multifurkationen entstehen, wenn man die genaue Reihenfolge von Speziations-Ereignissen nicht genau festlegen kann. Unter der Topologie eines Baumes verstehen wir sein Verzweigungsmuster; wir präzisieren dies gleich. Wir bemerken dazu, dass die (ausgehenden) Kanten in einem Knoten keine Reihenfolge haben (innere Knoten und die Wurzel verhalten sich also wie p-Knoten in einem pq-Baum). Äquivalent zum Verzweigungsmuster ist bei gewurzelten Bäumen die Mengen der Blätter in den Unterbäumen, die in den inneren Knoten wurzeln. Bei ungewurzelten oder gewurzelten Bäumen entspricht das der Menge der Splits. Ein Split ist eine Partition der Blätter in zwei Mengen, die entsteht, wenn man eine Kante im Baum löscht, so dass der Baum in zwei Zusammenhangskomponenten zerfällt. Zwei Bäume mit beschrifteten Blättern sind genau dann gleich (d.h., haben das gleiche Verzweigungsmuster), wenn sie die gleiche Split-Menge besitzen. Ein gewurzelter Baum lässt sich kompakt im sogenannten PHYLIP- oder NEWICK-Format angeben; siehe auch http://evolution.genetics.washington.edu/phylip.newicktree. html. Die Grundidee dabei ist, dass der String (x, y) einen inneren Knoten mit Unterbäumen x und y darstellt. Dabei können x und y entweder wieder innere Knoten oder Blattbezeichnungen sein. Blätter und Spezies bezeichnen wir hier der Kürze wegen mit A, B, C, etc. Es sollte nun klar sein, dass (A,(B,C)), (A,(C,B)), ((B,C),A), ((C,B),A) jeweils denselben gewurzelten Baum darstellen, der dadurch charakterisiert ist, dass die Blätter B und C einen gemeinsamen Unterbaum bilden, also zueinander näher verwandt sind als zu A. 22 3.1 Einführung und Grundlagen Bei ungewurzelten Bäumen geht legt man die Wurzel an irgend eine Kante und gibt die Klammerdarstellung des entsprechend gewurzelten Baums an. Natürlich bezeichnen dann sehr verschiedene Darstellungen den gleichen ungewurzelten Baum, zu, Beispiel ist dann (((A,B),C),(D,E)) = (A,(B,(C,(D,E)))). Beim Zeichnen von gewurzelten Bäumen wird die Wurzel normalerweise oben gezeichnet, die Blätter unten. Die y-Achse repräsentiert dann die Zeit: Oben ist die Vergangenheit, unten die Gegenwart. Die x-Achse (also die Reihenfolge der Blätter) hat keine Bedeutung. Abzaählen ungewurzelter Binärbäume. Wir stellen nun die Frage, wie viele verschiedene ungewurzelte Binärbäume Un für n Taxa existieren. Für n = 3 ist die Frage leicht zu beantworten: Offensichtlich ist U3 = 1; es gibt genau einen inneren Knoten, von dem die 3 Taxa sternförmig abzweigen, und damit 3 Kanten. Um zu ermitteln, wie groß Un+1 für n ≥ 3 ist, argumentieren wir wie folgt: In jeden der Un Bäume können wir das (n + 1)-te Taxon in jeder der 2n − 3 Kanten einfügen (durch Einfügen eines neuen inneren Knoten, der die existierende Kante teilt, und durch weiteres Einfügen einer neuen Blattkante). Jede dieser Un · (2n − 3) Möglichkeiten führt auf eine unterschiedliche Baumtopologie. Weitere Topologien gibt es nicht. Daher gilt Un+1 = Un · (2n − 3). Wenn wir nun nach der Anzahl Wn von gewurzelten Binärbaumtopologien fragen, dann stellen wir fest, dass die Wahl der Position der Wurzel genau der Wahl einer weiteren Kante entspricht, als würde man ein (n + 1)-tes Blatt einfügen wollen. Daher ist Wn = Un+1 . Die folgende Tabelle zeigt Un und Wn für einige kleine Werte von n. n Un Wn 3 1 3 4 3 15 5 15 105 6 105 945 7 945 10395 8 10395 135135 Insgesamt ergibt sich folgender Satz, der sich nun leicht per Induktion beweisen lässt. Q 3.1 Satz. Sei n ≥ 3. Es gibt genau Un = ni=3 (2i − 5) ungewurzelte Binärbäumtopologien mit n verschiedenen Blättern. Es gibt genau Wn = Un+1 gewurzelte Binärbaumtopologien mit n verschiedenen Blättern. Es folgt, dass die Anzahl der Binärbaumtopologien überexponentiell mit n wächst. Erlaubt man zusätzlich Multifurkationen, ist die Anzahl der Baumtopologien noch bedeutend höher. Will man erschöpfend alle (ungewurzelten oder gewurzelten) Baumtopologien mit n Blättern aufzählen, kann man dies einfach mit einer rekursiven Funktion tun, die die obige Argumentation nachvollzieht und nacheinander die Blätter (und ggf. zum Schluss die Wurzel) an allen möglichen Positionen einfügt. 23 3 Phylogenetik: Merkmalsbasierte Methoden Merkmale. Häufig stehen wir vor dem oben genannten Problem, dass wir zu einer Menge von Taxa bestimmte Merkmale beobachten können und daraus rekonstruieren wollen, wie diese Taxa evolutionär zusammenhängen. Wir formalisieren zunächst den Merkmalsbegriff. 3.2 Definition (Merkmal, Ausprägung oder Zustand). Ein Merkmal ist ein Paar (λ, C) aus einem Namen λ und einer Menge C. Jedes c ∈ C heißt eine Ausprägung oder ein Zustand des Merkmals. Es gibt verschiedene Arten von Merkmalen; binär Die Zustandsmenge ist äquivalent zu C = {0, 1}, wobei konventionell die 1 die Existenz einer Eigenschaft anzeigt. Ein Beispiel ist λ = “Existenz eines zentralen Nervensystems”. linear geordnet Die Zustandsmenge ist linear geordnet, z.B. λ = “Anzahl der Extremitäten (Arme, Beine, etc.)”. kategoriell Die Menge C ist endlich, und es gibt keine offensichtliche Ordnung der Zustände. Ein Beispiel ist ein DNA-Nukleotid an einer bestimmten Position in einem Gen; hier ist C = { A,C,G,T }. Im Folgenden gehen wir davon aus, dass zu n Taxa die Ausprägungen von m Merkmalen gegeben sind (z.B. in Form einer n × m-Tabelle oder -Matrix). In diesem Zusammenhang bezeichnen wir auch (nicht ganz korrekt) eine Tabellenspalte als Merkmal (eigentlich: Vektor der Ausprägungen eines Merkmals in allen Taxa) und eine Tabellenzeile als Taxon (eigentlich: Vektor der Ausprägungen aller Merkmale im Taxon). 3.3 Beispiel (Fahrzeuge). Fahrräder, Motorräder, Autos und Dreiräder sind Fahrzeuge. Wir betrachten die Merkmale “Anzahl der Räder” mit Zustandsmenge N0 (linear geordnet) und “Existenz eines Motors” (binär). Eine entsprechende Merkmalsausprägungsmatrix (Taxa × Merkmale) kann jede/r leicht aufstellen. ♥ 3.2 Perfekte Phylogenien Ein wesentliches Argumentationsprinzip in der Phylogenetik ist, dass sich Merkmale nicht beliebig ändern können. Der Zustand aller Merkmale ist durch die Erbinformation codiert, sie sich sehr stabil unverändert weitervererbt. Dabei kommt es nur gelegentlich zu sinnvollen Mutationen, die zu anderen Merkmalsausprägungen führen. Daher kann man (approximativ) davon ausgehen, dass jedes Merkmal im Lauf der Evolution nur einmal “erfunden” wurde, sich also zufällig herausgebildet hat. Dies führt auf die Begriffe der Kompatibilität eines Merkmals mit einer Baumtopologie und einer Perfekten Phylogenie (PP). 3.4 Definition (Kompatibilität). Ein Merkmal mit Ausprägungsmenge C heißt kompatibel mit einer Baumtopologie T = (V, E), wenn man alle inneren Knoten (und ggf. die Wurzel) so mit Ausprägungen beschriften kann, dass für alle c ∈ C gilt: Die Knotenmenge Vc := { v ∈ V | label(v) = c } induziert eine einzige Zusammenhangskomponente. 3.5 Definition (Perfekte Phylogenie). Eine Baumtopologie T = (V, E) heißt Perfekte Phylogenie für eine Ausprägungsmatrix, wenn sie kompatibel mit jedem Merkmal darin ist. 24 3.2 Perfekte Phylogenien Natürlich stellt sich die Frage, ob man einer Ausprägungsmatrix ansehen kann, ob eine perfekte Phylogenie existiert. 3.6 Problem (Problem der Perfekten Phylogenie). Gegeben eine n × m-Merkmalsausprägungsmatrix, gibt es eine perfekte Phylogenie dazu? • Im Allgemeinen ist das Problem NP-schwer TODO: Zitat . Unter der Voraussetzung, dass alle Merkmale binär sind und wir einen gewurzelten Baum suchen, der in der Wurzel ausschließlich die Null-Ausprägungen aufweist (bisher kein Merkmal erfunden), dann gibt es eine einfache Charakterisierung solcher Matrizen TODO: Zitat Gusfield . 3.7 Satz (Charakterisierung Perfekter Phylogenien). Sei M = (Mij ) ∈ { 0, 1 }n×m eine binäre Merkmalsausprägungsmatrix. Zu Spalte j sei Oj := { i : Mij = 1 } die Menge der Taxa (oder Objekte), bei denen Merkmal j ausgeprägt ist. Dann gibt es zu M genau dann eine PP, wenn für je zwei Spalten j, k gilt: Oj ⊆ Ok oder Ok ⊆ Oj oder Ok ∩ Oj = { }. Den Beweis sparen wir uns und geben nur kurz die Idee an: Dass die genannte Bedingung in einer PP erfüllt ist, ist klar. Umgekehrt: Gilt Oj ⊂ Ok , dann wird Merkmal j “nach” Merkmal k erfunden, und man kann die Taxa so anordnen, dass alle mit Merkmal k einen Teilbaum bilden und die mit Merkmal j einen Unterbaum darin. Gilt Oj ∩ Ok , treten die Merkmale j, k nie zusammen auf, d.h. man kann die Taxa so anordnen, dass diejenigen mit Merkmal j und diejenigen mit Merkmal k jeweils einen Unterbaum bilden und diese beiden Unterbäume disjunkt sind. Ein naiver Test der Bedingung kostet Zeit O(nm2 ), da man alle Paare von Spalten testen muss. Durch Sortieren der Spalten mit Radix-Sort und weitere Tricks ist aber ein Test (und die Konstruktion einer PP, wenn sie existiert) sogar in O(mn) Zeit möglich. Prinzipiell erstellt man, um eine PP zu rekonstruieren, das Hasse-Diagramm der Inklusionsbeziehungen der Oj -Mengen: Jedes Oj bildet einen Knoten, Kanten zieht man vom direkten Vorgänger zum direkten Nachfolger bezüglich der Teilordnung, die durch ⊆ gegeben ist. Aufgrund der Bedingung im Satz ist das Hasse-Diagramm ein Baum, aus dem man die PP leicht erhalten kann. Wir betrachten noch kurz den Fall, dass die binäre Matrix M in einer Form gegeben ist, zu der zwar prinzipiell eine PP existiert, aber die Bedingung verletzt ist, dass alle Merkmale in der Wurzel die Ausprägung 0 haben. In diesem Fall nützt Satz 3.7 zunächst nicht. Eine (naive) Lösung wäre zu versuchen, gewisse Merkmale zu invertieren. Möchte man aber alle Kombinationen von Merkmalen durchprobieren, müsste man das PP 2m -mal lösen. Glücklicherweise gibt es ein einfaches Kriterium, das sagt, welche Merkmale man invertieren muss (ohne Beweis). 3.8 Lemma. Gibt es zu einer binären Matrix M überhaupt eine PP, und invertiert man die Spalten, in denen mehrheitlich der Zustand 1 vorkommt, dann erfüllt die resultierende Matrix M 0 die Bedingungen zu Satz 3.7. 25 3 Phylogenetik: Merkmalsbasierte Methoden 3.3 Maximum Parsimony 3.3.1 Motivation Wenn man m echte Merkmale in n Spezies beobachtet und daraus eine Perfekte Phylogenie zu rekonstruieren versucht, stellt man häufig fest, dass es eine solche nicht gibt. Es gibt mehrere Möglichkeiten, die Forderung nach “Perfektion” aufzuweichen: 1. Die gegebenen Daten werden als fehlerhaft betrachtet; und wir suchen nach einer Datenmatrix, die der gegebenen möglichst ähnlich ist, zu der es aber eine Perfekte Phylogenie gibt. Hierzu müssen wir ein Abstandsmaß zwischen zwei Merkmalsausprägungsmatrizen definieren. Wir kommen in Abschinitt ?? darauf zurück. 2. Dass im Laufe der Evolution keine Merkmalsausprägung mehrfach unabhängig erfunden wird (wie es ja eine Perfekte Phylogenie voraussetzt), ist erwiesenermaßen nicht immer wahr. TODO: Beispiel? Da es aber unwahrscheinlich ist, dass die Evolution zweimal zufällig das Gleiche hervorbringt, sollten solche Ereignisse sehr selten sein, gewissermaßen sparsam verwendet werden. Das englische Wort für Sparsamkeit ist parsimony. Bei Maximum Parsimony Problemen versuchen wir also eine Baumtopologie und eine Belegung der inneren Knoten zu finden, so dass möglichst wenig Änderungen von Merkmalsausprägungen entlang von Kanten stattfinden. Man beachte den grundlegenden Unterschied, durch den sich die beiden Ansätze unterscheiden. Im ersten Fall werden nur Perfekte Phylogenien für wahr gehalten; und wenn die Daten dem widersprechen, wird das durch Fehler in den Daten erklärt. Im zweiten Fall (Maximum Parsimony) wird das Perfekte Phylogeniemodell in Frage gestellt. 3.3.2 Problemstellung Man kann verschiedenen Zustandswechseln eines Merkmals verschiedene Kosten zuweisen und erhält dann folgende formale Probleme. 3.9 Definition (Kostenfunktion). Eine Kostenfunktion beim Kleinen Parsimony-Problem für ein Merkmal mit möglichen Ausprägungen aus einer Menge X ist eine Funktion cost : X × X → R≥0 , so dass cost(x, x0 ) = 0 genau dann wenn x = x0 . Gelegentlich setzen wir sogar stärker voraus, dass die Kostenfunktion eine Metrik ist, d.h. dass darüberhinaus Symmetrie und die Dreiecksungleichung gelten; wir sprechen dann von einer Kostenmetrik : • Symmetrie: cost(x, y) = cost(y, x) für alle x, y ∈ X • Dreiecksungleichung: cost(x, y) ≤ cost(x, z) + cost(z, y) für alle x, y, z ∈ X 3.10 Problem (Kleines Parsimony-Problem für ein Merkmal). Gegeben seien die Ausprägungen (x1 , . . . , xn ) eines Merkmals in n Spezies und eine Baumtopologie mit n Blättern, die mit x1 , . . . , xn belegt sind, sowie eine Kostenfunktion, die einer Ausprägungsänderung von x nach x0 die Kosten cost(x, x0 ) ≥ 0 zuordnet. Man spricht von Einheitskosten, wenn cost(x, x0 ) = [[x 6= x0 ]]. 26 3.3 Maximum Parsimony Gesucht ist eine Belegung der inneren Knoten und der Wurzel mit Merkmalsausprägungen, so dass die Kosten der Änderungen im Baum minimal sind. Die Kosten der Änderungen im Baum berechnen als Summe der Kosten aller Kanten, wobei die Kosten einer Kante die Kosten der Änderung von der Ausprägung im Startknoten zur Ausprägung im Zielknoten einer Kante sind. Die minmalen Kosten der Änderungen im Baum bei optimaler Belegung heißen die Kosten der Baumtopologie für das betrachtete Merkmal. • 3.11 Problem (Großes Parsimony-Problem). Gegeben sind die Ausprägungen (xi j), 1 ≤ i ≤ n, 1 ≤ j ≤ m von m Merkmalen in n Spezies und eine Kostenfunktion costj für die Änderungen jedes Merkmals. Gesucht ist eine Baumtopologie mit minimalen Gesamtkosten. Die Gesamtkosten einer Baumtopologie sind die Summe der Kosten der Topologie über alle Merkmale. • Wir bemerken, dass man das Große Parsimony-Problem theoretisch wie folgt lösen kann, wenn man das Kleine Parsimony-Problem lösen kann: Man berechnet für jede Baumtopologie die Kosten der Topologie für jedes Merkmal und somit die Gesamtkosten der Topologie und wählt dabei die optimale Baumtopologie aus. Unpraktisch ist dabei, dass man über superexponentiell viele Topologien iterieren muss. Mit einigen Tricks lässt sich aber das Große Parsimony-Problem in der Praxis für etwas mehr als 20 Taxa so lösen. Viel mehr darf man sich nicht erhoffen, denn es gilt der folgende Satz, dessen Beweis bei TODO: Ref nachgelesen werden kann. 3.12 Satz. Das große Parsimony-Problem mit Einheitskosten ist NP-schwer. 3.3.3 Das Kleine Parsimony-Problem Sankoff’s Dynamic Programming Algorithmus für das Kleine Parsimony-Problem. Wir leiten einen Dynamic Programming Algorithmus für das kleine Parsimony-Problem auf beliebigen gewurzelten Baumtopologien her. Wir gehen weiter unten auf den Fall eines ungewurzelten Baums ein. Die Hauptidee ist, bei einer bottom-up-Durchmusterung für jeden Knoten v die optimalen Kosten C(v, x) für den in v wurzelnden Unterbaum, wenn v mit der Ausprägung x belegt wird, zu berechnen. In den Blättern ist die Belegung vorgegeben; daher setzen wir für ein Blatt v jeweils C(v, x) := 0, wenn x der Merkmalsausprägung in v entspricht, und C(v, x) := ∞ sonst. Für die inneren Knoten und die Wurzel gilt folgendes Lemma. 3.13 Lemma. Sei v ein innerer Knoten oder die Wurzel. Dann ist X C(v, x) = min [C(c, x0 ) + cost(x, x0 )]. 0 c Kind von v x (3.1) Beweis. Der Beweis erfolgt mit Induktion nach der (maximalen) Distanz von v zu einem Blatt. Für einen Knoten, der als Kinder nur Blätter hat, ist die Aussage klar. Sei nun das Lemma für alle Knoten unterhalb des betrachteten v bereits bewiesen. Sei x die PAusprägung in v, und sei xc die Ausprägung im Kind c von v. Es ist klar, dass C(v, x) ≤ c [C(c, xc ) + 27 3 Phylogenetik: Merkmalsbasierte Methoden cost(x, xc )] für alle xc gilt: Die optimalen Kosten in v mit x sind höchstens so hoch wie die Summe der optimalen Kosten in den Kindern plus die Kosten für die Kanten zu den Kindern. Wenn manP die Belegung der Kinder so wählt, das jeder Summand minimal wird, erhält man C(v, x) ≤ c Kind von v minx0 [C(c, x0 ) + cost(x, x0 )]. Angenommen, es gilt <: Dann müsste es mindestens ein Kind c geben, in dem bei passender Ausprägung x0 die Unterbaumkosten echt kleiner als C(c, x0 ) sind, was zum Widerspruch dazu steht, dass wir für c das Lemma schon bewiesen haben. Also gilt die Gleichheit. Wir definieren B(c, x) := argminx0 [C(c, x0 ) + cost(x, x0 )] als die Belegung des Kindes c, die in (3.1) das Minimum annimmt. Wenn wir bottom-up die Größen C(v, x) für alle inneren Knoten (inkl. Wurzel) v und Ausprägungen x berechnet haben und B(c, x) für alle inneren Knoten (ohne Wurzel) c und Ausprägungen x des Elternknoten kennen, dann wählen wir an der Wurzel r die Ausprägung xr := argminx C(r, x) und dann top-down im Kind c des schon belegten Knoten v die Ausprägung xc := B(c, xv ). Laufzeit und Platzbedarf sind O(nσ 2 ), wobei σ die Anzahl der verschiedenen Ausprägungen des betrachteten Merkmals ist. 3.14 Beispiel (Kleines Parsimony-Problem). Betrachte den Baum mit Ausprägungen (((A,(G,G)),((T,T),A)),(T,(A,G))). Durchführen des Algorithmus führt an der Wurzel zu A mit optimalen Kosten 4. ♥ Version von Fitch und Hartigan für Einheitskosten. Werden ausschließlich Einheitskosten verwendet, so lässt sich der obige Algorithmus anders darstellen; der Beweis der Äquivalenz ist eine Übungsausgabe. Jedem inneren Knoten v wird bottom-up eine Menge Sv zugeordnet: Einem Blatt wird die dort vorhandene Ausprägung zugeordnet. In einem inneren Knoten v setzen wir (T T c Sc nicht leer, c Sc wenn Sv := S c Sc sonst. Schnitt und Vereinigung laufen dabei über alle Kinder c von v. Wir behaupten: Sv ist (bei Einheitskosten) die Menge der x, die C(v, x) minimieren. Die endgültige Belegung wird topdown wie folgt durchgeführt: In der Wurzel r wähle irgendein xr ∈ Sr . Für das Kind c eines schon mit xv belegten Knoten v, wähle xc := xv wenn xv ∈ Sc , und irgendein xc ∈ Sc sonst. Der Zeitaufwand für diese Variante von Fitch und Hartigan ist nur O(nσ). Ungewurzelte Bäume. Ist der betrachtete Baum ungewurzelt, müssen zusätzlich annehmen, dass die Kostenfunktion eine Kostenmetrik ist (symmetrisch, Dreiecksungleichung). Dann können wir die Wurzel auf irgend einer Kante platzieren und das gewurzelte Problem lösen. Wir behaupten: Die Lösung und die optimalen Kosten hängen nicht von der Platzierung der Wurzel ab. Denn: In welche Richtung die Kanten durchlaufen werden, spielt aufgrund der Symmetrie keine Rolle. Das Einfügen der Wurzel als zusätzlicher Knoten zwischen Knoten u, v kann die optimalen Kosten aufgrund der Dreiecksungleichung nicht verbessern. 28 3.3 Maximum Parsimony Wählt man in der Wurzel aber die Merkmalsausprägung aus u oder v, werden die Kosten auch nicht verschlechtert. Achtung: Wenn keine Kostenmetrik vorliegt, kann die optimale Lösung sehr wohl von der Platzierung der Wurzel abhängen. 3.3.4 Das Große Parsimony-Problem Naiv löst man das Große Parsimony-Problem, in dem man alle Baumtopologien aufzählt, darin für jedes Merkmal die Kosten durch Lösen des Kleinen Parsimony-Problems berechnet und sich dabei die beste Topologie merkt. Beschleunigung durch Branch-and-Bound. Die Auswertung einer einzelnen Topologie kann man (um einen geringen Faktor) beschleunigen, wenn man ausnutzt, dass mit jedem weiteren Merkmal die Kosten nur steigen können: Treten bei Merkmal j in der Matrix genau p verschiedene Ausprägungen auf (und sind Einheitskosten gegeben), dann erhöhen sich die Gesamtkosten mindestens um p − 1. So kann man für alle noch nicht berechneten Merkmale abschätzen, welche Kosten mindestens noch hinzukommen, unabhängig von der Topologie. Kennt man schon eine Topologie mit Gesamtkosten x und hat man für die aktuelle Topologie schon m0 < m Merkmale ausgewertet und kommt dabei bisher auf Kosten y 0 und weiß, dass noch mindestens Kosten y 00 hinzukommen, und gilt y := y 0 + y 00 ≥ x, dann weiß man schon, ohne die verbleibenden Merkmale auszuwerten, dass die aktuelle Topologie nicht mehr besser als die beste bereits bekannte sein kann. Somit kann man die Auswertung vorzeitig abbrechen. Deutlich besser ist folgende Idee, bei der man ganze Gruppen von Topologien aussparen kann. Organisiert man das Aufzählen aller Topologien wie in Abschnitt ?? angedeutet, also als Tiefensuche im Rekursionsbaum aller Topologien, dann werden durch Einfügen jedes Taxons ebenfalls die Kosten nur erhöht. Hat man mit den ersten n0 Taxa in der aktuellen Teiltopologie schon Kosten y 0 erreicht und schätzt die minimalen noch hinzukommenden Kosten wieder geschickt mit y 00 ab und kennt schon eine vollständige Topologie mit Gesamtkosten x < y := y 0 + y 00 , dann kann man das weitere Einfügen von Taxa abbrechen und den Suchraum hier abschneiden. Man spricht von “Branch-and-Bound”. Die Effektivität des Verfahrens hängt entscheidend davon ab, dass man schnell eine gute Topologie mit geringen Kosten x findet (durch eine Heuristik beispielsweise) und die Einfügereihenfolge der Taxa geschickt wählt. Mit diesem Verfahren ist das Große ParsimonyProblem in der Praxis für bis zu 25 Taxa (und nicht zu viele Merkmale) lösbar. Man spricht hierbei von einer Laufzeit-Heuristik, da die Laufzeit bedeutend reduziert werden kann (aber nicht muss); in jedem Fall erhält man aber garantiert das optimale Ergebnis (wenn auch möglicherweise nach sehr langer Zeit). Heuristiken. Um zu beginn eine Topologie mit (vielleicht nicht optimalen, aber hoffentlich) geringen Kosten zu finden, kann man irgendein (sinnvolles und schnelles) Verfahren einsetzen. 29 3 Phylogenetik: Merkmalsbasierte Methoden 3.3.5 Inkonsistenz von Maximum Parsimony Auch bei vielen Merkmalen, die alle auf die gleiche (korrekte) Topologie hindeuten, kann es vorkommen, dass Maximum Parsimony den “falschen” Baum berechnet. Long Branch Attraction. (Übungsaufgabe) TODO: ausarbeiten 3.4 Minimum-Flip-Probleme Wie bereits erwähnt, besteht eine andere Sichtweise auf (binäre) Merkmalsdaten, die keine perfekte Phylogenie bilden, darin, zu fragen, welches die “nächstgelegene” Datenmatrix ist, die eine perfekte Phylogenie zulässt. Die Flip-Distanz zwischen zwei Matrizen ist dann einfach die Anzahl der elementweisen Unterschiede. Zusätzlich kann man hierbei zulassen, dass in den Ausgangsdaten einige der Merkmalsausprägungen unbekannt sind; dies kennzeichnen wir mit einem Fragezeichen. Das Ändern eines Fragezeichens in 0 oder 1 kostet nichts (trägt nicht zur Distanz bei). Die Flip-Distanz ist dadurch weder eine Metrik noch eine Pseudo-Metrik. 3.15 Definition (Flip-Distanz). Die Flip-Distanz d(W, W 0 ) zwischen zwei Matrizen W, W 0 ∈ {0, 1, ?}n×m ist die Anzahl der Elemente die in der einen Matrix 0 und in der anderen 1 sind. 3.16 Definition (PP-Matrix). Eine PP-Matrix ist eine Matrix X ∈ { 0, 1 }n×m , zu der eine perfekte Phylogenie mit Zustand 0m in der Wurzel existiert. Insbesondere darf eine PP-Matrix keine Fragezeichen enthalten. Wir erhalten nun zwei Problemvarianten, je nachdem, ob in der Ausgangsmatrix Fragezeichen zugelassen sind oder nicht. Beide Varianten lassen sich aber im Folgenden exakt gleich behandeln. Die Probleme heißen Minimum Flip Consensus Tree (MFCT, keine Fragezeichen zugelassen) und Minimum Flip Supertree (MFST, Fragezeichen zugelassen). Die Namen kommen daher, dass eine Hauptanwendung dieser Fragestellung darin liegt, zu bereits vorhandenen Bäumen, die sich teilweise widersprechen können, einen Konsensus-Baum bzw. Oberbaum (hier sind einige Taxa in einigen Bäumen nicht enthalten) zu berechnen. Die Merkmale spiegeln dabei die Existenz aller Unterbäume (Splits) wider. 3.17 Problem (MFCT). Gegeben W ∈ {0, 1}n×m , finde eine PP-Matrix X, die d(W, X) minimiert. • 3.18 Problem (MFST). Gegeben W ∈ {0, 1, ?}n×m , finde eine PP-Matrix X, die d(W, X) minimiert. • Beide Probleme sind NP-schwer ?. Daher versuchen wir hier eine Lösung mit Hilfe von ganzzahligen linearen Programmen, die in der Praxis noch bis zu ca. 100 Taxa und mehreren hundert Merkmalen funktioniert. Zur Abkürzung seien T := {1, . . . , m} und C := {1, . . . , n} die Indexmengen der Taxa (Zeilen) und Merkmale (Spalten) der Eingabematrix W ∈ {0, 1, ?}m×n . 30 3.4 Minimum-Flip-Probleme Die natürlichen Variablen des Problems sind durch ein n × m-Matrix X = (xtc )t∈T ,c∈C ∈ {0, 1}n×m (3.2) gegeben, die eine Lösung darstellt mit xtc = 1 genau dann wenn in Taxon t das Merkmal c existiert. Um die Zielfunktion d(W, X) als lineare Funktion der xtc darzustellen, definieren wir Hilfskonstanten 1 if Wt,c = 0, 0 if Wt,c = ?, ωtc := für t ∈ T , c ∈ C. (3.3) −1 if Wt,c = 1, Damit ist, wie man schnell nachrechnet, X d(W, X) = Ones(W ) + wtc · xtc , (3.4) t∈T,c∈C wobei Ones(W ) die Anzahl der Einsen in W ist. Jetzt müssen wir noch die Menge der zulässigen X, also der PP-Matrizen, mit Hilfe linearer Ungleichungen beschreiben. Hierfür gibt es mehrere Möglichkeiten: Wir können beispielsweise die PP-Bedingungen aus Satz 3.7 zunächst so umschreiben: Für alle Paare con Spalten x·,c und x·,c0 mit c < c0 gilt: xcolc ≤ x·,c0 oder x·,c0 ≤ x·,c oder x·,c0 + x·,c ≤ 1; dabei ist 1 der Vektor aus lauter Einsen. Jetzt können wir weitere Variablen für jedes Paar von Spalten einführen, um sicherzu stellen, dass jeweils mindestens eine dieser Ungleichungen erfüllt ist (Übungsaufgabe). Hier wählen wir einen Weg, der ohne weitere Variablen auskommt. Sei G(X) := (V, E) der ungerichtete bipartite Graph zu X mit V = T ∪ C und E = { { t, c } : Xtc = 1 }. Betrachten wir den von beliebigen c1 < c2 und paarweise verschiedenen t1 , t2 , t3 induzierten Teilgraph (bzw. den entsprechenden Ausschnitt aus der X-Matrix), so nennen wir diesen ein “M”, wenn folgende Situation vorliegt: t1 t2 t3 c1 1 1 0 c2 0 1 1 Die Benennung ist klar, wenn man die c-Knoten oben und die t-Knoten unten hinschreibt. Aus Satz 3.7 wissen wir, dass X genau dann eine PP-Matrix ist, wenn diese Situation nicht auftritt, wenn also G(X) M-frei ist. Jetzt m̈ussen wir dies nur noch mit linearen Ungleichungen aufschreiben: Um das dargestellte “M” zu vermeiden, dürfen entweder nur drei der vier Katen (t1 , c1 ), (t2 , c1 ), (t2 , c2 ), (t3 , c2 ) vorhanden sein, oder mindestens eine der beiden anderen Kanten muss vorhanden sein. Dies führt auf die “M”-Ungleichungen xt1 ,c1 + xt2 ,c1 + xt2 ,c2 + xt3 ,c2 ≤ 3 + xt1 ,c2 + xt3 ,c1 (3.5) ∀ t1 , t2 , t3 ∈ T (paarweise verschieden), ∀ c1 , c2 ∈ C, c1 < c2 . 31 3 Phylogenetik: Merkmalsbasierte Methoden Insgesamt haben wir dank 3.7 folgende Aussage. 3.19 Satz. Die zulässige Lösungen des ILPs min (3.4), so dass (3.2), (3.5) sind genau die PP-Matrizen X, und die lineare Funktion (3.4) stellt die Kosten der Lösung X dar. Die Anzahl der Variablen ist in dieser Formulierung minimal (nur die nm natürlichen Varia 3 m2 ) blen treten auf). Die Anzahl der Ungleichungen ist jedoch mit n(n−1)(n−2) m = Θ(n 2 sehr hoch. Lösung des ILPs. Die Lösung eines solchen ganzzahligen linearen Programms (integer linear program, ILP) geschieht mit folgender Strategie: 1. Löse die zugehörige LP-Relaxierung (d.h. das Problem ohne die Ganzzahligkeitsbedingung; xtc ∈ { 0, 1 } wird aufgeweicht zu 0 ≤ xtc ≤ 1). 2. Ist die Lösung ganzzahlig, so wurde ein zulässiges X gefunden und kann mit der bisher bekannten besten zulässigen Lösung verglichen werden. 3. Ist die Lösung nicht ganzzahlig, gibt es mehrere Möglichkeiten: Man kann in zwei Unterprobleme verzweigen, indem man ein fraktionales xtc auswählt und dies einmal auf 1 und einmal auf 0 festsetzt (branch), oder man kann eine Hyperebene (cut) finden, die die gefundene fraktionale Lösung von der zulässigen Menge trennt, oder dies kombinieren (branch-and-cut). Bei dem hier vorliegenden binären Problem ist es am einfachsten, in beide Fälle zu verzweigen und zu beachten, dass der optimale Zielfunktionswert gazzahlig ist. Da jedoch die Anzahl der Ungleichungen zu groß ist, um die Koeffizientenmatrix des LP nur aufzustellen, muss man mit weiteren Tricks arbeiten: Man lässt zunächst alle “M”Ungleichungen weg und löst das LP ohne diese. Natürlich erhält man so oft eine Lösung, die fraktional ist und viele der Ungleichungen nicht erfüllt; es kann aber passieren, dass alle Ungleichungen glücklicherweise schon erfüllt sind. Man muss also testen, ob es mindestens eine unerfüllte “M”-Ungleichung gibt. Wenn das der Fall ist, fügt man diese (oder eine kleine Menge von solchen) dem LP hinzu und löst erneut. Die Hoffnung ist, dass man, nachdem man einige wenige entscheidende Ungleichungen hinzugefügt hat, die meisten anderen von selbst erfüllt sind, wenn die Zielfunktion optimiert wird. Beim Minimum Flip Problem ist es sinnvoll, für alle paare von Spalten die c1 < c2 die drei Zeilen zu finden, die die “M”Ungleichung am stärksten verletzen, also xt1 ,c1 + xt2 ,c1 + xt2 ,c2 + xt3 ,c2 − xt1 ,c2 − xt3 ,c1 =(xt1 ,c1 − xt1 ,c2 ) + (xt2 ,c1 + xt2 ,c2 ) + (xt3 ,c2 − xt3 ,c1 ) → max . Dies wird offensichtlich dadurch erreicht, dass man t1 := argmaxt (xt,c1 − xt,c2 ) t2 := argmaxt (xt,c1 + xt,c2 ) t3 := argmaxt (xt,c2 − xt,c1 ) 32 3.4 Minimum-Flip-Probleme findet, was problemlos in O(n) Zeit möglich ist. Man führt dies für alle Spaltenpaare in O(nm2 ) Zeit insgesamt durch und fügt alle verletzten Ungleichungen zum LP hinzu. Ein weiteres Problem ist die große Zahl an Variablen. Hier kann man einen weiteren Trick anwenden: Man codiert die Lösung nicht durch die natürlichen Variablen xtc , sondern anhand der Differenz zu den Daten. Dabei versucht man zunächst die korrekten Werte für die ?Einträge vorab geschickt zu erraten, so dass keine ?-Einträge mehr vorhanden sind. Die falsch geratenen Einträge können immer noch kostenfrei geändert werden. Ist Wtc = 0, verwenden wir wie gehabt xtc , benötigen die Variable aber nicht, solange sie den Wert Null annimmt. Ist Wtc = 1, verwenden wir nicht xtc , sondern die komplementäre Variable ytc := 1 − xtc und ersetzen in den Ungleichungen und in der Zielfunktion xtc durch 1 − ytc für diejenigen (t, c) mit Wtc = 1. Weichen W und die optimale Lösung X an nur wenigen Stellen voneinander ab, sind fast alle Variablen Null. Variablen, die Null sind und nie betrachtet werden, müssen nicht in die Problemformulierung aufgenommen werden. Wir fügen eine Variable nur dann zum Problem hinzu, wenn dies z.B. durch Hinzufügen einer verletzen Ungleichung notwendig wird. Die Art der Variablen (ob xtc oder ytc = 1 − xtc ) verwendet wird, kann im Prinzip in jedem Knoten neu entschieden werden; insbesondere für die ?-Einträge. Für die eingentliche Lösung des LPs verwendet man einen Standard-LP-Solver, am besten mit einem Front-End, dass die Formulierung und Lösung des Separierungsproblems und der Column Generation auf einfache Art und Weise ermöglicht. Hierzu gibt es zahlreiche kommerzielle und Open-Source-Tools. 33 3 Phylogenetik: Merkmalsbasierte Methoden 34 KAPITEL 4 Phylogenetik: Distanzbasierte Methoden 4.1 Metriken Bisher haben wir merkmalsbasierte Methoden in der Phylogenetik betrachtet, bei denen eine n × m-Merkmalsausprägungsmatrix gegeben ist. In diesem Abschnitt gehen wir davon aus, dass eine Distanzmatrix D = (Dij ) gegeben ist, wobei Dij den evolutionären Abstand zwischen Taxa i und j darstellt. In diesem Fall kann man die Kantenlänge in einem Baum proportional zur Distanz zwischen zwei Knoten darstellen. Woher man solche Distanzen bekommt, lassen wir im Moment beiseite, und gehen davon aus, dass eine passende Matrix D gegeben ist. Generell geht es nun darum, eine (ungewurzelte) Baumtopologie T = (V, E) und Kantenlängen ` : E → R≥0 zu finden, so dass die Summe der Kantenlängen auf dem Pfad zwischen zwei Blättern i, j “möglichst gut” die gegebene Distanz Dij abbildet. Es gibt auch die Variante, einen gewurzelten Baum zu berechnen, in dem zusätzlich jeder Pfad von der Wurzel bis zu den Blättern gleich lang ist. Ein solcher Baum heißt ultrametrisch. Eine exakte Lösung wird im Normalfall für beide Varianten nicht möglich sein, da ja (bei Symmetrie der Distanzen) n(n − 1)/2 = Θ(n2 ) Werte gegeben sind, ein ungewurzelter Binärbaum mit n Blättern aber nur 2n − 3 = Θ(n) Katen hat, deren Längen man bestimmen kann. Wir geben nun den speziellen Distanzmatrizen, die eine exakte Lösung des Problems ermöglichen, spezielle Namen und widerholen zunächst den Begriff der Metrix. (Wir setzen immer voraus, dass D eine Metrik ist.) 4.1 Definition (Metrik, additive Metrik, Ultrametrik). Sei D ≥ 0 eine n×n-Distanzmatrix. Dann heißt D eine Metrik genau dann wenn 1. Dij = 0 genau dann wenn i = j (Definitheit), 35 4 Phylogenetik: Distanzbasierte Methoden 2. Dij = Dji für alle i, j (Symmetrie), 3. Dij ≤ Dik + Dkj für alle i, j, k (Dreiecksungleichung). Eine Metrik D heißt additive Metrik genau dann wenn es einen ungewurzelten Baum mit Kantenlängen gibt, in dem die Pfadlängen zwischen den Blättern mit den gegebenen Distanzen übereinstimmen. Eine Metrik D heißt Ultrametrik genau dann wenn es einen gewurzelten Baum mit Kantenlängen gibt, in dem die Pfadlängen zwischen den Blättern mit den gegebenen Distanzen übereinstimmen und alle Pfade von der Wurzel zu den Blättern gleich lang sind. Natürlich ist die Definition über die Existenz eines Baumes nicht hilfreich, aber glücklicherweise gibt es eine davon unabhängige Charakterisierung. 4.2 Lemma (additive Metrik, Ultrametrik). Eine Metrik ist genau dann additiv, wenn zu je vier Objekten U, V, X, Y von den drei Distanzsummen S1 := D(U, V ) + D(X, Y ), S2 := D(U, X) + D(V, Y ) und S3 := D(U, Y ) + D(V, X) die beiden größten gleich sind (sogenannte Vier-Punkte-Bedingung). Eine Metrik ist genau dann eine Ultrametrik, wenn zu je drei Objekten U, V, X von den drei Distanzen D(U, V ), D(U, X) und (V, U ) die beiden größten gleich sind ( Drei-PunkteBedingung). Beweis. Durch eine Skizze und Ausrechnen der drei Distanzsummen in Quartetten bzw. Betrachten der drei Distanzen in einem gewurzelten Tripel wird klar, dass in einem ungewurzelten bzw. gewurzelten ultrametrischen Baum die Pfadlängen die jeweilige genannte Bedingung erfüllen. Der Beweis der Umkehrung erfolgt konstruktiv durch Angabe von zwei Algorithmen in den folgenden Abschnitten. Der erste konstruiert zu jeder Distanzmatrix einen ultrametrischen Baum (und damit auch ein hierarchisches Clustering der Objekte). Wir werden zeigen, dass für eine Metrik D, die die Drei-Punkte-Bedingung erfüllt, die Pfadlängen des Baums den gegebenen Abständen entsprechen. Der zweite Algorithmus (NJ) konstruiert zu jeder Distanzmatrix einen ungewurzelten Baum mit Kantenlängen. Auch hier werden wir sehen, dass im Fall einer Metrik D, die die 4-Punkte-Bedingung erfüllt, die Pfadlängen im Baum den gegebenen Abständen entsprechen. 4.2 Agglomeratives Clustern Die Idee beim agglomerativen Clustern ist, in einer Distanzmatrix D = (Dij ) 1. das Paar i 6= j mit dem minimalen Abstand zu finden 2. i und j zu einem neuen Objekt (Unterbaum) { i, j } zu verschmelzen und die Zeilen und Spalten i und j aus D zu streichen, 3. in D eine neue Zeile und Spalte { i, j } einzufügen, die die Abstände D(i, k) und D(j, k) für alle verbleibenden k 6= i, j zu einem “Mittelwert” D({ i, j } , k) kombiniert, 4. die Schritte 1.–3. solange zu wiederholen, bis nur noch ein einzelnes Objekt übrig ist, wobei sich in jeder Iteration die Anzahl der verbleibenden Objekte um eins verringert. 36 4.2 Agglomeratives Clustern Zwei Details sind zu klären: • Auf welcher Höhe liegt die Wurzel des Unterbaums { i, j }? Da wir einen Ultrametrischen Baum konstruieren wollen, bleibt nur die Möglichkeit D(i, j)/2. Da wir (per Induktion) wissen, dass die Wurzeln der Unterbäume (bzw. die Blätter) i und j tiefer (oder zumindest nicht höher) liegen, ergibt sich eine nichtnegative Kantenlänge von den Wurzeln von i und j zur Wurzel von { i, j }. • Wie berechnet sich in Schritt 3. der “Mittelwert” für das neue Objekt z := { i, j }? In der Tat gibt es verschiedene Varianten des Agglomerativen Clusterns, die sich exakt hierin unterscheiden, u.a. 1. Single-linkage Clustering: D(z, k) := min { D(i, k), D(j, k) }. 2. Complete-linkage Clustering: D(z, k) := max { D(i, k), D(j, k) }. 3. Weighted Pair Group Method using Averages (WPGMA): D(z, k) := [D(i, k) + D(j, k)]/2. 4. Unweighted Pair Group Method using Averages (UPGMA): D(z, k) := [Si D(i, k)+ Sj D(j, k)]/(Si + Sj ), wobei Si und Sj die jeweils Anzahl der Objkete im Cluster i und j sind (1 für ein Blatt). In jedem Fall liegt D(z, k) zwischen D(i, k) und D(j, k). 4.3 Satz (Agglomeratives Clustern bei Ultrametriken). Erfüllt D die Drei-Punkte-Bedingung, dann sind die vorgestellten Varianten äquivalent, der nach einem Iterationsschritt erzeugte Baum z ist ein ultrametrischer Baum, in dem die Pfadlängen zwischen den Blättern mit den gegebenen Distanzen übereinstimmen. und die reduzierte Datenmetrix D ist erfüllt wieder die Drei-Punkte-Bedingung. Beweis. Die vier genannten (und weitere sinnvolle) Varianten sind äquivalent, weil (i, j) ein Paar mit minimaler Distanz ist, so dass D(i, k), D(j, k) ≥ D(i, j) gilt. Aufgrund der Drei-Punkt-Bedingung gilt dann D(i, k) = D(j, k) = D(z, k) für jede der genannten Kombinationsvarianten. (Auf diese Art und Weise kann man während des Ablaufs des Algorithmus prüfen, ob die Drei-Punkte-Bedingung erfüllt ist!) Nach Induktion sind i und j selbst bereits ultrametrische Bäume (oder Blätter), die nun zu einem neuen Baum mit Wurzel in Höhe D(i, j)/2 kombiniert werden. Wir haben bereits gesehen, dass die Kanten zu den Wurzeln von i und j nichtnegative Länge haben. Damit haben wir einen ultrametrischen Baum z = { i, j }, in dem die Pfade von der Wurzel zu jedem Blatt die Länge D(i, j)/2 haben. Von den Unterbäumen i und j wussten wir schon, dass sie ultrametrisch sind und die Pfadlängen die Distanzen korrekt abbilden. Jetzt müssen wir nur noch die Pfade zwischen je einem Blatt i0 in i und einem Blatt j 0 in j betrachten: Diese haben nun alle die Länge D(i, j), und aufgrund der Drei-Punkt-Eigenschaft ist klar, dass in der ursprünglichen Matrix D alle die gleiche Länge gehabt haben müssen. Nach der Reduktion entspricht D(z, k) den Werten D(i, k) = D(j, k). Die Matrix hat sich also nicht verändert; es wurde nur die i-te (oder j-te) Zeile und Spalte gestrichen. Galt die Drei-Punkt-Bedingung vorher, gilt sie immer noch. 37 4 Phylogenetik: Distanzbasierte Methoden Laufzeit. Die Laufzeit des Verfahrens beträgt zunächst O(n3 ), da es n − 1 Iterationen gibt, in denen das Minimum der Matrix gefunden werden muss. Mit Hilfe von Quadtrees (Epstein, Fast hierachical clustering and other applications of dynamic closest pairs, Journal of Experimental Algorithms 5:1–23, 2000) lässt sich die Laufzeit auf O(n2 ) reduzieren. Quadtrees erlauben das Einfügen und Löschen eines Objekts in O(n) Zeit und ebenso das Auffinden eines Paars mit minimalem Abstand. Andere Ideen zur Verbesserung der Laufzeit, für die man keine Quadtrees benötigt, lauten wie folgt: Man ermittelt zunächst anfangs zu jedem Objekt i den nächsten Nachbarn Ni := argminj6=i { Dij } . (Im Allgemeinen folgt aus Ni = j nicht notwendigerweise Nj = i!) Dafür benötigt man einmalig O(n2 ) Zeit. Um ein Paar mit minmalem Abstand zu finden, muss man nun nur noch die Paare (i, Ni ) für i = 1, . . . , n betrachten. Die Kunst ist, nach einer Verschmelzung die (nötigen) Ni schnell neu zu berechnen. Im Fall des Single-linkage Clusterings ist das aber einfach effizient möglich: Werden i und j zu z = { i, j } verschmolzen und ist für ein k bisher Nk = i oder Nk = j, dann gilt danach Nk = z, und die anderen Nk ändern sich nicht. Damit werden alle Nk für k 6= z jeweils in konstanter Zeit, also insgesamt in O(n) Zeit aktualisiert. Der neue Wert Nz kann trivial in O(n) Zeit gefunden werden. Insgesamt benötigt man so nur O(n) Zeit pro Iteration und insgesamt also O(n2 ). Da bei ultrametrischen Daten alle vier genannten Varianten das gleiche Ergebnis liefern, nämlich den korrekten ultrametrischen Baum, lässt sich also in O(n2 ) selbiger aus ultrametrischen Daten finden. Insbesondere lässt sich (vgl. die Bemerkung im Beweis von Satz 4.3) in O(n2 ) Zeit prüfen, ob eine Metrik eine Ultrametrik ist. Einfache Methoden, um auch UPGMA und WPGMA in O(n2 ) ohne komplexe Datenstrukturen auf beliebigen Eingaben durchzuführen, werden von Gronau und Moran (Optimal Implementations of UPGMA and Other Common Clustering Algorithms, Information Processing Letters 104(6):205–210, 2007) beschrieben, zusammen mit einer Charakterisierung, bei welchen Kombinationsregeln eine geschickte Nachbar-basierte Suche genau äquivalent zur Minimum-Suche über alle O(n2 ) Matrixelemente ist. Ein weiteres Beispiel für eine ähnliche Beschleunigung lernen wir im nächsten Abschnitt kennen. Zusammenfassung. Die hier genannten Methoden berechnen in jedem Fall einen ultrametrischen Baum. Die Längen der Pfade zwischen den Blättern stimmen genau dann mit den vorgegebenen Distanzen überein, wenn die Distanzmatrix eine Ultrametrik war. Ansonsten bekommt man einen Baum, der von der Art der Kombinationsregel abhängt und eventuell vom verwendeten Algorithmus, der das nächste zusammenzufassende Blattpaar auswählt. Ein so berechnete Baum erfüllt insbesondere kein offensichtliches Optimalitätskriterium (etwa, dass die Summe der Abweichungen zu den vorgegebenen Distanzen minimiert wird), und er kann einfach falsch sein, und zwar schon dann, wenn die Eingabe eine additive Metrik ist. Dies überlegt man sich am Minimalbeispiel des Quartetts (A:1, B:3 k C:1, D:3) als Übungsaufgabe. 38 4.3 Neighbor Joining auf additiven Distanzen 4.3 Neighbor Joining auf additiven Distanzen 4.3.1 Motivation Ein einfaches Beispiel zeigt, dass UPGMA bei einer nicht ultrametrischen aber additiven Metrik nicht immer den korrekten Baum konstruiert: Betrachte das Quartett (ab : cd), bei dem die Blattkanten zu a und c die Länge 1, die Blattkanten zu b und d die Länge 3 haben und die innere Kante die Länge 1 hat. Im ersten UPGMA-Clustering-Schritt würde fälschlich das Paar {a, c} zusammengefasst, da es die geringste Distanz (3) hat. Im Folgenden stellen wir zunächst den Neighbor Joining Algorithmus vor, der auf additiven Metriken einen ungewurzelten Baum konstruiert, in dem die Distanzen zwischen allen BlattPaaren den gegebenen Distanzen entsprechen. Wir besprechen dann zwei Verbesserungen (man lasse sich dabei von der unterschiedlichen Bedeutung des Wortes “fast” im Deutschen und im Englischen nicht verwirren!): 1. NJ rekonstruiert auch dann den korrekten Baum, wenn die Eingabe-Distanzen nur fast additiv sind. Der Beweis dieser Tatsache ist nur wenig aufwändiger als der Beweis für additive Distanzen selbst. 2. In seiner Rohform benötigt NJ auf n Taxa O(n3 ) Zeit. Dies lässt sich jedoch auf O(n2 ) verbessern; den resultierenden Algorithmus nennt man Fast Neighbor Joining (FNJ). Die resultierenden Bäume sind bei additiven und fast additiven Eingabe-Metriken die gleichen; auf anderen Eingaben können die Ergebnisse abweichen. 4.3.2 Definitionen Wir definieren zunächst den Nachbarschaftsbegriff und Nachbarquartette. 4.4 Definition (Nachbarn, Nachbarpaar). Zwei Blätter a, b heißen Nachbarn oder Nachbarpaar in einem Baum T , wenn der Pfad zwischen ihnen aus genau zwei Kanten besteht. Ein einem Binärbaum hat ein Blatt höchstens einen Nachbarn, aber nicht jedes Blatt muss einen Nachbarn haben. 4.5 Definition (Nachbarquartett). Sei T ein Baum und {i, j}, {k, l} zwei verschiedene Nachbarpaare in T . Dann sagen wir, T enthält das Nachbarquartett (ij : kl). 4.6 Lemma (Abstand zwischen Elternknoten von Nachbarpaaren). Sei D die von T induzierte additive Metrik. Seien {i, j}, {k, l} zwei verschiedene Nachbarpaare in T mit Eltern ij und kl. Dann kann man den Abstand zwischen ij und kl berechnen als wD (ij : kl) := (D(i, k) + D(i, l) + D(j, k) + D(j, l) − 2D(i, j) − 2D(k, l))/4. Beweis. Durch Zeichnen des Nachbarquartetts (ij : kl) und Abzählen, wie oft jede Kante benutzt wird. 39 4 Phylogenetik: Distanzbasierte Methoden Algorithm 1 NJ(D): berechnet aus der Metrik D auf der Objektmenge N (D) mit |N (D)| ≥ 3 einen ungewurzelten Baum D1 ← D for i ← 1, . . . , |N (D)| − 3 do {ai , bi } ← argminx6=y SDi (x, y) Reduziere das Paar {ai , bi } auf einen neuen Knoten ci ; berechne Kantenlängen von {ai , ci } und {bi , ci } (Details später). Berechne D0 :≡ Di+1 auf N (D0 ) := N (D) \ {ai , bi } ∪ {ci }: für x, y 6= ci ist D0 (x, y) = Di (x, y) unverändert; sonst berechne D0 (x, ci ) aus Di (x, ai ) und Di (x, bi ) (Details später). Verbinde die 3 verbleibenden Objekte zu einem Sternbaum mit passenden Kantenlängen. return Zentrum des Sternbaums. 4.3.3 Übersicht und Algorithmus Die Idee ist grundsätzlich die gleiche wie bei den hierarchischen Clustering-Algorithmen UPGMA, etc.: Zu einer gegebenen Metrik D wählen wir ein geeignetes Paar an Objekten (Taxa) aus, fassen diese zu einem neuen Objekt zusammen, entfernen die ursprünglichen Objekte aus der Menge der zu bearbeitenden Objekte und fügen das neue hinzu, nachdem wir die Distanzen zwischen dem neuen und allen verbleibenden Objekten berechnet haben. Dadurch wird in jedem Schritt die Menge der zu bearbeitenden Objekte um ein Objekt reduziert, bis nur noch drei Objekte übrig sind. Diese werden zu einem Sternbaum zusammengefasst. Der Unterschied zwischen UPGMA und NJ besteht in der Berechnung des Auswahlkriteriums für die zusammenzufassenden Objekte. Bei UPGMA wurde das Paar mit minimaler Distanz ausgewählt, was bei Ultrametriken aufgrund der 3-Punkt-Bedingung zu korrekten Ergebnissen führt, bei additiven Metriken jedoch nicht immer (siehe Beispiel oben). Die Struktur des Algorithmus ist in Algorithmus 1 beschrieben. Aus der Eingabe D mit Objektmenge N (D) mit |N (D)| = n ≥ 3 wird eine Folge D = D1 , D2 , . . . Dn−3 von reduzierten Metriken konstruiert. Wir lassen dabei momentan noch Details offen (etwa, wie die neuen Distanzen oder die Kantenlängen der zusammengesetzten Objekte genau gewählt werden). In der angegebenen Form ergibt sich mit |N (D)| = n eine Laufzeit von O(n3 ). Wir werden sehen, dass sich dies noch verbessern lässt. 4.3.4 Das Auswahlkriterium SD Gedanken zur Identifizierung eines benachbarten Paars. Wenn {a, b} in einem Baum T mit additiver Distanz D ein benachbartes Paar ist, dann existiert für alle c, d ∈ / {a, b} das Quartett (ab : cd) in T (es ist nicht unbedingt ein Nachbarquartett, da c und d nichtnotwendigerweise Nachbarn sind). Insbesondere ist dann wD (ab : cd) für alle c, d nichtnegativ. Sind aber a, b nicht benachbart, dann kann es Belegungen für c, d geben, für die wD (ab : cd) negativ wird. 40 4.3 Neighbor Joining auf additiven Distanzen Dies legt nahe, die Summe ZD (a, b) := X wD (ab : xy) x,y ∈{a,b} / zu maximieren, also {a, b} = argmaxu,v ZD (u, v) als Nachbarpaar auszuwählen. In der Tat ist dies das korrekte Kriterium; es lässt sich jedoch erheblich vereinfachen. Durch Ausrechnen kann man zeigen, dass ZD (a, b) = −G − (n − 1) · ((n − 2)D(a, b) − R(a) − R(b)), P P P wobei R(x) := y D(x, y) und G := x R(x) = x,y D(x, y) gesetzt wurde. Da G nicht von a, b abhängt, ist die Maximierung von ZD (a, b) äquivalent zur Minimierung von SD (a, b) := (n − 2) · D(a, b) − R(a) − R(b). (4.1) Im Auswahlschritt des NJ-Algorithmus wird also das Paar {a, b} gefunden, dass SD minimiert. Im Folgenden beweisen wir einige Eigenschaften des Auswahlkriteriums SD , die dessen Wahl rechtfertigen. Eigenschaften des Auswahlkriteriums. Wir erwähnen zunächst eine Verschiebungsinvarianz von SD , dessen Beweis durch Nachrechnen erfolgt. 4.7 Lemma (Verschiebungslemma; Mihaescu et al., 2006). Sei D̃ eine Verschiebung von D, d.h., es gebe ein Blatt c ∈ N (D) und eine Konstante σ, so dass D̃(x, c) = D(x, c) + σ für x 6= c, D̃(c, c) = D(c, c) = 0, D̃(x, y) = D(x, y) für alle x, y 6= c. Dann ist SD̃ (x, y) = SD (x, y) − 2σ für alle x, y. Wir kommen jetzt zu den wichtigen Eigenschaften von SD , die im folgenden Lemma und Satz zusammengefasst sind. 4.8 Lemma (Saitou & Nei, 1987). Sei T ein ungewurzelter Binärbaum mit gegebenen Kantenlängen, D die zugehörige additive Metrik, und SD wie in (4.1) definiert. Seien a, b Nachbarn in T . Dann ist SD (a, b) = miny6=a SD (a, y). Beweis. Sei y 6= a, b. Nach Definition ist SD (a, y) − SD (a, b) = (n − 2) · [D(a, y) − D(a, b)] + R(b) − R(y) X = [D(a, y) − D(a, b) + D(x, b) − D(x, y)] x6=a,b,y ≥ 0, denn nach der 4-Punkt-Bedingung ist stets D(a, b)+D(x, y) ≤ D(a, y)+D(x, b), also für jedes x 6= a, b, y der Summand nichtnegativ. Damit ist SD (a, b) ≤ SD (a, y) für alle y 6= a, b. 41 4 Phylogenetik: Distanzbasierte Methoden Das Lemma sagt aus, dass der Nachbar b von a (wenn es ihn gibt), die Funktion SD (a, ·) minimiert. Unklar ist noch, dass das Minimum über beide Argumente tatsächlich ein Nachbarpaar liefert, denn nicht jedes Blatt muss Nachbarn haben. Wichtiger ist daher die folgende Umkehrung des Lemmas. 4.9 Satz (Studier & Keppler, 1988). Sei T ein ungewurzelter Binärbaum mit gegebenen Kantenlängen, D die zugehörige additive Metrik, und SD wie in (4.1) definiert. Sei {a, b} := argminx6=y SD (x, y). Dann sind a und b Nachbarn in T . Zum Beweis sammeln wir weitere Eigenschaften von SD ; zuerst ein Darstellungslemma. 4.10 Lemma (Darstellungslemma). Sei T ein ungewurzelter Binärbaum mit Blättern L(T ), Kanten E(T ) und gegebenen Kantenlängen (`(e))e∈E(T ) . Sei D = DT die zugehörige additive Metrik mit Objektmenge N (D) = L(T ), und sei SD wie in (4.1) definiert. Dann lässt sich jedes SD (a, b) als Linearkombination der Kantenlängen schreiben: X we (a, b) · `(e) SD (a, b) = e∈E(T ) ( −2 mit we (a, b) = −2 · |L(T ) \ LT (a, e)| wenn e ∈ PT (a, b), sonst, wobei PT (a, b) den Pfad zwischen a und b in T bezeichnet, und LT (a, e) ⊂ L(T ) die Menge der Blätter, die nach Entfernen der Kante e in derselben Zusammenhangskomponente wie a liegen (inklusive a selbst). P Beweis. Da D(a, b) = e∈PT (a,b) `(e) eine Linearkombination der Kantenlängen ist und SD (a, b) linear in D, ist auch SD (a, b) eine Linearkombination der `(e). Wir berechnen die Gewichte. Sei e ∈ PT (a, b). Nach der Definition von SD gilt we (a, b) = (n−2)−|{x : e ∈ PT (a, x)}|−|{x : e ∈ PT (b, x)}|. Man gelangt von a nach x über e genau dann wenn man von b nach x die Kante e nicht benutzen muss. Daher gilt |{x : e ∈ PT (a, x)}| + |{x : e ∈ PT (b, x)}| = n und man erhält we (a, b) = −2. Nun sei e ∈ / PT (a, b). Nach der Definition von SD gilt we (a, b) = −|{x : e ∈ PT (a, x)}| − |{x : e ∈ PT (b, x)}|. Nach Entfernen von e liegen a und b in derselben Zusammenhangskomponente mit der Blattmenge LT (a, e) = LT (b, e). Daher muss man zum Erreichen von genau |L(T ) \ LT (a, e)| Blättern die Kante e überqueren. Beweis. [Satz 4.9] Wenn a überhaupt einen Nachbarn b hat, ist wegen Lemma 4.8 bereits SD (a, b) ≤ SD (a, x) für alle x 6= a, b. Der Satz ist also bewiesen, wenn wir zu jedem Paar {x, y}, wobei sowohl x als auch y keinen Nachbarn hat, ein Nachbarpaar {a, b} finden mit SD (a, b) < SD (x, y). Wir betrachten Abb. 4.1: Seien x0 , y 0 die zu x, y adjazenten inneren Knoten. Sei e die zu x0 inzidente Kante auf PT (x0 , y 0 ). Wenn wir den Pfad PT (x0 , y 0 ) entfernen, erhalten wir zwei Teilbäume von T , die wir mit T x und T y bezeichnen. ObdA sei T x der kleinere (mit weniger oder gleich vielen Blätter wie T y ); also |L(T x )| ≤ n/2. 42 4.3 Neighbor Joining auf additiven Distanzen Abbildung 4.1: Skizze zum Beweis von Satz 4.9 (noch zu überarbeiten!) Da weder x noch y einen Nachbarn hat, muss es sowohl in T x als auch T y Nachbarpaare geben. Sei {a, b} ein beliebiges Nachbarpaar in T x ; wir zeigen, dass dieses die Bedingung erfüllt. Sei f die vom gemeinsamen Vorfahren wegführende Kante; wir berechnen nun Kantengewichte und behaupten: Es ist wg (x, y) ≥ wg (a, b) für alle Kanten g. Damit ist nach dem Darstellungslemma dann insbesondere SD (x, y) ≥ SD (a, b). Wir unterscheiden zum Beweis die folgenden Fälle (Abbildung 4.1): • Für alle Blattkanten gilt stets ein Gewicht von −2, also Gleichheit. • Nichtblattkanten g in T x (z.B. f ) liegen weder auf PT (a, b) noch auf PT (x, y), also ist wg (x, y) = −2(n − |LT (x, g)|), wg (a, b) = −2(n − |LT (a, g)|). Da g innerhalb des kleineren Baums T x liegt, ist |LT (a, g)| ≤ |LT (x, g)|, un damit auch wg (a, b) ≤ wg (x, y). • Kanten g zwischen x0 und y 0 (z.B. e) liegen auf PT (x, y); daher gilt wg (x, y) = −2 ≥ wg (a, b). • Für Nichtblattkanten g in T y liegen alle vier Knoten a, b, x, y auf derselben Seite von g; daher gilt wg (x, y) = wg (a, b). Dasselbe gilt für Kanten, die weder in T x noch in T y noch auf dem Pfad zwischen x0 und y 0 liegen. Wir können die Abschätzung sogar präzisieren: Es ist insbesondere für die Kanten e und f : • we (x, y) = −2 und we (a, b) = −2|L(T ) \ L(T x )| ≤ −n; • wf (x, y) = −4 und wf (a, b) = −2(n − 2). Setzen wir µ(T ) := mine∈E(T ) `(e) als die minimale Kantenlänge in T , dann gilt SD (x, y) − SD (a, b) ≥ (−2 + n − 4 + 2(n − 2))µ(T ) = (3n − 10)µ(T ) ≥ 8µ(T ), da n ≥ 6, wenn weder x noch y Nachbarn haben. Die zeigt, dass es zu jedem Blattpaar {x, y}, bei dem sowohl x als auch y keinen Nachbarn hat, stets ein Nachbarpaar {a, b} im kleineren Teilbaum T x gibt, dessen SD -Wert um mindestens (3n − 10)µ(T ) geringer ist als der von {x, y}. Zusammen mit dem Verschiebungslemma ergibt sich aus dem eben bewiesenen Satz folgende Eigenschaft von SD : Das Auswahlkriterium ist invariant gegenüber dem Verlängern und Verkürzen einer Blattkante. Ist beispielsweise {a, b} das minimale Paar bezüglich D und 43 4 Phylogenetik: Distanzbasierte Methoden erhält man D̃ durch eine Veschiedung von a um σ (was einer Verlängerung der Blattkante zu a um σ entspricht), dann ist auch {a, b} das minimale Paar bezüglich D̃; denn SD̃ und SD unterscheiden sich wegen dem Verschiebungslemma um die Konstante 2σ. In beiden Fällen ist { a, b } ein Nachbarpaar. 4.3.5 Berechnung der Kantenlängen und der neuen Distanzen Wir haben gesehen, dass bei Eingabe einer additiven Matrix im ersten NJ-Schritt tatsächlich ein Nachbarpaar ausgewählt wird. Um weitere Aussagen über NJ zu treffen, müssen wir noch spezifizieren, wie genau die nächste Metrik D0 ≡ Di+1 aus D ≡ Di berechnet wird (vgl. Algorithmus 1). Wir fassen das in Schritt i neu gebildete Blatt ci als Wurzel oder Vorfahren von {ai , bi } auf und berechnen mit Hilfe einer Skizze D0 (ci , x) := [D(ai , x) + D(bi , x) − D(ai , bi )]/2. (4.2) Die Kantenlängen `(ai , ci ) und `(bi , ci ) ergeben sich dann als `(ai , ci ) = D(ai , x) − D0 (ci , x) = [D(ai , x) − D(bi , x) + D(ai , bi )]/2 (x 6= ai , bi , ci beliebig). Bei additiven Distanzen D ergibt sich für jede Wahl von x der gleiche Wert. (Hieran kann man Additivität testen!) Allgemein (bei nur fast oder nicht additiven Distanzen) ist es sinnvoll, den Mittelwert über alle x 6= ai , bi zu bilden; es ergibt sich `(ai , ci ) := [R(ai ) − R(bi )]/2(n − 2) + D(ai , bi )/2, (4.3) `(bi , ci ) := [R(bi ) − R(ai )]/2(n − 2) + D(ai , bi )/2. (4.4) 4.11 Lemma. Sei D additiv; dazu gehöre Baum T . Sei { a, b } das Nachbarpaar in T , das von NJ zusammengefasst wird und c der Vorfahre. Die gemäß (4.2) berechneten Distanzen D0 (c, x) die Summen der Pfadlängen zwischen dem inneren Knoten c und dem Blatt x in T . Dann sind `(a, c) und `(b, c) gemäß (4.3) und (4.4) die Kantenlängen von (a, c) bzw. (b, c) in T . Es ist also D(a, b) = `(a, c) + `(b, c) D(a, x) = `(a, c) + D0 (c, x) für alle x 6= a, b D(b, x) = `(b, c) + D0 (c, x) für alle x 6= a, b. Beweis. Dass NJ überhaupt ein Nachbarpaar zusammenfasst, folgt aus Satz 4.9. Dass D0 (c, x) wie berechnet mit der Summe der Pfadlänge zwischen c und x übereinstimmt, wurde oben bereits gezeigt. Dass die berechneten `(a, c) und `(b, c) den Kantenlängen in T entsprechen, wurde ebenfalls bereits nachgerechnet: für alle x gilt `(a, c) = D(a, x)−D0 (c, x). Daraus folgen dann auch die verbleibenden Formeln. Als einfache Folgerung erhalten wir die Tatsache, dass D0 = Di+1 wieder eine additive Distanzmatrix ist, und zwar zum gleichen Baum wie Di , wobei nur die Blätter ai und bi durch ihren Vorfahren ersetzt wurden. 44 4.4 Neighbor Joining auf fast additiven Distanzen 4.12 Lemma. Sei D eine additive Metrik und D0 die nach einem NJ-Schritt reduzierte Distanzmatrix. Dann ist D0 additiv. Beweis. Sei T der Baum zu D, und sei {ai , bi } das im NJ-Schritt ausgewählte Blattpaar. Sei ci in T der Vorfahre von ai , bi und sei c0i der verbleibenden zu ci adjazente Knoten. Wir betrachten den Baum S = T \ {ai , bi }, in dem ci nun ein Blatt ist, bei dem sich die Längen der verbleibenden Kanten gegenüber T nicht ändern. Wir behaupten D0 enthält die paarweisen Blattabstände in S und ist damit additiv. Dies haben wir aber mit Lemma 4.11 schon gezeigt. 4.3.6 Korrektheit des NJ-Algorithmus Der folgende Satz fasst zusammen, dass NJ auf additiven Distanzen den korrekten Baum berechnet. 4.13 Satz. Sei T ein ungewurzelter Binärbaum mit gegebenen Kantenlängen `T (e) und D die zugehörige additive Metrik. Dann rekonstruiert NJ(D) den Baum T mit den korrekten Kantenlängen. Beweis. Satz 4.9 liefert, dass NJ ein Nachbarpaar auswählt. Die Wahl der Kantenlängen `(ai , ci ) und `(bi , ci ) in Abschnitt 4.3.5 stellt sicher, dass die Kantenlängen bei einer additiven Metrik korrekt gewählt werden. Lemma 4.12 liefert, dass die reduzierte Metrik wieder additiv ist. 4.4 Neighbor Joining auf fast additiven Distanzen Der “Spielraum” von (3n − 10)µ(T ) im Beweis von Satz 4.9 liefert einen Hinweis, dass NJ noch besser ist als bisher gezeigt, und auch auf nicht perfekt additiven Distanzen das korrekte Ergebnis liefert. 4.14 Definition. Eine Metrik D heißt fast additiv, wenn es einen Baum T mit induzierter additiver Metrik DT gibt, so dass kD − DT k∞ := max |D(x, y) − DT (x, y)| < µ(T )/2, x,y wobei wieder µ(T ) := mine∈E(T ) `(e). Man sagt dann auch (aufgrund der Eindeutigkeit von T ; siehe folgendes Lemma), D ist fast additiv in Bezug zu T , oder D ist eine zu T gehörende fast additive Metrik. 4.15 Lemma (Eindeutigkeit des Bezugsbaums). Sei D fast additiv in Bezug zu S und zu T . Dann stimmen die Topologien von S und T überein. Beweis. Seien DT und DS die zu T und S gehördenden additiven Metriken. Sei (ij : kl) ein Quartett in T . Wir zeigen, dass (ij : kl) auch ein Quartett in S ist. Dies gilt für alle Quartette, und auch mit vertauschten Rollen von S und T . Damit stimmen die Mengen der Quartette von S und T überein, und damit auch die Baumtopologien. 45 4 Phylogenetik: Distanzbasierte Methoden Unter der Voraussetzung, dass (ij : kl) ein Quartett in T ist, zeigen wir DS (i, j) + DS (k, l) < DS (i, k) + DS (j, l) + 2µ(S): DS (i, j) + DS (k, l) < D(i, j) + D(k, l) + µ(S) (D fast additiv zu S) < DT (i, j) + DT (k, l) + µ(S) + µ(T ) (D fast additiv zu T ) ≤ DT (i, k) + DT (j, l) + µ(S) − µ(T ) (4-Punkte-Bedingung in T ) < D(i, k) + D(j, l) + µ(S) (D fast additiv zu T ) < DS (i, k) + DS (j, l) + 2µ(S) (D fast additiv zu S) Angenommen, es sei (ik : jl) ein Quartett in S; dann würde folgen, dass DS (i, k) + DS (j, l) ≤ DS (i, j) + DS (k, l) − 2µ(S) < DS (i, k) + DT (j, l) (4-Punkte-Bedingung in S) (obige Rechnung); ein Widerspruch. Daher ist (ik : jl) kein Quartett in S. Eine analoge Rechnung zeigt, dass auch (il : jk) kein Quartett in S ist. Daher muss (ij : kl) ein Quartett in S sein, was zu zeigen war. Die zu beweisende Verallgemeinerung von Satz 4.9 lautet nun 4.16 Satz (Atteson, 1999; Elias & Lagergren, 2008). Sei T ein ungewurzelter Binärbaum mit gegebenen Kantenlängen, D eine zu T gehörende fast additive Metrik, und SD wie in (4.1) definiert. Sei {a, b} := argminx6=y SD (x, y). Dann sind a und b Nachbarn in T . Zum Beweis müssen wir einige technische Vorbereitungen treffen. Das nächste Lemma zeigt, dass sich SD und SDT nicht beliebig unterscheiden können, wenn man die Differenz auf drei oder vier Punkten betachtet. 4.17 Lemma (Technisches Lemma). Sei T ein ungewurzelter Binärbaum mit gegebenen Kantenlängen, DT die von T induzierte additive Metrik, und D eine zu T gehörende fast additive Metrik. Sei µ(T ) := mine `(e), und seien a, b, x, y Objekte aus N (D). Dann gilt: SD (a, b) − SDT (a, b) + SDT (x, y) − SD (x, y) ( −3(n − 4) · µ(T ), wenn a, b, x, y paarweise verschieden, > −2(n − 3) · µ(T ), wenn |{a, b} ∩ {x, y}| = 1. Beweis. Der Fall, dass a, b, x, y verschieden sind, ist elementar mit Hilfe der Definition von SD nachzurechnen. Es ist für a 6= b: |SD (a, b) − SDT (a, b)| = |[(n − 2)D(a, b) − R(a) − R(b)] − [(n − 2)DT (a, b) − RT (a) − RT (b)]| ≤ (n − 2)|D(a, b) − DT (a, b)| + |R(a) − RT (a)| + |R(b) − RT (b)| < (n − 2)µ(T )/2 + (n − 1)µ(T )/2 + (n − 1)µ(T )/2 = 3n − 4µ(T )/2. Dieselbe Abschätzung ergibt sich für x, y, also insgesamt > −(3n − 4)µ(T ) > −3(n − 4)µ(T ), wie behauptet. 46 4.4 Neighbor Joining auf fast additiven Distanzen Abbildung 4.2: Skizze zum Beweis von Lemma 4.19 (noch zu überarbeiten!) Im anderen Fall sei oBdA b = x, so dass wir einen Sternbaum mit den 3 Blättern a, b = x, y betrachten; der innere Knoten sei u. Nun ist SD (a, b) − SDT (a, b) + SDT (b, y) − SD (b, y) = [(n − 2)D(a, b) − R(a) − R(b)] − [(n − 2)DT (a, b) − RT (a) − RT ( = (n − 2)[D(a, b) − DT (a, b) + DT (y, b) − D(y, b)] + [R(a) − RT (a) > (n − 2)(−2µ(T )/2) + (n − 1)(−2µ(T )/2) = −(2n − 3)µ(T ) > −2(n − 3)µ(T ), wie behauptet. Das folgende Sichtbarkeitslemma verallgemeinert Lemma 4.8 auf fast additive Distanzen. Zunächst definieren wir: 4.18 Definition (Sichtbarkeit). Der Knoten b oder das Paar {a, b} heißt sichtbar von a aus, wenn SD (a, b) = minx6=a SD (a, x). Das Paar {a, b} heißt sichtbar, wenn es von a oder b sichtbar ist. 4.19 Lemma (Sichtbarkeitslemma). Sei T ein ungewurzelter Binärbaum auf n Taxa mit gegebenen Kantenlängen `(e) mit µ(T ) := mine `(e) > 0. Sei D eine zu T gehörende fast additive Metrik, und SD wie in (4.1) definiert. Wenn a, b Nachbarn in T sind, dann ist {a, b} von a aus sichtbar. Beweis. Wir zeigen SD (a, c) > SD (a, b) für alle c 6= a, b. Dazu sei DT die von T induzierte additive Metrik. Wir zerlegen SD (a, c) − SD (a, b) = [SD (a, c) − SDT (a, c) + SDT (a, b) − SD (a, b)] + [SDT (a, c) − SDT (a, b)] und sehen, dass die erste Klammer nach dem technischen Lemma > −2(n − 3)µ(T ) ist. Nach Lemma 4.8 ist auch die zweite Klammer zumindest nicht negativ. Wir zeigen jetzt, dass sie sogar ≥ 2(n − 3)µ(T ) ist; damit gilt dann SD (a, c) − SD (a, b) > 0, was zu zeigen war. Wir wählen also ein c 6= a, b und benennen die Blattkanten zu a, b, c jeweils ea , eb , ec . Da a und b Nachbarn sind, gibt es genau eine dritte Kante e, die zum gemeinsamen Vorfahren von a und b inzident ist und nicht zu a oder b führt (Abbildung 4.2). Wir berechnen jetzt mit Hilfe des Darstellungslemmas wieder einige Kantengewichte: 47 4 Phylogenetik: Distanzbasierte Methoden • Für Blattkanten f ∈ {ea , eb , ec } gilt stets wf (a, c) = wf (a, b) = −2. • Für Kanten f ∈ PT (a, c), f 6= ea , ec gilt wf (a, c) = −2 > −4 ≥= wf (a, b). Insbesondere gilt we (a, c) = −2 > −2(n − 2) = we (a, b). • Für Kanten f ∈ / PT (a, c) gilt stets wf (a, c) = wf (a, b). Also sind für alle f die Gewichtsdifferenzen wf (a, c) − wf (a, b) > 0 und daher SD (a, c) − SD (a, b) X [wf (a, c) − wf (a, b)] · `(f ) = f ≥ µ(T ) · X [wf (a, c) − wf (a, b)] f ≥ µ(T ) · (−2 + 2(n − 2)) = 2(n − 3)µ(T ). Mit Hilfe dieses Lemmas können wir den Beweis von Satz 4.16 nun führen. Beweis. [Satz 4.16] Wir gehen vor wie beim Beweis von Satz 4.9 in Abschnitt 4.3.4: Wenn a überhaupt einen Nachbarn hat, ist wegen dem Sichtbarkeitslemma (Lemma 4.19) bereits SD (a, b) < SD (a, x) für alle x 6= a, b. Der Satz ist also bewiesen, wenn wir zu jedem Paar {x, y}, wobei sowohl x als auch y keine Nachbarn hat, ein Nachbarpaar {a, b} finden mit SD (x, y) > SD (a, b). Sei wieder DT die von T induzierte additive Metrik. Wir zerlegen SD (x, y) − SD (a, b) = [SD (x, y) − SDT (x, y) + SDT (a, b) − SD (a, b)] + [SDT (x, y) − SDT (a, b)] > − 3(n − 4)µ(T ) + (3n − 10)µ(T ) = 2µ(T ) > 0, wobei wir das technische Lemma 4.17 und den Beweis von Satz 4.9 auf SDT angewendet haben. Um die Korrektheit von NJ auf fast additiven Distanzen zu beweisen, benötigen wir noch, dass nach einem NJ-Schritt die neue Distanzmatriz ebenfalls wieder fast additiv ist. 4.20 Lemma. Sei D eine fast additive Metrik und D0 die nach einem NJ-Schritt reduzierte Distanzmatrix. Dann ist D0 fast additiv. Beweis. Dies zeigen wir wie im Beweis von Lemma 4.12 durch denselben Baum S wie dort; wir müssen nachweisen, dass |D0 (x, y) − DS (x, y)| < µ(S)/2 für alle x, y unter der Voraussetzung, dass |D(x, y) − DT (x, y)| < µ(T )/2 für alle x, y. Nun ist µ(S) ≥ µ(T ) und somit für x, y 6= ci bereits D0 (x, y) = D(x, y) und DS (x, y) = DT (x, y), also |D0 (x, y) − DS (x, y)| = |D(x, y) − DT (x, y)| < µ(T )/2 ≤ µ(S)/2. 48 4.5 Fast Neighbor Joining Es bleiben die Distanzen zu c = ci zu betrachten. Sei c0 der einzige zu c adjazente Knoten in S. Dann ist |D0 (x, c) − DS (x, c)| = |(D(x, a) + D(x, b))/2 − DS (c0 , x) − `S (c, c0 )| = |(D(x, a) + D(x, b))/2 − DT (c0 , x) − `T (c, c0 ) − (`T (c, a) + `T (c, b))/2| = |(D(x, a) − DT (x, a))/2 + (D(x, b) − DT (x, b))/2| < µ(T )/4 + µ(T )/4 ≤ µ(S)/2, was zu zeigen war. 4.21 Satz. Sei T ein ungewurzelter Binärbaum mit gegebenen Kantenlängen `T (e) und eine D zugehörige fast additive Metrik. Dann rekonstruiert NJ(D) die Baumtopologie von T . Beweis. Die Korrektheit folgt aus dem Satz von Atteson (Satz 4.16) und aus Lemma 4.20. Zusammenfassung der Beweisstrategie. Wir fassen noch einmal die Beweisstrategie für die Korrektheit von NJ auf (fast) additiven Metriken D mit zugehörigem Baum T zusammen. 1. Wenn a und b Nachbarn in T sind, ist SD (a, b) = minx6=a SD (a, x); d.h., b ist von a aus sichtbar [Lemma 4.8 bzw. Sichtbarkeitslemma]. 2. Betrachtet man {a, b} = argminx6=y SD (x, y), dann sind a und b in T Nachbarn [Satz 4.9 bzw. Satz 4.16]. 3. Fügt man die so bestimmten a, b zu c zusammen und berechnet die sich ergebenden neuen Distanzen D0 , so ist D0 ebenfalls wieder (fast) additiv [Satz 4.13 bzw. Satz 4.21]. 4.5 Fast Neighbor Joining Neighbor Joining ist nach dem bisher Gesagten also ein Algorithmus mit der Eigenschaft, dass er robust gegenüber kleinen Fehlern in additiven Eingabedistanzen ist. Ungünstig ist die Tatsache, dass eine direkte Implementierung von Algorithmus 1 auf n Taxa eine Laufzeit von O(n3 ) hat. Wir zeigen nun, wie diese auf O(n2 ) reduziert werden kann, so dass die oben genannten Eigenschaften (korrekter Baum auf fast additiven Eingabedistanzen) erhalten bleiben. Das resultierende Verfahren heißt demzufolge Fast Neighbor Joining (FNJ). Auf Distanzen, die “weit weg” von additiven Distanzen sind, können NJ und FNJ verschiedene Bäume liefern, und es gibt keinen Konsens darüber, welches Verfahren in diesem Fall “besser” ist. In der Regel wird man sich daher für das schnellere FNJ entscheiden. Der erste Trick besteht darin, das Minimum von SD (x, y) nicht über alle Paare {x, y} zu suchen, sondern nur über die sichtbaren Paare. Beim Neuberechnen der Distanzen müssen wir dann sicherstellen, dass die Menge ebenfalls korrekt aktualisiert wird. Der zweite Trick besteht in der effizienten Aktualisierung der Summen R(x) in jedem Schritt, so dass insgesamt jede der n − 3 Iterationen in O(n) Zeit erfolgen kann. 49 4 Phylogenetik: Distanzbasierte Methoden Algorithm 2 FNJ(D): berechnet aus der Metrik D auf der Objektmenge N (D) mit n := |N (D)| ≥ 3 einen ungewurzelten Baum in O(n2 ) Zeit P Initialisiere R(a) ← x D(a, x) für alle a ∈ N (D) Initialisiere sichtbare Menge V ← {{a, argminx6=a SD (a, x)} : a ∈ N (D)} for i ← 1, . . . , n − 3 do {a, b} ← argmin{x,y}∈V [(|N (D)| − 2) · D(x, y) − R(x) − R(y)] Reduziere {a, b} auf ein neues Blatt c und berechne Kantenlängen `(a, c) ← [R(a) − R(b)]/2(|N (D)| − 2) + D(a, b)/2, `(b, c) ← [R(b) − R(a)]/2(|N (D)| − 2) + D(a, b)/2. Aktualisiere D auf neue Blattmenge N (D) ← N (D) \ {a, b} ∪ {c} durch D(c, x) ← [D(a,P x) + D(b, x) − D(a, b)]/2 für alle x 6= a, b, c. Berechne R(c) ← x D(c, x). Für alle y 6= c, aktualisiere R(y) ← R(y) − D(a, y) − D(b, y) + D(c, y) c0 ← argminy6=c [(|N (D)| − 2) · D(c, y) − R(c) − R(y)] Aktualisiere V ← V \ {{a, x}, {b, x} : x ∈ N (D)} ∪ {{c, c0 }} Verbinde die 3 verbleibenden Objekte zu einem Sternbaum Berechne die Kantenlängen des Sternbaums return Sternbaum bzw. dessen Wurzel Algorithmus 2 zeigt die einzelnen Schritte, die wir im Folgenden analysieren. Zunächst die Laufzeit: Die Initialisierung ist in O(n2 ) Zeit problemlos möglich; in der for-Schleife benötigt jeder einzelne Schritt nur konstante oder O(n) Zeit. Der Unterschied zu NJ besteht nur darin, dass in Zeile 4 über die sichtbare Menge V statt über alle Paare x 6= y minimiert wird und SD (x, y) on-the-fly aus D und R in konstanter Zeit berechnet wird. In den Zeilen ... sieht man, wie R für jedes verbleibende Blatt in konstanter Zeit aktualisiert wird. Wir wollen nun zeigen, dass FNJ auf (fast) additiven Distanzen das gleiche Ergebnis liefert wie NJ (nämlich den korrekten Baum). Dazu müssen wir nur sicherstellen, dass nach jeder Iteration das nächste Nachbarpaar, das NJ im nächsten Schritt auswählen würde, in V ist. 4.22 Satz. Auf (fast) additiven Distanzen liefert FNJ denselben Baum wie NJ. Beweis. Das Sichtbarkeitslemma für fast additive Distanzen garantiert zu Beginn der ersten Iteration, dass alle Blatt-Nachbarpaare des korrekten Baums T (der von NJ rekonstruiert wird), in V liegen. Satz 4.16 garantiert, dass das ausgewählte Paar ein Nachbarpaar ist. Durch die Initialisierung von V ist klar, dass FNJ und NJ im ersten Schritt dasselbe Nachbarpaar (a, b) auswählen und reduzieren. Nach einem Reduktionsschritt ist die resultierende Distanz wieder fast additiv. Es gibt dann zwei Möglichkeiten: (1) Das nächste von NJ ausgewählte Paar enthält den neuen Knoten c; dann muss es sich wieder nach dem Sichtbarkeitslemma um das gerade zu V hinzugefügte {c, c0 } handeln; (2) das nächste Paar enthält c nicht; dann muss es aber nach dem Sichtbarkeitslemma schon vorher in V gewesen sein – aus V werden keine Paare entfernt, es sei denn, einer ihrer Knoten wurde reduziert. Durch Induktion folgt, dass in jeder Iteration das Paar, das von NJ ausgewählt wird, bei FNJ in V liegt und somit auch von FNJ ausgewählt wird. 50 4.6 Weitere Resultate zum Neighbor-Joining-Algorithmus* 4.6 Weitere Resultate zum Neighbor-Joining-Algorithmus* Über NJ und FNJ lässt sich noch mehr beweisen: Mihaescu, Levy und Pachter haben untersucht, was passiert, wenn die Eingabemetrik nicht mehr fast additiv ist und führen die Begriffe “Quartett-additiv” und “Quartett-konsistent” ein. 4.23 Definition. Eine Distanzmatrix D heißt Quartett-konsistent mit einem Baum T , wenn für alle Nachbarquartette (ij : kl) ∈ T gilt, dass wD (ij : kl) > max{wD (ik : jl), wD (il : jk)} (siehe Definition 4.5). 4.24 Definition. Ein Blatt x liegt innerhalb eines Nachbarquartetts (ij : kl), wenn weder (ik : xl) noch (ik : xj) Nachbarquartette sind. 4.25 Definition. Eine Distanzmatrix D heißt Quartett-additiv in Bezug auf einen Baum T , wenn für jedes Nachbarquartett (ij : kl) ∈ T und jedes x innerhalb von (ij : kl) und jedes y nicht innerhalb von (ij : kl), so dass (ij : xy) ∈ / T , gilt: wD (kl : xy) > wD (ij : xy). Das entscheidende Resultat lautet wie folgt. 4.26 Satz. Sei D eine Quartett-additive und Quartett-konsistente Distanzfunktion bezüglich eines Baums T . Dann wird von NJ und FNJ der Baum T ausgegeben. Dieses Resultat stellt einen Bezug zwischen einem Baum und den enthaltenen Nachbarquartetten und zeigt, dass (F)NJ noch robuster als bisher bekannt gegenüber nicht-additiven Distanzen ist. Ein weiteres interessantes Resultat erhält man, indem man einzelne Kanten betrachtet. 4.27 Definition. Sei T ein ungewurzelter Baum mit Blattmenge L(T ). Sei e eine innere Kante. Löschen von e induziert eine Bipartition L(T ) = P ∪ Q mit P ∩ Q = {}, |P | ≥ 2, |Q| ≥ 2, so dass P bzw. Q die Blätter in den beiden Zusammenhangskomponenten sind. Wir nennen diese Bipartition den zu e gehörenden Split P |e|Q. Sei weiter DT die von T induzierte additive Metrik, und sei ` die Länge von e. Eine Distanzmatrix D heißt P |e|Q-additiv bezüglich T , wenn • D(x, y) − DT (x, y) < `/4 für alle (x, y) ∈ P × P und alle (x, y) ∈ Q × Q, • |D(x, y) − DT (x, y)| < `/4 für alle (x, y) ∈ P × Q. 4.28 Satz. Sei T ein Baum mit einem Split P |e|Q. Sei D eine P |e|Q-additive Distanz bezüglich T . Dann rekonstruieren NJ und FNJ jeweils einen Baum, der ebenfalls den Split P |e|Q enthält. Mit anderen Worten, solange die Unterschiede der Distanzen D und DT entlang e nicht zu stark sind und innerhalb von P und Q die Distanzen in D nicht zu viel größer sind als die in DT , wird zumindest die Existenz der Kante e von NJ und FNJ korrekt rekonstruiert. 51 4 Phylogenetik: Distanzbasierte Methoden Literatur Dieser Abschnitt muss noch mit BibTeX aufgearbeitet werden. • Saitou N, Nei M (1987). The neighbor-joining method: a new method for reconstructing phylogenetic trees. Mol Biol Evol 4 (4): 406–425. PMID 3447015. http: //mbe.oxfordjournals.org/cgi/reprint/4/4/406. • Studier JA, Keppler KJ (1988). A note on the Neighbor-Joining algorithm of Saitou and Nei. Mol Biol Evol 5 (6): 729–731. PMID 3221794. http://mbe.oxfordjournals. org/cgi/reprint/5/6/729.pdf. • Mihaescu R, Levy D, Pachter L (2006). Why neighbor-joining works. • Elias I, Lagergren J (2008). Fast neighbor joining. Theoretical Computer Science 52 KAPITEL 5 Genomumordnungen 5.1 Einführung Einzelne Biosequenzen (DNA, RNA, Protein) werden mit Hilfe sogenannter AlignmentAlgorithmen verglichen. Diese zeigen globale und lokale Gemeinsamkeiten und Unterschiede auf. Als Unterschiede gelten dabei Punktmutationen, Einfügungen, Löschungen (“EditDistanz”). Unberücksichtigt bleiben beim Alignment allerdings Umordnungen (Vertauschungen) längerer Abschnitte des Genoms. Betrachtet man aber ganze Genome, so stellt man fest, dass zwischen nah verwandten Spezies (zum Beispiel Mensch/Maus) häufig ein Großteil des Genominhalts nahezu gleich ist, aber zusätzlich zu den oben genannten lokalen änderungen die Reihenfolge der Elemente (Gene, Marker) sich unterscheidet. Visualisieren kann man dies mit Hilfe eines Dotplots. Ein Dotplot von Sequenzen s, t zeigt in Form einer farbcodierten Matrix alle lokalen Ähnlichkeiten zwischen zwei Sequenzen. Die Farbe des Punktes (x, y) visualisiert die Ähnlichkeit zwischen q-Grammen (Teilstrings = Fenstern der Länge q), die bei sx und ty beginnen. Dabei ist q (Fensterlänge) ein Darstellungsparameter. Da es unrealistisch ist, beispielsweise eine 4.6 · 106 × 4.6 · 106 große Matrix aufzustellen und zu berechnen, wird die Darstellung mehrfach gefiltert und vergröbert, so dass insbesondere die starken Ähnlichkeiten nicht verlorengehen. Ein Beispiel verdeutlicht dies (Abbildung 5.1): Wir betrachten einen gefilterten Dotplot (erstellt mit der Software Gepard) der Genome von Yersinia pestis und Yersinia pseudotuberculosis (jeweils ca. 4.6 Mbp). Dunkle Diagonalen zeigen lange Sequenzabschnitte hoher Sequenz-Identität. Die Umordnungen sind klar erkennbar. 53 5 Genomumordnungen Abbildung 5.1: Dotplot der Genome von Yersinia pestis (x-Achse) und Yersinia pseudotuberculosis (y-Achse; beide Genome ca. 4.6 Mbp). Ein Punkt in der Matrix visualisiert den Grad der Ähnlichkeit zwischen zwei Genomabschnitten; schwarz: nahezu identisch, weiß: keine Ähnlichkeit. Die Analyse von Genom-Umordnungen (genome rearrangements) ist ein Teilgebiet der komparativen Genomik, in der ganze Genome nicht auf der Ebene einzelner Nukleotide verglichen werden (dies wäre eher ein Teilgebiet der Sequenzanalyse), sondern in größerem Maßstab. Will man zwei Spezies vergleichen (und zum Beispiel ihren evolutionären Abstand bestimmen), hat man also mindestens zwei Möglichkeiten: 1. lokaler Blickwinkel (Unterschiede auf Nukleotid-Ebene ein einzelnen Genen) 2. der globale Blickwinkel (Unterschiede in der Genom-Anordnung) Wir befassen uns hier mit dem globalen Blickwinkel. 5.2 Problemstellung Wir betrachten in zwei Genomen eine Abfolge ausgewählter Marker (z.B. Gene), und zwar bequemerweise nur solcher, die in beiden Genomen vorkommen. Die Abfolge der n Marker im ersten Genom setzen wir willkürlich auf (1, 2, 3 . . . , n). Für das zweite Genom ergibt sich eine Permutation davon, denn wir gehen davon aus, dass jeder Marker genau einmal vorkommt. Wir unterscheiden zwischen zwei Problemstellungen aufgrund der Doppelsträngigkeit der DNA. 1. Wir kennen die Orientierung der Marker. DAs heißt, wir können feststellen, ob der Marker in beiden Genomen auf dem gleichen Strang oder auf dem Komplementärstrang liegt. Die Marker auf dem Gegenstrang erhalten ein negatives Vorzeichen. Eine einzelne 54 5.2 Problemstellung Inversion von (3,4,5) bildet dann beispielsweise (1,2,3,4,5,6) auf (1,2,-5,-4,-3,6) ab. Wir sprechen von signierten Permutationen (Permutationen mit Vorzeichen). 2. Wir kennen die Orientierung nicht. Das zweite Genom wird durch eine Permutation im üblichen Sinn (unsigniert, ohne Vorzeichen) modelliert. Die Probleme, bei denen die Orientierung nicht gegeben ist, sind in der Regel schwieriger. Man kann sie stets lösen, indem man über alle 2n Vorzeichenkombinationen iteriert und das orientierte Problem löst; dies verursacht natürlich exponentiellen Aufwand. 5.1 Definition (signierte Permutation). Sei [n] := { 1, 2, . . . , n }. Sei −[n] := { −1, −2, . . . , −n }. Eine (unsignierte) Permutation von [n] ist eine bijektive Abbildung p : [n] → [n]. Eine signierte Permutation von [n] ist eine Abbildung p : [n] → [n] ∪ −[n], so dass |p| eine Permutation von [n] ist. Entsprechend sind unsignierte und signierte Permutationen auf beliebigen Mengen definiert. Wir gehen allgemeiner davon aus, dass ein Genom aus mehreren Chromosomen bestehen kann. Ein Chromosom kann zirkulär oder linear sein. Ein lineares Chromosom hat einen wohldefinierten Anfang und ein Ende (die Telomere). Ein zirkuläres Chromosom ist invariant gegenüber zyklischen Permutationen. In Bezug auf Genomumordnungen interessiert uns nur die Reihenfolge (und Un-/Signiertheit) der Marker. Wir gehen davon aus, dass die folgenden Operationen auf Chromosomen für Umordnungen verantwortlich sind: • Inversionen (inversions, reversals), z.B. (u, v, w, x, y, z) → (u, v, −y, −x, −w, z) [Inversion von (w, x, y)] • Blockvertauschungen (block interchanges), z.B. (u, v, w, x, y, z) → (u, y, x, v, w, z) [Vertauschung von (v, w) mit (y)] • Transpositionen (transpositions), d.h. Vertauschungen benachbarter Blöcke, z.B. (u, v, w, x, y, z) → (u, x, v, w, y, z) [Vertauschung von (v, w) mit (x)] • Translokationen (translocations), Vertauschung von Randstücken bei mehreren Chromosomen, z.B. (u, v, w), (x, y, z) → (u, z), (x, y, v, w) [Vertauschung der Randstücke (v, w) und (z)] • Fusionen (fusions) zweier Chromosomen, z.B. (u, v, w), (x, y, z) → (u, v, w, x, y, z) • Fissionen (fissions), d.h., die Aufspaltung eines Chromosoms in zwei, z.B. (u, v, w, x, y, z) → (u, v, w), (x, y, z) • Zirkularisierungen, Linearisierungen (Transformation von zirkulären in lineare Chromosomen und umgekehrt) Bemerkungen zu den Operationen • Wir nehmen stets an, dass die Menge der Operationen symmetrisch ist, in dem Sinn dass, wenn es eine Operation gibt, die ein Genom G in ein anderes Genom H transformiert, auch eine Operation existiert, die H in G transformiert. • Bei signierten Genomdaten sind die Operationen signiert zu interpretieren. Insbesondere kehren sich bei Inversionen Rehienfolge und Vorzeichen um. Bei unsignierten Genomdaten finden keine Vorzeichenwechsel statt. 55 5 Genomumordnungen Eine wichtige Frage in Bezug auf die mögliche gemeinsame Vergangenheit zweier Genome (letzter gemeinsamer Vorfahre in der Evolution) ist nun, wie stark unterscheiden sich die beiden Genome? Mit anderen Worten: Wie groß ist ihre Distanz? Die Distanz lässt sich als die Anzahl der minimal benötigten Operationen definieren, die man benötigt, um das eine Genom in das andere zu überführen. Diese Art zu denken bezeichnet man auch als Parsimony-Prinzip (Prinzip der Sparsamkeit) oder Occam’s Razor (von allen möglichen Erklärungen ist die einfachste die plausibelste). (Dagegen kann man Einwände erheben.) Dies führt auf folgende Familie von algorithmischen Problemen: 5.2 Problem (Genomdistanz, Genomsortierung). Gegeben: signierte / unsignierte unichromosomale / multichromosomale Genome G, H; symmetrische Menge an zulässigen signierten / unsignierten Operationen. Jeder Marker kommt in jedem Genom genau einmal vor (im signierten Fall entweder positiv oder negativ orientiert). Gesucht: 1. Distanz von G zu H, d.h. die Länge einer minimal langen Folge an zulässigen Operationen, die G in H transformiert. 2. eine solche minimal lange Folge (SSortierszenario”) • Zu dieser Problemgruppe gibt es zahlreiche Veröffentlichungen; je nach Operationsmenge führt dies auf mehr oder weniger schwierige Formeln für die Distanz und auf Algorithmen zur Rekonstruktion eines Sortierszenarios. Viele der Formeln und Algorithmen stammen aus den 90’er Jahren (Bafna, Hannenhalli, Pevzner), und viele waren am Anfang fehlerhaft. Einige der Fehler wurden erst vor kurzer Zeit gefunden. Die Subtilität der Problemstellung wird anhand der Inversionsdistanz klar: • Das Problem der unsignierten Inversionsdistanz für ein einzelnes lineares Chromosom wurde 1982 von Watterson und anderen formuliert und 1995 von Caprara als NP-schwer bewiesen. Von Kececioglu and Sankoff stammt ein Approximationsalgorithmus. • Die signierte Version des Problems wurde zuerst von Hannenhalli und Pevzner gelöst. Für die Distanzberechnung ist mittlerweile ein Linearzeitalgorithmus bekannt; die Angabe eines Sortierszenarios kann immerhin in subquadratischer Zeit erfolgen. 5.3 Sortieren durch Blockvertauschungen Wir betrachten ein einfaches Genommodell (ein lineares Chromosom, unsigniert, d.h. eine Permutation von { 1, . . . , n }) und lassen als einzige Operation eine Blockvertauschung zu. Hierbei wird ein Block von benachbarten Elementen der Permutation mit einem anderen Block vertauscht. 56 5.4 Genommodell 5.3 Definition. Aus einer gegebenen Permutation π = (π1 , . . . , πn ) macht die Blockvertauschung (i, j, k, `) mit 1 ≤ i < j ≤ k < ` eine neue Permutation π 0 = (π1 , . . . , πi−1 , πj , . . . , π`−1 , πi , . . . , πj−1 , . . . , π es wird also der Block zwischen Indizes i und j − 1 mit dem zwischen Indizes k und ` − 1 vertauscht. Da wir das Genom durch eine einfache Permutation modellieren und nur ein Chromosom betrachten, können wir oBdA (durch Umnummerierung) davon ausgehen, dass das eine Genom die Identitätspermutation (1, . . . , n) ist. 5.4 Definition. Die Blockvertauschungsdistanz einer Permutation π (zur Identität) ist die minimale Anzahl an Blockvertauschungen, die benötigt werden, um π zu sortieren. Verwende die Dissertation von D. A. Cristie (Kaptel 4), um die folgenden Aufgaben zu lösen. 1. Gib eine obere Schranke D für die Blockvertauschungsdistanz an und einen Algorithmus, der eine Permutation mit D Blockvertauschungen sortiert (also in die Identität (1, . . . , n) umwandelt). 2. Zeige, dass dieser Algorithmus optimal ist, also die obere Schranke D in der Tat die Blockvertauschungsdistanz zwischen einer gegebenen Permutation und der Identität ist. 5.4 Genommodell Um Umordnungsprobleme möglichst allgemein behandeln zu können, machen wir uns zunächst Gedanken um die Repräsentation eines Genoms. Wir stellen im folgenden einen vereinheitlichenden Ansatz von Bergeron, Mixtacki und Stoye vor, der in der Dissertation von Julia Zakotnik (Universität Bielefeld, 2008) beschrieben wird. Wir lassen beliebige multichromosomale Genome aus einer Mischung von linearen und zirkulären Chromosomen zu. Wir gehen von orientierten Genen (signierte Chromosomen) aus; jedes Gen besitzt also in Leserichtung hinten einen Anfang (tail ) und vorne ein Ende (head ): (tail → head). Gene werden mit Kleinbuchstaben a, b, c, . . . bezeichnet. Ein Gen a besteht also aus zwei Elementen at , ah . Wir verwenden die Begriffe “Marker” und “Gen” gleichbedeutend. Nachbarschaften in einem Chromosom werden durch Adjazenzen beschrieben, dies sind 2elementige Mengen. Je nach Lage zueinander kann eine Adjazenz von Markern a und b eine von vier Formen annehmen: { ah , bh } , { ah , bt } , { at , bh } , { at , bt } . Ein Ende eines linearen Chromosoms heißt Telomer und wird durch eine einelementige Menge beschrieben. Ein Genom ist eine Menge von Adjazenzen und Telomeren aus Genen, so dass head und tail jedes Gens in genau einer Adjazenz oder genau einem Telomer vorkommen. Aus den Adjazenzen und Telomeren eines Genoms konstruiert man den Genomgraphen und damit die Chromosomen: Die Adjazenzen und Telomere sind die Knoten; Kanten werden für 57 5 Genomumordnungen Abbildung 5.2: Beispiel eines Genomas mit Markern a, . . . , g. Oben: Durch Adjazenzen beschriebenes Genom. Mitte: Genomgraph (Knoten sind Adjazenzen und Telomere, Kanten gerichtet von tails zu heads). Unten: Listendarstellung; das Genom ist eine Menge von Folgen der Marker, die die Chromosomen definieren. Zyklische Chromosomen erkennt man daran, dass in der entsprechenden Folge erstes und letztes Element gleich sind. jedes Gen von tail zu head gezogen. Lineare Chromosomen reichen von Telomer zu Telomer. Durch Ablesen der Reihenfolge der Gene kann man eine Listenrepräsentation des Genoms erhalten. Die Vorzeichen ergeben sich anhand der Orientierung der Gene. In Abbildung 5.2 sind ein Beispielgenom, der Genomgraph und eine mögliche Listenrepräsentation des Genoms zu sehen. Man beachte, dass es verschiedene äquivalente Listenrepräsentationen gibt; man kann jedes Chromosom insgesamt invertieren (ohne eine Inversionsoperation durchzuführen!). Zirkuläre Chromosomen können in der Listendarstellung bei jedem Gen beginnen. Der Genomgraph hat folgende Eigenschaften: • Jeder Knoten hat Grad 1 (Telomer) oder 2 (Adjazenz) • Jede Kante entspricht einem Gen. 5.5 Die DCJ-Operation Wir untersuchen nun ein spezielles Umordnungsproblem, bei dem es nur eine einzige Operation gibt: die Double-Cut-and-Join-Operation (DCJ). Diese Operation wird auf ein Genom (bzw. den Genomgraphen) angewendet, lässt sich aber allgemein auf Graphen, deren Knoten den Grad 1 oder 2 haben, definieren. Wir betrachten in diesem Abschnitt allgemein Graphen G, in denen jeder Knoten den Grad 1 oder 2 hat. Der Genomgraph hat diese Eigenschaft (Grad 1: Telomer, Grad 2: Adjazenz), aber auch ein anderer Graph, den wir später behandeln. 5.5 Definition (externer Knoten, interner Knoten). Sei G ein Graph, in dem jeder Knoten den Grad 1 oder 2 hat. Ein Knoten mit Grad 1 heisst extern. Ein externer Knoten, der inzident zu einer Kante p ist, wird mit der Menge { p } bezeichnet. Ein Knoten mit Grad 2 heisst intern. Ein interner Knoten, der inzident zu den Kanten p und q ist, wird mit der Multimenge { p, q } bezeichnet. 5.6 Lemma. Jede Zusammenhangskomponente von G ist entweder ein Zyklus aus inneren Knoten oder ein Pfad aus null oder mehr inneren Knoten, der von zwei äußeren Knoten begrenzt wird. 58 5.5 Die DCJ-Operation Beweis. Klar. 5.7 Definition (gerader/ungerader Pfad/Zyklus). Ein Zyklus oder Pfad heisst gerade, wenn er über eine gerade Anzahl von Kanten verfügt, ansonsten ungerade. 5.8 Definition (DCJ-Operation). Sei G ein Graph, in dem jeder Knoten den Grad 1 oder 2 hat. Auf G ist die DCJ (”double cut and join”)-Operation auf zwei Knoten u,v wie folgt definiert. (a) Wenn u = { p, q } und v = { r, s } beide intern sind, werden diese entweder durch { p, r } , { q, s } oder durch { p, s } , { q, r } ersetzt. (b) Wenn u = { p, q } intern und v = { r } extern ist, werden diese entweder durch { p, r } , { q } oder durch { q, r } , { p } ersetzt. (c) Wenn u = { q } und v = { r } beide extern sind, werden diese durch den internen Knoten { q, r } ersetzt. Symmetrisch zu (c) ist auch eine DCJ-Operation auf einem einzelnen interen Knoten { q, r } definiert: (c’) Der interne Knoten { q, r } wird durch zwei externe Knoten { q } , { r } ersetzt. Die Definition war allgemein gehalten. Da in einem Genomgraphen jeder Knoten den Grad 1 oder 2 hat, lässt sich die DCJ-Operation darauf anwenden. Wir betrachten nun die Wirkung der DCJ-Operation auf einen Genomgraphen im Detail. Wir können die DCJ-Operation mit der Terminologie auch wie folgt formulieren: Wähle zwei Gen-Elemente (head oder tail) aus (a) zwei verschiedenen Adjazenzen, (b) einer Adjazenz und einem Telomer, und vertausche diese beiden Elemente. Oder wähle zwei Gen-Elemente aus (c) zwei verschiedenen Telomeren und füge sie zu einer Adjazenz zusammen, oder wähle beide Elemente aus (c’) derselben Adjazenz und mache daraus zwei Telomere. Wie genaue Wirkung einer DCJ-Operation hängt davon ab, wo die beiden benutzten Elelemnte im Genom liegen. Abbildung 5.3 zeigt alle möglichen Fälle. (a1) Zwei Adjazenzen auf verschiedenen linearen Chromosomen: Es wird Material zwischen diesen Chromosomen ausgetauscht, und zwar zwischen den jeweils gewählten Adjazenzen und den Telomeren des Chromosoms. Dies ist eine Translokation. (a2, a3) Zwei Adjazenzen auf demselben Chromosom (linear oder zirkulär): Entweder der Abschnitt zwischen den gewählten Adjazenzen wird invertiert (Inversion) oder aus dem Chromosom herausgeschnitten in ein neues zirkuläres Chromosom (Exzision). (a4, a5) Zwei Adjazenzen, eine auf einem zirkulären Chromosom, die andere auf einem anderen (linearen oder zirkulären) Chromosom: Das zirkuläre Chromosom wird in das andere Chromosom integriert (Integration). (b1) Eine Adjazenz und ein Telomer auf verschiedenen linearen Chromosomen: Wiederum eine Translokation. (b2) Eine Adjazenz und ein Telomer auf demselben linearen Chromosom: Inversion oder Exzision des Randstücks, die man auch als Fission bezeichnen kann. 59 5 Genomumordnungen Abbildung 5.3: Die Wirkung der DCJ-Operation auf einem Graphen (b3) Eine Adjazenz auf einem zirkulären Chromosom und ein Telomer (das es nur auf einem linearen Chromosom gibt): Integration des zirkulären Chromosoms an den Rand des linearen, so dass man auch von einer Fusion sprechen kann. (c1) Zwei Telomere auf verschiedenen (linearen) Chromosomen: Fusion dieser Chromosomen. (c’1) Eine einzelne Adjazenz eines linearen Chromosoms: Fission dieses Chromosoms in zwei. (c2) Die zwei Telomere desselben (linearen) Chromosoms: Zirkularisierung dieses Chromosoms. (c’2) Eine einzelne Adjazenz eines zirkulären Chromosoms: Linearisierung dieses Chromosoms. Das folgende Lemma zeigt, wie sich eine DCJ-Operation auf die Zyklen und Pfade eines Graphen auswirkt. 5.9 Lemma. Durch eine DCJ-Operation ändert sich die Zahl der Zyklen und die Zahl der Pfade Graphen maximal um eins. Beweis. Durchgehen aller Fälle; siehe Abbildung 5.3. Beispiel: Bei einer Zirkularisierung eines Chromosoms ändert verringert sich die Zahl der Pfade und erhḧoht sich die Zahl der Zyklen um eins. 60 5.6 Die DCJ-Distanz zwischen zwei Genomen 5.6 Die DCJ-Distanz zwischen zwei Genomen Man kann sich überzeugen, dass durch eine Folge von DCJ-Operationen jeder Genomgraph A in jeden anderen Genomgraphen B mit der gleichen Genmenge transformiert werden kann. 5.10 Problem (DCJ-Distanz, Sorting by DCJ). Zu zwei signierten Genomen A und B mit dem gleichen Geninhalt, gegeben durch Adjazenzen und Telomere, berechne die DCJ-Distanz dDCJ (A, B) zwischen A und B (Länge einer minimal langen Folge von DCJ-Operationen, die A in B transformiert) und ein entsprechendes Sortierszenario. • Wir betrachten die Wirkung der DCJ-Operation auf einen Genomgraphen an Hand eines Beispiels. 5.11 Beispiel (DCJ-Distanz zwischen zwei Genomen). Die folgenden Genome A und B, besitzen aufgrund des folgenden Sortierszenarios eine DCJ-Distanz von höchstens 5: Wir werden gleich sehen, dass 5 auch die tatsächliche Distanz ist. ♥ Um das DCJ-Sortier-Problem zu lösen, ist ein weiterer Graph, der Adjazenzgraph zwischen zwei Genomen A, B, nützlich. 5.12 Definition (Adjazenzgraph). Der Adjazenzgraph AG(A, B) zweier Genome A, B besitzt je einen Knoten für jede Adjazenz und jedes Telomer in A und B. (Wenn die gleiche Adjazenz sowohl in A als auch in B auftritt, sind das zwei Knoten, einer für A und einer für B.) Kanten bestehen nur zwischen A-Knoten und B-Knoten: Für u aus A und v aus B existieren genau |u ∩ v| Kanten zwischen u und v. 5.13 Beispiel (Adjazenzgraph). Für die obigen Genome A und B ergibt sich folgender Adjazenzgraph: 61 5 Genomumordnungen ♥ Beobachtungen: • Der Adjazenzgraph ist bipartit. • Alle Knoten haben Grad 1 oder 2; damit besteht er aus Pfaden und Zyklen. • Alle Zyklen sind gerade. (Pfade können gerade oder ungerade sein.) 5.14 Lemma (Identität von Genomen aus Adjazenzgrapgen). Seien A, B Genome auf der gleichen Menge von N Genen. Sei C die Anzahl der Zyklen im Adjazenzgraph; I die Anzahl ungerader Pfade. Dann gilt A = B genau dann wenn C + I/2 = N . Beweis. In jedem Genom aus a Adjazenzen und t Telomeren gilt: N = a + t/2. ⇒: Ist a = b, dann besteht der Adjazenzgraph aus a Zyklen (der Länge 2, einer für jede der gemeinsamen Adjazenzen) und t Pfaden (der Länge 1, einer für jedes der gemeinsamen Telomere). Also ist C = a und I = t und damit N = C + I/2. ⇐: Genom A bestehe aus a Adjazenzen und t Telomeren. Dann ist N = a+t/2. Jeder Zyklus im Adjazenzgraphen enthält mindestens eine Adjazenz in A, also C ≤ a. Jeder ungerade Pfad im Adjazenzgraphen enthält genau ein Telomer in A, also I ≤ t. Aus C + I/2 = N = a + t/2 folgt C = a und I = t. Da die Genmenge in A und B gleich ist, haben damit alle Zyklen Länge 2 und alle Pfade Länge 1. Dies bedeutet A = B. Jetzt kommt die entscheidende Beobachtung: Wenn eine DCJ-Operation auf Genom A angewendet wird und wir gleichzeitig den Genomgraphen von A und den Adjazenzgraphen von A und B betrachten, dann wirkt die DCJ-Operation ebenfalls auf den Adjazenzgraphen. Da der Adjazenzgraph bipartit ist und die DCJ-Operation auf den Knoten ausgeführt wird, die zum Genom A gehören, lässt sich für den Adjazenzgraphen eine stärkere Aussage als das allgemeine Lemma 5.9 treffen. 5.15 Lemma. Durch die Anwendung einer DCJ-Operation auf die Adjazenzen und Telomere des Genomgraphen zu Genom A ändert sich im Adjazenzgraphen die Zahl • der Zyklen maximal um 1, • der Pfade insgesamt maximal um 1, • der ungeraden Pfade um −2, 0, oder 2. Die Anzahl der Zyklen und ungeraden Pfade kann sich nicht gleichzeitig erhöhen. Beweis. Wir betrachten wieder alle Fälle (siehe Abbildung 5.3, dieses Mal anhand ihrer Wirkung auf den Adjazenzgraphen. Da der Adjazenzgraph bipartit ist, haben darin alle Zyklen gerade Länge. Daraus lässt sich eine untere Schranke für die DCJ-Distanz herleiten. 62 5.6 Die DCJ-Distanz zwischen zwei Genomen 5.16 Lemma (Untere Schranke für DCJ-Distanz). Seien A, B Genome auf der gleichen Menge von N Genen. Sei C die Anzahl der Zyklen im Adjazenzgraph; I die Anzahl ungerader Pfade. Dann gilt dDCJ (A, B) ≥ N − (C + I/2). Beweis. Durch eine einzelne DCJ-Operation kann sich nach Lemma 5.15 der Ausdruck C + I/2 um maximal 1 erhöhen. Damit werden mindestens N − (C + I/2) Schritte benötigt, bis N = C + I/2 gilt, also nach Lemma 5.14 die Genome gleich sind. Wir zeigen nun durch Angabe eines Algorithmus, dass sich für zwei verschiedene Genome immer eine DCJ-Operation finden lässt, die C + I/2 um eins erhöht, so dass die Ungleichung in Lemma 5.16 in Wahrheit sogar eine Gleichung ist. Die Idee ist bestechend einfach: • Wenn es in Genom B eine Adjazenz { p.q } gibt, die es nicht in A gibt, dann muss sie in A erzeugt werden. Sei also u das Element, das p enthält und v das davon verschiedene Element, das q enthält. Sowohl u als auch v können Adjazenzen oder Telomere sein (im Telomer-Fall wäre u = { p } und/oder v = { q }). Wir führen nun die DCJ-Operation durch, die u und v durch { p, q } und die “Restmenge” (u \ { p }) ∪ v \ { q }) ersetzt (ist diese leer, wird sie nicht berücksichtigt; in diesem Fall werden einfach nur die Telomere { p } , { q } “verklebt”). Dadurch wird im Adjazenzgraphen ein neuer Zyklus der Länge 2 erzeugt (zwischen { p, q } in A und in B). Diese beiden Kanten werden dabei aus der Struktur des Adjazenzgraphen, in der sie vorher enthalten waren (Zyklus oder Pfad), herausgeschnitten. Da es sich um genau 2 Kanten handelt, ändert sich die Anzahl der ungeraden Pfade nicht. • Gibt es in Genom B keine Adjazenz mehr, die es nicht auch in A gibt, dann kann es aber in B noch ein Paar von Telomeren { p } , { q } geben, das in A eine Adjazenz { p, q } bildet. Wir wenden nun die DCJ-Operation an, die diese Adjazenz in zwei Telomere aufteilt. Dabei verringert sich die Anzahl der geraden Pfade um 1 und die die Zahl der ungeraden Pfade steigt um 2 (siehe Abbildung ??. Wir geben noch den Algorithmus an. Dabei wird das Genom A solange durch eine DCJOperation geändert, bis es mit B übereinstimmt. Dazu werden zunächst (in beliebiger Reihenfolge) alle Adjazenzen von B in A hergestellt. Danach werden die Telomere von B, sofern es noch Adjazenzen in A sind, erzeugt; dies entspricht Fissionen oder Linearisierungen. Der Algorithmus gibt nach jedem Zwischenschritt eine veränderte Version von A aus. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 def DCJsort (A , B ): for (p , q ) in B . adjacencies (): # Erzeuge Adjazenz {p , q } in A u = A . element_with ( p ) v = A . element_with ( q ) if u != v : z = (u - set ( p )) + (v - set ( q )) A . remove ( u ) A . remove ( v ) A . add ( set (p , q )) A . add ( z ) # tut nichts , wenn z leer yield A for p in B . telomeres (): # Erzeuge Telomer { p } in B 63 5 Genomumordnungen u = A . element_with ( p ) if len ( u )==2: # wenn u Adjazenz ist A . remove ( u ) A . add ( p ) A . add (u - set ( p )) yield A 15 16 17 18 19 20 Wir fassen die Aussagen von Lemma 5.16 und die des DCJsort-Algorithmus in einem Satz zusammen. 5.17 Satz. Seien A, B Genome auf der gleichen Menge von N Genen. Sei C die Anzahl der Zyklen im Adjazenzgraph; I die Anzahl ungerader Pfade. Dann gilt dDCJ (A, B) = N − (C + I/2). Mit geeigneten Datenstrukturen zur Genomrepräsentation lässt sich der DCJsort-Algorithmus in linearer Zeit durchführen. Wichtig ist dabei, dass die element_with-Methode nur konstante Zeit benötigt. Dies lässt sich relativ leicht mit einem entsprechenden Index bewerkstelligen. Eine Implementierung einer Genom-Klasse, so dass obiger Python-Code lauffähig wird, ist eine gute Übung. 64 KAPITEL 6 Algorithmen der Massenspektrometrie 6.1 Moleküle, Atome und ihre Massen Massenspektrometer sind in der Lage, sehr genau die Masse von Molekülen zu messen. Organische Moleküle (DNA, Proteine, Metabolite) bestehen letztendlich hauptsächlich aus Kohlenstoff, Wasserstoff, Stickstoff, Sauerstoff, Stickstoff und Schwefel. Ein Atom besteht aus einem Kern aus Protonen (positiv geladen) und Neutronen (elektrisch neutral) und einer Elektronenhülle (negativ geladen). Ein Atom insgesamt ist elektrisch neutral, so dass die Anzahl der Protonen im Kern der Anzahl der Elektronen in der Hülle entspricht. Zu beachten ist, dass es verschiedene Isotope dieser Elemente gibt, die sich durch die Anzahl der Neutronen im Atomkern unterscheiden. Die verschiedenen Isotope kommen in der Natur mit bestimmten Häufigkeiten vor. Bei zu großer Neutronenzahl werden diese instabil und zerfallen spontan (Radioaktivität). Für die chemischen Eigenschaften eines Elements sind Anzahl und Verteilung der Elektronen in der Hülle verantwortlich. Zur Masse hingegen tragen nahezu ausschließlich die Protonen und Neutronen bei; die Elektronen hingegen haben eine vergleichsweise kleine Masse. Die Massen werden in Dalton (Da) oder atomic units (u) gemessen. 1 Daist definiert als 1/12 der Masse eines 12 C-Atoms; das ist ein Kohlenstoff-Atom mit 12 Kernteilchen (6 Protonen und 6 Neutronen). In etwa (aber nicht exakt) hat ein Proton und ein Neutron eine Masse von 1 Da. Tabelle 6.1 zeigt verschiedene Elemente und ihre Isotope mit ihren Ordnungszahlen (OZ, Anzahl der Elektronen), Massenzahlen (MZ, Anzahl der Protonen plus Neutronen im Kern), Massen und natürlichen Häufigkeiten. Massenspektrometer messen (mit Hilfe verschiedener Technologien) die Masse eines Moleküls mit sehr hoher Genauigkeit. Im Normalfall wird ein aufgereinigter Stoff gemessen (mehrere Moleküle desselben Stoffs), wobei sich die Masse der einzelnen Moleküle aufgrund 65 6 Algorithmen der Massenspektrometrie C Name Kohlenstoff OZ 6 H Wasserstoff 1 N Stickstoff ? O Sauerstoff ? P S Phosphor Schwefel ? ? MZ 12 13 1 2 14 15 16 17 18 31 32 33 34 36 Masse 12.000000 13.003355 1.007825 2.014102 14.003074 15.000109 15.994915 16.999132 17.99916 30.973762 31.972071 32.971458 33.967867 35.967081 Häufigkeit 0.9893 0.0107 0.998851189019365 0.001148810980635 0.99632 0.00368 0.99757 0.00038 0.00205 1.00000 0.9493 0.0076 0.0429 0.0002 Tabelle 6.1: Wichtige Elemente der organischen Chemie und ihre Isotope, ihre Ordnungszahlen (OZ), Massenzahlen (MZ), Massen in Daund natürliche Isotopenhäufigkeiten verschiedener Isotop-Häufigkeiten der bildenden Atome unterscheidet. Das Massenspektrometer misst, wie viele Moleküler jeder Masse auftreten. Man bekommt also nicht nur eine Gesamtmasse des Moleküls, sondern auch die Massenverteilung unter Berücksichtigung der Isotop-Häufigkeiten. Diese ignorieren wir jedoch für den Moment und betrachten nur “die” Masse eines Moleküls. 6.2 Massenzerlegungsproblem und Subset-Sum Wir betrachten das Problem, zu einer gegebenen Gesamtmasse M und gegebenen Elementarmassen 0 < a1 < · · · < ak (die wir nach geeigneter Skalierung und Rundung stets als ganzzahlig annehmen), alle möglichen Zerlegungen von M in die Elementarmassen zu finden, d.h., gesucht sind alle ganzzahligen nichtnegativen Lösungen (n1 , . . . , nk ) ∈ Nk0 der Gleichung k X M= nj aj . j=1 Genauer lassen sich drei Varianten des Problems definieren: 1. Gibt es überhaupt eine Zerlegung von M in die Elementarmassen? 2. Wie viele Zerlegungen gibt es? 3. Zähle alle Zerlegungen auf. Das Problem ist verwandt zum (aber nicht identisch mit dem) Subset-Sum-Problem, bei dem Lösungen (n1 , . . . , nk ) ∈ { 0, 1 }k derselben Gleichung gesucht sind, dafür aber die “Elementarmassen” 0 < a1 ≤ · · · ≤ ak erfüllen (statt strikter Ungleichungen). Beim Subset-SumProblem darf jede Elementarmasse also höchstens einmal benutzt werden (bzw. sofern eine Elementmasse mehrfach gegeben ist, höchstens so oft wie gegeben). 66 6.2 Massenzerlegungsproblem und Subset-Sum 6.2.1 Lösung mit Dynamic Programming Zur ersten Problemvariante (Existenz einer Zerlegung) machen wir für das Massenzerlegungsproblem folgende Beobachtung: 6.1 Lemma. M ist genau dann in (a1 , . . . , ak ) zerlegbar, wenn es ein i ∈ { 0, 1, . . . , bM/ak c } gibt, so dass M − iak in (a1 , . . . , ak−1 ) zerlegbar ist. Dies führt unmittelbar auf einen rekursiven Algorithmus. Hierbei kann es jedoch passieren, dass (in höheren Rekursionstiefen) dieselben Unterprobleme mehrfach gelöst werden, was unnötige Arbeit ist. Daher bietet sich ein Algorithmus an, der auf Dynamic Programming beruht. Wir lösen damit direkt auch die zweite Problemvariante. Dazu definieren wir die Größen N (m, j) für 0 ≤ m ≤ M und 1 ≤ j ≤ k als die Anzahl der verschiedenen Zerlegungen von m mit den ersten j Massen (a1 , . . . , aj ). Offensichtlich ist N (0, j) = 1 für alle j, denn für die Masse m = 0 gibt es immer nur die eindeutige Zerlegung 0 = 0a1 + · · · + 0aj . Offensichtlich ist auch N (m, 1) = 1, wenn m ein Vielfaches von a1 ist (Zerlegung m = i · a1 mit i := m/a1 ∈ N) und N (m, 1) = 0, wenn m kein Vielfaches von a1 ist. Das folgende Lemma gibt die allgemeine Rekurrenz an. 6.2 Lemma. Für m > 0 und j ≥ 2 ist bm/aj c N (m, j) = X N (m − i · aj , j − 1). i=0 Beweis. Wir gruppieren alle Zerlegungen danach, wie oft Masse aj benutzt wird. Dies kann zwischen i = 0 und i = bm/aj c mal geschehen. Die Restmasse m − i · aj muss dann mit (a1 , . . . , aj−1 ) zerlegt werden; die Anzahl der möglichen Zerlegungen hierzu ist schon als N (m − i · aj , j − 1) berechnet worden. Da verschiedene Wahlen von i zu verschiedenen Zerlegungen führen, gilt ≥ im Lemma. Da aber auch jede Zerleung die Masse aj zwischen 0 und bm/aj c mal benutzt, gilt ebenfalls ≤, also Gleichheit. Dieser DP-Ansatz kann leicht auf andere Problemvarianten angepasst werden, beispielsweise, indem man für jede Masse aj eine maximale Verwendunghäufigkeit xj vorgibt. Beim SubsetSum-Problem ist xj = 1. Wir erhalten dann die allgemeinere Rekurrenz max{ bm/aj c,xj } N (m, j) = X N (m − i · aj , j − 1). i=0 Implementierung: Die Tabelle der N (m, j) kann zeilen- oder spaltenweise berechnet werden. Bei einer spaltenweisen Berechnung benötigt man zur Berechnung der j-ten Spalte nur die (j − 1)-te, nicht mehr die vorangehenden. Mit Hilfe der Tabelle lassen sich auch alle Zerlegungen effizient aufzählen (hierzu werden wieder alle Spalten benötigt). Man beginnt mit einem m und schaut in der Tabelle nach, 67 6 Algorithmen der Massenspektrometrie ob Zerlegungen mit i · aj überhaupt existieren: Das ist genau dann der Fall, wenn N (m − i · aj , j − 1) > 0. Wenn ja, zählt man rekursiv die Zerlegungen von m − i · aj in die ersten j − 1 Massen auf, und kombiniert diese mit i · aj . Ist hingegen N (m − i · aj ) = 0, so gibt es keine Zerlegungen, bei denen i-mal aj benutzt wird, und dieser Ast im Rekursionsbaum muss nicht weiter verfolgt werden. Die Laufzeit ist O(M · k · M/a1 ) beim Massenzerlegungsproblem, bzw. O(M k) beim SubsetSum-Problem (da hier die Anzahl der Summanden in der Rekurrenz durch zwei beschränkt ist). Man beachte, dass M dabei durchaus exponentiell in der Eingabegröße sein kann; die Eingabe besteht aus den Bits für M und a1 , . . . ak . Daher ist die beschriebene Laufzeit kein Widerspruch zur NP-Schwere von Subset-Sum. 6.2.2 Lösung mit einer Restklassentabelle Die Tabelle der N (m, j) benötigt O(M ) Platz, um zu bestimmen, ob und auf wie viele Weisen die Masse M zerlegbar ist. Eine einfache Überlegung zeigt, dass man sich beim Massenzerleungsproblem, wo es keine Obergrenzen für die Verwendung der einzelnen Massen gibt, darauf beschränken kann, die verschiedenen Restklassen von m modulo a1 zu betrachten: 6.3 Lemma. Ist m zerlegbar, dann auch alle m + i · a1 für i ≥ 0. Sei Rr die Klasse der nichtnegativen Zahlen mit Rest r bei Division durch a1 (d.h., durch die kleinste Elementarmasse), Rr := { m ≥ 0 | m mod a1 = r } . Aus dem Lemma folgt, dass sobald ein m ∈ Rr zerlegbar ist, auch alle größeren Zahlen in Rr zerlegbar sind. Es genügt also, die kleinste Zahl in Rr zu ermitteln, die zerlegbar ist. Wir definieren also Z(r, j) für 0 ≤ r < a1 und 1 ≤ j ≤ k als die kleinste Zahl in Rr , die in die Elementarmassen a1 , . . . , aj zerlegbar ist. Offensichtlich ist Z(0, j) = 0 für alle j, da 0 ∈ R0 immer zerlegbar ist, indem jede Masse 0-mal benutzt wird. Ebenso ist Z(r, 1) = ∞ für r 6= 0, da keine Zahl, die nicht durch a1 teilbar ist als Vielfaches von a1 geschrieben werden kann. Wie erhalten wir Spalte j aus Spalte j − 1? Initial wissen wir Z(r, j) ≤ Z(r, j − 1), da jede Masse in Restklasse Rr , die schon mit a1 , . . . , aa−1 zerlegbar war, zerlegbar bleibt. Wir setzen also zunächst Z(r, j) := Z(r, j − 1) und prüfen nun, ob sich mit Hilfe von aj kleinere Zahlen als Z(r, j −1) zerlegen lassen. Für jede Restklasse r beginnen wir einen Durchlauf mit (dem bisher bekannten) Z(r, j) und betrachten die daraus durch (mehrfache) Addition von aj erzeugbaren Zahlen zi := Z(r, j) + i · aj und ihre jeweiligen Restklassen ri := zi mod a1 . Ist zi < Z(ri , j), dann ersetzen wir Z(ri , j) durch zi . Sobald i so groß wird, dass keine der existierenden Zahlen mehr verkleinert werden kann, wird der Durchlauf abgebrochen und für die nächste Restklasse r beonnen. Dieser Algorithmus kann optimiert werden. Die Restklassentabelle kann offensichtlich benutzt werden, um zu entscheiden, ob eine Masse m in a1 , . . . , ak zerlegbar ist: Bestimme die passende Restklasse r := m mod a1 und prüfe ob m ≥ Z(r, k). 68 6.2 Massenzerlegungsproblem und Subset-Sum Analog zur DP-Lösung können nun alle Zerlegungen rekursiv aufgezählt werden. Die Anzahl der Zerlegungen kann man nun nicht mehr direkt an der Tabelle ablesen (dafür ist die Tabelle viel kleiner), sondern muss während der rekursiven Aufzählung mitzählen. Die Größe der Tabelle ist nun O(a1 k) und hängt nicht mehr von der zu zerlegenden Masse M ab. 6.2.3 Frobenius-Zahl Ist in der Restklassentabelle in der letzten Spalte kein Eintrag mehr unendlich, dann ist ab einer gewissen Größe jede Masse zerlegbar. Die Frobeniuszahl F (a1 , . . . , ak ) zu Elementarmassen a1 , . . . , ak ist die größte nicht zerlegbare Masse. Ab F (a1 , . . . , ak ) + 1 sind also alle Zahlen in a1 , . . . , ak zerlegbar. 6.4 Satz. Die Frobeniuszahl berechnet sich aus der Restklassentabelle Z wie folgt: F (a1 , . . . , ak ) = max Z(r, k) − a1 0<r<a1 Beweis. Z(r, k)−a1 ist die größte Zahl in Restklasse Rr , die nicht zerlegbar ist, denn Z(r, k) ist ja die minimale zerlegbare Zahl in Rr . Die insgesamt größte nichtzerlegbare Zahl ist das Maximum über alle Restklassen. 6.5 Beispiel (Hähnchen-Nuggets). Durch Erstellen der Restklassentabelle zu den Packungsgrößen 6, 9, 20 rechnet man aus, dass F (6, 9, 20) = 43, so dass man ab 44 jede Anzahl Hähnchennuggets mit den üblichen Packungsgrößen kaufen kann. ♥ 6.6 Satz. Sei d := ggT(a1 , . . . , ak ) der größte gemeinsame Teiler der Elementarmassen. Sei F := F (a1 , . . . , ak ) die Frobenius-Zahl. Es ist F < ∞ genau dann wenn d = 1. Beweis. Ist d ≥ 2, dann sind überhaupt nur Vielfache von d zerlegbar, da jede Elementarmasse ein Vielfaches von d ist. Es gibt also beliebig große nichtzerlegbare Zahlen, und es ist F = ∞. Ist d = 1, dann gibt es (z.B. mit Hilfe des erweiterten Euklidischen Algorithmus) eine Darstellung von d = 1 als ganzzahlige Linearkombination der aj , 1= k X yj · aj mit yj ∈ Z. j=1 Durch Multiplikation mit r erhalten wir eine Darstellung r= k X (ryj ) · aj . j=1 Durch Addition von Vielfachen von a1 sorgen wir dafür, dass die Koeffizienten von allen aj positiv werden: Ist ryj < 0, addieren wir kj a1 aj , mit kj so dass ryj + kj a1 ≥ 0 gilt. Somit bekommen wir ein Element in Restklasse r, das zerlegbar ist, also ist Z(r, k) < ∞. Dies gilt für jede Restklasse r, also ist auch F < ∞. 69 6 Algorithmen der Massenspektrometrie Isotop 12 C 13 C 1H 2H 14 N 15 N 16 O 17 O 18 O 31 P 32 S 33 S 34 S 36 S Masse in 1/6870 Da 82440 89333 6924 13837 96201 103051 109885 116784 123654 212790 219648 226514 233359 247094 Tabelle 6.2: Skalierte und gerundete Massen der Isotope des CHNOPS-Alphabets 6.2.4 Realistisches Beispiel Drückt man die Massen des CHNOPS-Alphabets in 1/6870 Da aus, erhält man eine gute Darstellungsgenauigkeit; der Diskretisierungsfehler ist bei dieser Skalierung besonders klein. Man erhält die in Tabelle 6.2 angegebenen Massen. Angenommen, die Masse 1233932 wird gemessen. Mit Messungenauigkeiten ist zu rechnen; sagen wir ±10/6870 Da. Gesucht sind daher alle Zerlegungen von ganzzahligen Massen im Intervall [1 233 922, 1 233 942]. Sind darunter bekannte oder sinnvolle Moleküle? Natürlich ist auch die Frobenius-Zahl dieses Problems von Interesse. Welches ist die größte nicht exakt zerlegbare Masse? 6.3 Vorhersage von Massenspekten Wie in Tabelle 6.1 zu sehen, gibt es verschiedene Isotope von Elementen mit verschiedenen Massen und Häufigkeiten. Ein Element hat also eine (bekannte) Massenverteilung. Die zufällige Masse eines Elements x kann durch eine Zufallsvariable X beschrieben werden. Die zufällige Summe der Masse mehrerer Elemente x1 , . . . , xn ist dann durch die Summe X1 + · · · + Xn von Zufallsvariablen gegeben. Wir gehen davon aus, dass die Massen mit einer festen Genauigkeit hochskaliert und dann gerundet werden, so dass alle auftretenden Massen natürliche Zahlen sind. Wir nehmen an, dass die Massenverteilung eines Elements durch einen endlichen Wahrscheinlichkeitsvektor p gegeben ist, wobei pm die Wahrscheinlichkeit ist, dass das Element die Masse m hat. Intern können die Vektoren mit vielen Null-Einträgen (“sparse”) platzsparend als Listen von Paaren (m, pm ) mit pm > 0 verwaltet werden. Wir nehmen an, dass die Massen verschiedener Elemente unabhängig sind. Damit ist die Verteilung der Summe der Xi die Faltung der Verteilungen der Xi . Für zwei Zufallsvariablen 70 6.3 Vorhersage von Massenspekten X, Y ist P(X + Y = k) = X j P(X = j, Y = k − j) = X P(X = j) · P(Y = k − j). j Bei mehr als zwei Zufallsvariablen wendet man die Faltung mehrfach an. Die Summe erstreckt sich über die k, für die beide Wahrscheinlichkeiten positiv sind. Die Faltung von zwei Vektoren p = (p0 , . . . , pm ) und q = (q0 , . . . , qn ) ist also definiert als X p ∗ q =: c = (c0 , . . . , cm+n ) mit ck = pj qk−j . j Für die `-fache Faltung von p mit sich schreiben wir p∗` ; z.B. p∗2 = p ∗ p. Zu den Elementen CHNOPS lesen wir aus Tabelle 6.1 die Verteilungen pC , . . . , pS ab. Zu ∗nC ∗nH ∗nN einer Summenformel CnC HnH NnN OnO PnP SnS berechnen wir die Faltung pC ∗ pH ∗ pN ∗ ∗nO ∗nP ∗nS pO ∗ pP ∗ pS . Nachdem zu einer Gesamtmasse (und benachbarten Massen) alle möglichen Massenzerlegungen berechnet wurden, kann der Vergleich eines gemessenen Spektrums mit alles in Frage kommenden theoretischen Spektren helfen, zuverlässiger zu entscheiden, welche Summenformel die richtige ist. Ein Problem dabei ist, dass viele Isotope sehr selten sind und daher auch nur selten beobachtet werden; dadurch unterliegen die beobachteten Intensitäten starken Diskretisierungseffekten: Wenn man erwartet, eine bestimmte Masse 0.7 mal zu sehen, kann es passieren, dass man sie durchaus null mal, ein mal, oder sogar zwei mal sehen. 71 6 Algorithmen der Massenspektrometrie 72 ANHANG A Molekularbiologische Grundlagen Das Ziel der Bioinformatik ist das Lösen von biologischen Problemen mit Hilfe von Informatik, Mathematik und Statistik. Um die zu Grunde liegenden Fragestellungen verständlich zu machen, geben wir in diesem Kapitel eine kurze Einführung in einige wichtige Beriffe und Techniken der molekularen Genetik. Für eine weitergehende Beschäftigung mit dem Thema sei das Buch von Alberts et al. (2007) empfohlen. Dieses Buch hat auch beim Schreiben dieses Kapitels als Quelle gedient. A.1 Desoxyribonukleinsäure (DNA) Die Entdeckung der molekularen Struktur der Desoxyribonukleinsäure (DNA) zählt zu den wichtigen wissenschaftlichen Durchbrüchen des 20. Jahrhunderts (Franklin and Gosling, 1953; Watson and Crick, 1953; Wilkins et al., 1953)1 . DNA ist ein Doppelhelix-förmiges Molekül, dessen Bestandteile zwei antiparallele Stränge aus einem Zucker-Phosphat-Rückgrat und Nukleotid-Seitenketten sind. Die Sprossen“ der Leiter werden aus zwei komplementären ” Basen gebildet; Adenin (A) ist immer mit Thymin (T) gepaart und Cytosin (C) immer mit Guanin (G). Chemisch gesehen bilden sich Wasserstoffbrücken zwischen den jeweiligen Partnern; das Ausbilden dieser Bindungen bezeichnet man auch als Hybridisierung. Abstrakt können wir ein DNA-Molekül einfach als eine Sequenz (String) über dem 4-BuchstabenAlphabet { A, C, G, T } auffassen; die Sequenz des zweiten Strangs erhalten wir durch Bildung des reversen Komplements. Da DNA fast immer doppelsträngig auftritt, ist die DNA-Sequenz AAGCCT äquivalent zu ihrem reversen Komplement AGGCTT. 1 Zur Rolle Rosalind Franklins bei der Bestimmung der DNA-Struktur sei auf die Artikel von Klug (1968) und Maddox (2003) hingewiesen. 73 A Molekularbiologische Grundlagen Chromosom Zellkern Zelle Basenpaar DNA-Doppelstrang Abbildung A.1: Dieses Bild zeigt schematisch die Organisation einer eukaryotischen Zelle. Man sieht, dass sich mit Zellkern verschiedene Chromosomen befinden. Jedes Chromosom besteht aus einem langen DNA-Doppelstrang, der in verschiedenen Organisationsebenen immer weiter aufgerollt ist. Ein DNA-Strang besteht aus einem Zucker-Phosphat-Rückgrat und einer Folge verschiedener Nukleobasen (farbig). Diese bilden Paare mit den Basen des reversen Strangs. (Dieses Bild ist gemeinfrei. Quelle: http://de.wikipedia.org/w/ index.php?title=Datei:Chromosom.svg) DNA enthält durch die Abfolge der Basen also Informationen. In jeder bekannten Spezies (von Bakterien über Pflanzen bis hin zu Tieren und Menschen) wird DNA als Träger der Erbinformationen verwendet. Das bedeutet, dass die kodierte Buchstabenfolge vererbt wird und den Bauplan“ für das jeweilige Individuum enthält. Die gesamte DNA-Sequenz eines ” lebenden Organismus bezeichnet man als Genom. In (fast) allen Zellen eines Organismus befindet sich eine Kopie des Genoms. Man unterscheidet Lebewesen, bei denen die Zellen einen Zellkern besitzen, die Eukaryoten, und solche bei denen das nicht der Fall ist, die Prokaryoten. Bakterien sind zum Beispiel Prokaryoten, während alle Tiere und Pflanzen Eukaryoten sind. Im folgenden behandeln wir nur eukaryotische Zellen. Das Genom besteht in der Regel aus mehreren DNA-Molekülen. Diese Teilstücke sind mit Hilfe spezieller Proteine sehr eng aufgerollt“. Den gesamten Komplex aus einem langen ” DNA-Faden und Strukturproteinen bezeichnet man als Chromosom. In (fast) jeder Zelle eines Organismus befindet sich im Zellkern ein kompletter Satz an Chromosomen. Abbildung A.1 illustriert diese Sachverhalte. 74 A.2 Ribonukleinsäure (RNA) Chromosom DNA-Doppelstrang Rueckwärtsstrang RNA-Polymerase C T GAC GG ATCAGCC GC A AGC GG A A T T GGC G A C A T A A CGGC GUU G A CUGC C UAGU RNA-Transkript G A C T GC C T AG T C GGC G T T C GC C T T AA C C GC T G T A T T Vorwärtsstrang Abbildung A.2: RNA-Polymerase erstellt eine Kopie des Vorwärtsstrangs, indem RNA erzeugt wird, die revers-komplementär zum Rückwärtsstrang ist. (Dieses Bild ist gemeinfrei. Quelle: http://de.wikipedia.org/w/index.php?title= Datei:DNA_transcription.svg) A.2 Ribonukleinsäure (RNA) Die Ribonukleinsäure (RNA) ist ein der DNA sehr ähnliches Kettenmolekül. Neben chemischen Unterschieden im Rückgrat des Moleküls besteht der wichtigste Unterschied darin, das RNA (fast) immer als Einzelstrang auftritt. Ein weiterer Unterschied ist, dass RNA statt der Base Thymin (T) die Base Uracil (U) enthält. Wir können einen RNA-Strang somit als String über dem Alphabet {A, C, G, U} auffassen. Ein Vorgang von zentraler Bedeutung ist die Abschrift von DNA in RNA. Diesen Prozess bezeichnet man als Transkription. Dabei lagert sich ein spezielles Protein, die RNAPolymerase, an den DNA-Doppelstrang an und trennt die Bindungen zwischen den gegenüberliegenden Strängen temporär und örtlich begrenzt auf. An dem nun freiliegenden Teil des Rückwärtsstrangs wird ein zum diesem komplementärer RNA-Strang hergestellt. Die Reaktion schreitet in Rückwärtsrichtung fort; die RNA-Polymerase rutscht“ dabei an der ” DNA entlang. Die Bindung zwischen RNA und DNA-Strang wird durch die RNA-Polymerase sofort wieder getrennt. Die beiden DNA-Stränge binden wieder aneinander. Zurück bleibt ein Kopie der DNA in Form eines RNA-Moleküls und der unveränderte DNA-Strang. Eine schematische Darstellung findet sich in Abbildung A.2. Wichtig ist, dass immer nur ganz bestimmte Regionen der DNA abgeschrieben werden. Üblicherweise bezeichnet man einen solchen Abschnitt als Gen. Eine präzise, allgemein ak- 75 A Molekularbiologische Grundlagen Name Alanin Arginin Asparagin Asparaginsäure Cystein Glutamin Glutaminsäure Glycin Histidin Isoleucin Leucin Lysin Methionin Phenylalanin Prolin Serin Threonin Tryptophan Tyrosin Valin Abkürzung (3 Buchstaben) Ala Arg Asn Asp Cys Gln Glu Gly His Ile Leu Lys Met Phe Pro Ser Thr Trp Tyr Val Abkürzung (1 Buchstabe) A R N D C Q E G H I L K M F P S T W Y V Tabelle A.1: Übersicht über die in Proteinen verwendeten Aminosäuren und ihre ein- bzw. dreibuchstabigen Abkürzungen. zeptierte Definition des Begriffs Gen gibt es allerdings nicht. Die Diskussion um diesen Begriff ist in vollem Gange (Gerstein et al., 2007; Prohaska and Stadler, 2008). A.3 Proteine Neben den Nukleinsäuren (also DNA und RNA) sind die Proteine eine weitere Klasse von biologisch wichtigen Kettenmolekülen. Proteine machen in der Regel ungefähr die Hälfte der Trockenmasse (also des Teils, der nicht Wasser ist) einer Zelle aus. Sie übernehmen sehr unterschiedliche Funktionen: sie fungieren als Enzyme, Antikörper, Membranproteine, Transkriptionsfaktoren, etc. Die Liste ließe sich noch weit fortsetzen. Kurz gesagt: Proteine sind extrem wichtig für das funktionieren von Zellen und ganzen Organismen. Die Bestandteile von Proteinen sind Aminosäuren. Jede Aminosäure enthält eine Carboxylund eine Aminogruppe. Zwei Aminosäuren können mit Hilfe einer sogenannten Peptidbindung miteinander verbunden werden. Dabei verbindet sich die Carboxylgruppe der ersten Aminosäure mit der Aminogruppe der zweiten Aminosäure. Das resultierende Molekül (ein sogenanntes Dipeptid) hat also auf der einen Seite eine freie Aminogruppe und auf der anderen Seite eine freie Carboxylgruppe. Das Ende mit der freien Aminogruppe bezeichnet man als N-Terminus und das Ende mit der freien Carboxylgruppe als C-Terminus. Dort können nun weitere Aminosäuren über Peptidbindungen angekoppelt werden um eine lange Ketten – ein Protein – zu bilden. Die meisten Proteine sind 50 bis 2000 Aminosäuren lang. 76 A.3 Proteine Aminosäure Alanin Arginin Asparagin Asparaginsäure Cystein Glutamin Glutaminsäure Glycin Histidin Isoleucin Leucin Lysin Methionin Phenylalanin Prolin Serin Threonin Tryptophan Tyrosin Valin Stopp-Signal Codons GCA, GCC, AGA, AGG, AAC, AAU GAC, GAU UGC, UGU CAA, CAG GAA, GAG GGA, GGC, CAC, CAU AUA, AUC, CUA, CUC, AAA, AAG AUG UUC, UUU CCA, CCC, AGC, AGU, ACA, ACC, UGG UAC, UAU GUA, GUC, UAA, UAG, GCG, GCU CGA, CGC, CGG, CGU GGG, GGU AUU CUG, CUU, UUA, UUG CCG, CCU UCA, UCC, UCG, UCU ACG, ACU GUG, GUU UGA Tabelle A.2: Genetischer Code: Zuordnung von Aminosäuren zu Codons. Wird bei der Translation ein Stopp-Codon erreicht, endet der Prozess. Die Vielfalt unter den Proteinen entsteht durch die Kombination von 20 verschiedenen Aminosäuren (siehe Tabelle A.1). Die Aminosäuren unterscheiden sich durch die sogenannten Seitenketten. Das sind chemische Komponenten, die neben der Amino- und Carboxylgruppe an dem zentralen Kohlenstoffatom der Aminosäure befestigt sind. Warum im Laufe der Evolution genau diese 20 Aminosäuren als Komponenten aller Proteine ausgewählt wurden ist bisher ungeklärt, denn chemisch lassen sich noch viel mehr Aminosäuren herstellen. Fest steht, dass diese Auswahl sehr früh im Laufe der Evolution stattgefunden haben muss, denn sie ist allen bekannten Spezies gemein. Die Herstellung von Proteinen erfolgt durch die Translation von mRNAs. Die Abkürzung mRNA steht für messenger RNA“ (Boten-RNA). Sie rührt daher, dass die mRNA als Zwi” schenprodukt bei der Herstellung von Proteinen dient. Nachdem ein Gen in eine mRNA transkribiert wurden (vgl. Abschnitt A.2), wird diese mRNA aus dem Zellkern exportiert und danach in ein Protein übersetzt. Dabei kodieren immer drei Basenpaare der RNA eine Aminosäure. Ein solches Tripel nennt man Codon. In Tabelle A.2 ist zu sehen, welche Codons jeweils welche Aminosäure kodieren. Diese Zuordnung bezeichnet mal als genetischen Code. Da es 20 Aminosäuren gibt, aber 43 = 64 mögliche Codons, gibt es Aminosäuren, die durch mehrere Codons dargestellt werden. Die Reihenfolge der Aminosäuren bestimmt die Struktur eines Proteins; deshalb nennt man sie auch Primärstruktur. Nach der Herstellung eines Proteins verbleibt es allerdings 77 A Molekularbiologische Grundlagen Abbildung A.3: Schematische Darstellung eines Proteins. Jede α-Helix ist als Spirale, jedes β-Faltblatt als Pfeil dargestellt. (Dieses Bild ist gemeinfrei. Quelle: http: //en.wikipedia.org/wiki/File:PBB_Protein_AP2A2_image.jpg) nicht in seiner Form als langer Strang, sondern faltet sich. Man kann sich das Vorstellen wie ein Faden, der sich verknäult“. Dies geschiet jedoch nicht zufällig, sondern ist be” stimmt von den Eigenschaften der Aminosäuren-Seitenketten. So gibt es zum Beispiel Aminosäuren, die hydrophob sind; andere sind hydrophil; wieder andere sind positiv/negativ geladen. So wirken verschiedene Kräfte zwischen den einzelnen Aminosäuren und der umgebenden (wässrigen) Zellflüssigkeit sowie zwischen den Aminosäuren untereinander. Diese Kräfte zwingen das Protein in eine ganz bestimmte dreidimensionale Struktur. Das Annehmen dieser Struktur heißt Proteinfaltung. Dabei gibt es bestimmte Bausteine“, die in vielen ” Proteinen vorkommen, nämlich die α-Helix und das β-Faltblatt. Diese Elemente nennt man Sekundärstruktur, während die vollständige 3D-Struktur als Tertiärstruktur bezeichnet wird (siehe Abbildung A.3). Es kommt vor, dass mehrere Proteine sich zu einem Proteinkomplex zusammenschliessen. Ein solcher Komplex heißt dann Quatärstruktur. A.4 Das zentrale Dogma der Molekularbiologie Wir wollen die wichtigsten Prozesse noch einmal zusammenfassen: Abschnitte der DNA (die Gene) werden transkribiert; das Resultat ist mRNA. Aus jeder mRNA wird bei der Translation ein Protein hergestellt. Somit kann man ein Gen als Bauanleitung für ein Protein“ ” bezeichnen. Anders ausgedrückt werden in der DNA kodierte Informationen in RNA und von dort in Proteine übersetzt. Dieses Prinzip ist so wichtig, dass man es als zentrales Dogma der Molekularbiologie bezeichnet. Man muss jedoch anmerken, dass es auch Ausnahmen von dieser Regel gibt. So weiss man heute, dass zum Beispiel auch RNA in DNA übersetzt werden kann. Ein Prinzip, dass sich Retroviren zu Nutze machen. Dennoch hat das zentrale Dogma nichts an seiner Wichigkeit eingebüßt, denn es beschreibt nach wie vor einen sehr wichtigen, wenn nicht den wichtigsten, Prozess in Zellen. 78 A.5 Genregulation A.5 Genregulation Jede Zelle eines Organismus enthält eine exakte Kopie des Genoms. Wie ist es dann möglich, dass es so verschiedene Zellen wie Haut-, Leber, Nerven- oder Muskelzellen gibt? Die Antwort liegt in der Regulation der Gene. Die meisten Gene werden in unterschiedlichen Geweben unterschiedlich stark verwendet; d. h. es kann zum Beispiel sein, dass ein bestimmtes Protein in Nervenzellen in sehr großer Zahl hergestellt wird, während man es in Hautzellen garnicht antrifft. Man sagt dann, das dazugehörige Gen ist unterschiedlich stark exprimiert. Es gibt viele verschiedene Mechanismen, mit denen eine Zelle die Genexpression steuert. Ein wichtiger Mechanismus, auf den wir uns zunächst beschränken wollen, ist die Regulation der Transkription durch Transkriptionsfaktoren. Das sind spezielle Proteine, die an DNA binden können. Diese Bindung erfolgt sequenzspezifisch, das bedeutet ein bestimmter Transkriptionsfaktor bindet nur an eine bestimmte DNA-Sequenz. Solche Sequenzen befinden sich üblicherweise vor Genen auf der DNA in den sogenannten Promoter-Regionen. Ein DNA-Abschnitt an den ein Transkriptionsfaktor binden kann bezeichnet man als Transkriptionsfaktorbindestelle. Sobald sich ein Transkriptionsfaktor an eine Bindestelle angelagert hat, beeinflusst er die Transkription des nachfolgenden Gens. Es gibt sowohl Transkriptionsfaktoren, die das Ablesen eines Gens hemmen, als auch solche, die es fördern. 79 A Molekularbiologische Grundlagen 80 ANHANG B Molekularbiologische Arbeitstechniken Voraussetzung für die moderne Molekularbiologie sind zahlreiche experimentelle Techniken zur DNA-Bearbeitung: Kopieren mit PCR (polymerase chain reaction, Polymerasekettenreaktion): Zyklen von (Denaturierung, Priming, Erweiterung) und Zugabe von dNTP führen zu exponentieller Vermehrung der DNA. Kopieren durch Klonierung in Vektoren: Einfügen von DNA-Abschnitten in Vektoren (DNA sich vermehrender Organismen, z.B. Viren, Bakterien) Cut+Paste mit Restriktionsenzymen: Restriktionsenzyme sind Proteine, die einen DNADoppelstrang an charakteristischen Sequenz-Motiven zerschneiden Beispiele: PvuII (CAG|CTG) oder BamHI (G|GATCC); der Strich (|) kennzeichnet die Schnittstelle. Zusammenkleben durch Hybridisierung und Ligation. Viele der Schnittstellen sind palindromisch, d.h. revers komplementär zu sich selbst. Wenn nicht symmetrisch geschnitten wird, ergeben sich klebende Enden (sticky ends), so dass man die DNA-Fragmente in anderer Reihenfolge wieder zusammensetzen kann. Längenbestimmung mit Gel-Elektrophorese: DNA ist negativ geladen, DNA-Fragmente wandern zu einem positiv geladenen Pol eines elektrischen Feldes durch ein Gel. Das Gel wirkt als Bremse; längere Fragmente sind langsamer. Die DNA wird radioaktiv oder mit fluoreszierenden Farbstoffen sichtbar gemacht. Die Position der sichtbaren Banden im Gel erlaubt eine relativ genaue Längenermittlung der DNA-Fragmente Test auf Präsenz eines DNA-Abschnitts: mittels DNA-Sonden und Hybridisierung (z.B. Microarrays) 81 B Molekularbiologische Arbeitstechniken 82 ANHANG C Genomprojekte und Sequenziertechnologien Ziel eines Genomprojekts: Bestimmung der DNA-Sequenz des gesamten Genoms (Nukleotidsequenzkarte); das Genom wird sequenziert. Vorgehen bei Genomprojekten bis ca. 2004 1. Isolieren der DNA aus Zellkern 2. Zerschneiden der DNA mit Restriktionsenzymen (Enzym oder Enzymkombination, so dass viele Fragmente der Längen 300–1000 entstehen) 3. Einbringen der DNA-Fragmente in Bakterien oder Hefe durch Rekombination 4. Vermehrung dieser Organismen = Klonierung der DNA-Fragmente 5. Erstellung einer Klonbibliothek 6. evtl. Auswahl geeigneter Klone (physikalische Karte) 7. Sequenzierung der Klone mittels Sanger Sequencing 8. Zusammensetzen der überlappenden Fragmente per Computer Man unterscheidet dabei zwei wesentliche Sequenzierstragetien: • Ende 80er / Anfang 90er Jahre: Sequenzieren ist teuer: Kartierung der Klone, sorgfältige Auswahl ist billiger als mehr zu sequenzieren (klonbasierte Sequenzierung) – • Ende der 90er Jahre: Sequenzierung ist relativ billig(er), alles wird sequenziert (whole genome shotgun). Problem, das Genom aus den Stücken der Länge 100-1000 zusammenzusetzen, ist schwieriger. Bis ca. 2004 wurde nahezu ausschließlich Sanger Sequencing verwendet. • TODO 83 C Genomprojekte und Sequenziertechnologien Neue Sequenziertechnologien ab 2005 erlauben höheren Durchsatz und deutlich geringere Kosten. • 454 • Illumina/Solexa • SOLiD • ... 84 Literaturverzeichnis B. Alberts, A. Johnson, J. Lewis, M. Raff, K. Roberts, and P. Walter. Molecular Biology of the Cell. Garland Science, 2007. ISBN 0815341059. R. Franklin and R. Gosling. Molecular configuration in sodium thymonucleate. Nature, 171: 740–741, 1953. M. B. Gerstein, C. Bruce, J. S. Rozowsky, D. Zheng, J. Du, J. O. Korbel, O. Emanuelsson, Z. D. Zhang, S. Weissman, and M. Snyder. What is a gene, post-ENCODE? History and updated definition. Genome Research, 17(6):669–681, 2007. ISSN 1088-9051. doi: 10.1101/gr.6339607. A. Klug. Rosalind Franklin and the discovery of the structure of DNA. Nature, 219:808–844, 1968. B. Maddox. The double helix and the ’wronged heroine’. Nature, 421:407–408, 2003. S. Prohaska and P. Stadler. “Genes”. Theory in Biosciences, 127(3):215–221, 2008. J. Watson and F. Crick. A structure for deoxyribose nucleic acid. Nature, 171:737–738, 1953. M. Wilkins, A. Stokes, and H. Wilson. Molecular structure of deoxypentose nucleic acids. Nature, 171:738–740, 1953. 85