EulerAlign

Werbung
EulerAlign
Ausarbeitung zum Seminar „Aktuelle
Themen der Bioinformatik“ von Kai
Scheiffele
Sommersemester 2004
Inhalt:
1. Einleitung
2. Bisherige Ansätze des Multiplen Alignment
2.1 Progressives Alignieren
2.2 Iteratives Alignieren
3. Die Idee von EulerAlign
4. Der Algorithmus von EulerAlign
4.1 Schritt 1: Graphkonstruktion über k-Tupel
4.2 Schritt 2: Transformation des Graphen in einen DAG
4.3 Schritt 3: Pfadsuche
4.4 Schritt 4: Fast-pariwise Alignment
4.5Schritt 5: Endgültiges multiples Alignment
5. Analyse des Algorithmus
6. Komplexität von EulerAlign
7. Auswahl an Simulationsergebnissen
8. Zusammenfassung und Ausblick
Literatur
2
3
3
3
4
4
6
6
7
11
12
13
13
14
15
18
19
1. Einleitung
Beim multiplen Alignment handelt es sich um ein wesentliches und ziemlich
komplexes Problem in der Bioinformatik. Beruhend auf dem paarweisen Alignment, welches
recht schnell und gut berechnet werden kann und Aussagen über die Ähnlichkeit zweier
DNA- oder Protein-Sequenzen ermöglicht, zielt das multiple Alignment darauf ab, aus einer
Vielzahl von Sequenzen die wesentlichen Kernbereiche (i.d.R. konservierte Regionen)
herauszuarbeiten. Im Folgenden wird das Verfahren EulerAlign vorgestellt, ein relativ neuer
Algorithmus mit sehr interessanten Eigenschaften.
Beispiel für die graphische Darstellung eines paarweise Alignment zweier Sequenzen.
Entnommen aus „Dirk Metzler: Alignment und Stammbaumschätzung für biologische Sequenzen“
2. Bisherige Ansätze des Multiplen Alignment
Das multiple Alignieren ein wohlbekanntes Problem in der Bioinformatik, seit langem
Forschungsgegenstand und dementsprechend vielseitig bearbeitet worden. Die Vielzahl
möglicher Lösungsansätze lässt sich allerdings in zwei ausdifferenzierte Hauptansätze
unterteilen:
2.1
Progressives Alignieren
Die Algorithmen welche progressiv alignieren haben gemein, dass sie ein multiples
Alignment dadurch erreichen, dass sie zunächst die beiden ähnlichsten Sequenzen und danach
immer mehr Sequenzen bzw. Cluster von Sequenzen weiter zusammenclustern. Dies wird
solange fortgesetzt, bis alle ursprünglichen Sequenzen zusammengebracht wurden. Doch auch
das progressive Alignieren lässt sich nach unterschiedlichen Methoden klassifizieren. So gibt
es Algorithmen, welche das Clustern über die Ähnlichkeit ganzer Sequenzen betreiben. So
auch z.B. der populärste Vertreter dieser Gangart CLUSTALW, welches wir auch später
gegen EulerAlign antreten lassen werden. Andere Ansätze wiederum versuchen zunächst
3
einmal konservierte Regionen innerhalb der Ausgangssequenzen zu identifizieren und
clustern dann anhand der Ähnlichkeit dieser Sequenzen. Stellvertretend soll hierfür das
Programm GENALIGN genannt sein.
2.2
Iteratives Alignieren
Beim iterativen Alignment wird von einer ursprünglichen Sequenz ausgegangen, welche
dann im Verlauf iterativer Algorithmen nach und nach lokal optimiert wird. Es wird also
immer nur auf einer einzigen Sequenz gearbeitet, wobei die Veränderungen in den einzelnen
iterativen Schritten in der Regel nur Teile der Sequenz anpassen werden und so (iterativ) die
Sequenz der gesuchten immer ähnlicher wird. Beispiele hierfür sind HMMT oder auch
COFFEE.
3. Die Idee von EulerAlign
Die Idee zum Algorithmus von EulerAlign ist ein Stück weit dem Algorithmus des
Programms EULER entliehen [3], welches der Assemblierung von DNA-Sequenzen dient.
Dabei wird das Problem der Assemblierung einfach auf das Problem des Euler-Path reduziert
(es wird ein Weg durch einen Graphen gesucht – wenn es diesen gibt – auf welchem jeder
Kante des Pfades höchstens einmal verwendet wird). Daher stammt auch der Name
EulerAlign, selbst wenn der Algorithmus (wie wir später sehen werden) kaum etwas mit
einem eulerschen Kreis- oder Pfad-Problem zu tun hat.
EulerAlign geht also einen zu EULER entgegen gesetzten Weg und zerschneidet eine
vorhandene Sequenz in (gleich große) Fragmente – anstatt selbige zusammenzusetzen.
Grundlegend ist dabei die Überlegung, dass man eine Teilsequenz bestehend aus k
Nukleotiden/Proteinen in genau zwei k-1 lange Sequenzen zerlegen kann. Dabei überlappen
sich natürlich die ersten bzw. letzten Buchstaben.
4
Entnommen: Folien zum Seminarvortrag
Da es ja EulerAligns Ziel ist einen Graphen zu konstruieren auf welchem dann im
Folgenden operiert wird, werden diese Fragmente einer Sequenz nun in die Kanten und
Knoten eines Graphen uminterpretiert. So kann man die k-1-langen Teilstücke als Knoten
auffassen, welche ja genau eine k-lange Sequenz determinieren – diese entspricht dann der
zwischen ihnen liegenden, gerichteten Kante.
Entnommen: Folien zum Seminarvortrag
Nun hat man bereits alle Elemente, die man zur Konstruktion eines Graphen benötigt
und damit den Background für den folgenden Algorithmus auf dem die Idee und auch die
Stärke von EulerAlign beruhen (Siehe spätere Testergebnisse).
5
4. Der Algorithmus von EulerAlign
Nachdem die Idee des neuen Ansatzes nun erläutert wurde, wird es Zeit sich den
Algorithmus etwas näher im Detail anzusehen. Dazu werden die fünf Schritte von EulerAlign
mal mehr, mal weniger detailliert vorgestellt. Insgesamt gliedert sich der Algorithmus wie
folgt:
(1) Graphkonstruktion über k-Tupel
(2) Transformation des Graphen in einen DAG
(3) Pfadsuche
(4) Fast-pairwise Alignment
(5) Endgültiges multiples Alignment
Nun zu den einzelnen Schritten:
4.1 Schritt 1: Graphkonstruktion über k-Tupel
Über die im vorherigen Abschnitt vorgestellte Idee sind wir nun in der Lage sämtliche
zu alignierenden Sequenzen in k-Tupel zu zerlegen, welche auch sogleich wieder in Kanten
und Knoten eines Graphen uminterpretiert werden. Dabei geht EulerAlign so vor, dass jedes
k-1-Tupel der Sequenzen einzeln betrachtet wird – zunächst schaut man ob es das
entsprechende Tupel bereits gibt. Wenn ja, wird die neue Kante einfach in den schon
vorhandenen Knoten geleitet, ansonsten einfach ein entsprechender Knoten, samt Kante, in
den Graphen eingefügt. Aus dem so entstehenden gerichteten Graph wird sogar automatisch
ein gewichteter Graph indem man den Kanten einfach als Gewicht die Anzahl ihres
Vorkommens mitgibt. Sprich, wenn wir eine Kante einfügen wollen die bereits existiert,
erhöhen wir stattdessen einfach deren Gewicht um „+1“.
…
…
Entnommen: Folien zum Seminarvortrag (Punkte deuten an, dass dies ein möglicher Teilgraph ist – also links
und rechts weiter verlaufen könnte)
6
Wie wir später sehen werden, beruht das schnelle Berechnen einer Konsensus-Sequenz
gegen welche wir alle Eingabesequenzen alignieren wollen darauf, innerhalb des Graphen
einen „längsten Weg“ von einem Sequenzanfang zu einem Sequenzende zu finden. Dafür
reicht es uns aber nicht einen gerichteten gewichteten Graphen zu haben – denn in diesem
können (und werden in der Regel) Kreise sein, welche jeden Algorithmus zum bestimmen
eines längsten Pfades unmöglich machen. Der nächste (und wohl entscheidende) Schritt im
Algorithmus muss nun also darin bestehen den Graphen kreisfrei zu bekommen, sprich, ihn in
einen „Directed acyclic graph“ (DAG) umzuwandeln.
4.2 Schritt 2: Transformation des Graphen in einen DAG
Bei der Eliminierung der Kreise gibt es zwei unterschiedliche Fälle zu beachten. Im
ersten Fall der „Gabelung“ gibt es keine größeren Schwierigkeiten.
Entnommen: Folien zum Seminarvortrag
Nur eine einzige Sequenz beansprucht einen bestimmten Knoten mehrfach und wir
können einfach den entsprechenden Knoten in zwei Knoten aufspalten, wobei jeweils eine der
zuvor eingehenden Kanten einen eigenen Knoten als neues Ziel erhält.
7
Entnommen: Folien zum Seminarvortrag
Je nachdem wie lang die wiederholte Teilsequenz ist, kann es sein, dass der Kreis
dadurch nur kleiner und das Problem nach hinten verlagert wird, durch rekursives
weiterführen dieses Schemas wird über kurz oder lang der Kreis verschwinden.
Ein wenig anders ist der zweite Fall, die „Kreuzung“ gelagert, da man hier zwischen
sicheren und unsicheren Fällen zu unterscheiden hat, sofern der kritische Knoten nicht nur
von einer sondern von mehreren Sequenzen beansprucht wird.
Entnommen: Folien zum Seminarvortrag
Im einfachsten Fall kreuzen sich allerdings wiederum nur zwei Teilsequenzen ein und
derselben Sequenz (wiederum durch rote und grüne Pfeile dargestellt). Dann wird einfach wie
8
bei einer Gabelung verfahren und durch das hinzufügen eines weiteren Knotens der Kreis
entfernt.
Entnommen: Folien zum Seminarvortrag
Kommt nun aber wie erwähnt eine weitere Sequenz (im folgenden durch die gelben
Pfeile symbolisiert) durch den Knoten ergibt sich die genannte Unterteilung in „sichere“ und
„unsichere“ Transformationen, wobei (wie der Name schon preisgibt) die „sichere“ einfacher
zu handhaben ist. Bei der „sicheren“ Transformation verläuft die Teilsequenz der zweiten
Sequenz parallel zu genau einer der beiden Teilsequenzen der ersten Eingabesequenz.
Entnommen: Folien zum Seminarvortrag
Wie bereits mehrfach gesehen erledigt sich das Problem sozusagen von selbst, wenn
einfach durch das Einfügen eines zusätzlichen Knotens das gesamte Gebilde entzerrt wird.
9
Entnommen: Folien zum Seminarvortrag
Worin liegt nun aber die Schwierigkeit, wenn die zweite Sequenz nicht parallel zu
einer der beiden Teilsequenzen der ersten, sondern erst parallel zur einen und dann parallel
zur anderen, verläuft?
Entnommen: Folien zum Seminarvortrag
Wie bereits oben angesprochen wurde, ist die Kantengewichtung für die später
Ermittlung eines längsten Pfades durch den Gesamtgraphen das A und O – denn in den
Kantengewichten spiegelt sich ja sozusagen die Information über die Konserviertheit einer
Teilsequenz wieder. Je höher das Kantengewicht, desto mehr der Eingabesequenzen
beinhalten die Teilsequenz und desto konservierter ist diese folglich.
Im folgenden Bild sieht man nun, dass durch das (gewohnte) hinzufügen eines Knotens der
Kreis zwar entfernt ist (rote und grüne Teilsequenzen laufen nicht mehr durch den gleichen
Knoten v), allerdings nach dem Verlassen der Knoten die grünen und gelben Teilsequenzen
nicht gemeinsam (also parallel) verlaufen, sondern zunächst getrennt sind, was in diesem Fall
10
natürlich zu einem Informationsverlust führt der bei der Pfadsuche (unbemerkt) zu einer
falschen Wahl der längsten Sequenz führen kann (aber auch nicht muss)!
Entnommen: Folien zum Seminarvortrag
Wie wird nun dieser Unsicherheitsfaktor gelöst? Gar nicht, er wird allerdings auf ein
Minimum reduziert. Ganz einfach dadurch, dass zunächst alle anderen Kreise eliminiert
werden und erst zum Schluss die „unsicheren“ Kreuzungen.
Der Graph liegt also nun nach dem Eliminieren aller Kreise als DAG vor und ist damit
bereit für den nächsten wichtigen Schritt, die Pfadsuche.
4.3 Schritt 3: Pfadsuche
Zhang und Waterman gehen auf diesen Punkt zwar nicht näher ein, sondern
verweisen nur darauf, dass man über die Verwendung eines Greedy-Algorithmus einen
genügend richtigen längsten Pfad in linearer Zeit berechnen kann. Da dieser Punkt später bei
der Frage der Komplexität eine nicht ganz unwichtige Rolle spielt, sei hier zumindest ein
Beispiel für einen möglichen Greedy-Algorithmus präsentiert um zu zeigen, dass Linearzeit
für die Berechnung wirklich ausreichend ist (sofern man eine gewisse Fehlertoleranz
bezüglich des wirklich besten Pfades in Kauf nimmt).
Die Pfadsuche gestaltet sich als „längster Pfad“ Problem, da man die Gewichtung der
Kanten als Längen auffassen kann und so mit dem am höchsten gewichteten Pfad auch den
längsten Pfad sucht. Es sei nicht der Anspruch erhoben, dass der gleich vorgestellte GreedyAlgorithmus wirklich der verwendete bzw. der bestmögliche ist. Doch um einen Einblick in
die Funktionsweise eines solch „gierigen“ Algorithmus zu geben sei hier eine Möglichkeit
gezeigt, wie ein potentiell längster Pfad im gegebenen DAG berechnet werden kann.
Die Idee des folgenden Greedy-Algorithmus ist es, wie der Name schon sagt, in jedem
Schritt „gierig“ die Kante aus einer verbleibenden Kantenmenge zu wählen, welche mit hoher
Wahrscheinlichkeit im gesuchten Pfad enthalten sein wird. So schafft es der Algorithmus in
linearer Zeit zu arbeiten, da er jede Kante maximal einmal in eine Ergebnismenge von Kanten
transferieren kann. Nun also zum Algorithmus, wie er aussehen könnte:
11
Erzeuge Kantenmenge E (mit allen in Schritt 1 ermittelten Kanten).
Erzeuge leere Kantenmenge E’.
Solange noch kein Weg durch Graphen gefunden:
Nimm aus E die Kante mit dem höchsten Gewicht und transferiere sie nach E’.
Überprüfe ob Weg durch Graphen mit E’ möglich ist.
Wenn Weg durch Graphen gefunden:
Gib diesen Pfad aus.
Sonst:
Weiter mit erster Schleifenanweisung.
Da die Anzahl der Schleifendurchläufe durch die Anzahl der zuvor ermittelten Kanten
beschränkt ist, läuft der Algorithmus tatsächlich in linearer Laufzeit, sofern innerhalb der
Schleife konstante Zeit benötigt wird.
Und auch dies lässt sich tatsächlich realisieren, indem man einfach jede Kante mit
Marker-Punkten an beiden Seiten ausstattet. Diese werden markiert, wenn die neue Kante
durch weitere Kanten mit einem Anfangs- oder Endpunkt des Graphen in Verbindung treten
kann. Ein Weg durch den Graph ist also dann gefunden, sobald die neu in E’
hinzugenommene Kante an beiden Seiten markiert ist, also einen Anfangspunkt des Graphen
mit einem Endpunkt verbindet.
Da bis zu diesem Punkt nur die jeweils höchstgewichteten Kanten in die
Ergebnissuche einbezogen wurden besteht auch eine sehr gute Chance, dass es sich
tatsächlich um den „längsten Pfad“ handelt.
Auch das der Algorithmus terminiert liegt auf der Hand, denn bei N vielen Sequenzen
gibt es mindestens N viele Verbindungen zwischen globalen Start- und Endknoten und damit
wird früher oder später auf jeden Fall eine solche Verbindung gefunden.
Typisch für einen Greedy-Algorithmus ist, dass er nicht zwangsläufig mit dem besten
Ergebnis terminiert – dies sollte man bei der Anwendung immer in Überlegungen mit
einbeziehen.
4.4 Schritt 4: Fast-pariwise Alignment
Von dem im vorigen Schritt ermittelten längsten Pfad durch den DAG kann man
einfach durch das Entlanghangeln an diesem Pfad eine Konsensus-Sequenz ablesen. Gegen
diese werden nun sämtliche verwendeten Sequenzen paarweise aligniert. EulerAlign
verwendet hierfür einen Algorithmus, welcher ein „banded pairwise alignment“ ermittelt –
das bedeutet, dass der positionelle Unterschied zwischen zwei Zielbuchstaben durch eine
Konstante berücksichtigt wird.
12
4.5 Schritt 5: Endgültiges multiples Alignment
Aus den jeweiligen Alignments wird dann ein endgültiges und globales Alignment
gebildet. Das paarweise alignieren gegen die Konsens-Sequenz (den längsten Weg durch den
Graphen) garantiert hierbei ein möglichst hohes Maß an Übereinstimmung mit dem wirklich
besten globalen Alignment der verwendeten Sequenzen. Den Grund hierfür werden wir im
nächsten Abschnitt verifizieren.
5. Analyse des Algorithmus
Die entscheidende Idee für die mathematische Analyse von EulerAlign ist die folgende:
Es ist zu Zeigen, dass wenn alle Eingabesequenzen von einer Sequenz S0 abgeleitet sind, und
man die Anzahl der verwendeten Eingabesequenzen immer weiter steigert, so wird der
Konsensus-Pfad des EulerAlign-Algorithmus asymptotisch identisch zu S0 werden.
Dabei sind nun die folgenden (bereits verwendeten) Parameter von Interesse:
 N
die Anzahl der zu alignierenden Sequenzen,
 L
die durchschnittliche Länge der Sequenzen ,
 k
die Größe des zugrunde liegenden Tupels, sowie
 
die Mutationsrate beim Erzeugen der Eingabe.
Des Weiteren definiert man W(e) als das Gewicht einer Kante e, was natürlich von Interesse
ist, da der Algorithmus ja nach einem „längsten Pfad“ sucht und dabei auf genau dieses
Gewichtsmaß zurückgreift.
Es ist nun ein Leichtes sich zu überlegen, dass bei einer Mutationsrate von 0 alle N Sequenzen
identisch zu S0 sind, sowie das Gewicht W(e) = N für jede Kante des „Graphen“ ist. Wenn
nun mutiert wird, werden mehr Kanten mit einem geringeren Gewicht – vornehmlich Kanten
mit einem Gewicht von 1 – im Graphen auftauchen. Mit dem gleichen Maß werden die
entsprechenden Kanten, welche zum Pfad „S0“ gehören an Gewicht verlieren.
Im Graphen mit berücksichtigten Mutationen kann man die Kanten nun sinnvoll in zwei
Klassen (Mengen) unterteilen (welche für die Idee des Beweises essenziell sind): Kanten die
zu S0 gehören, {W(e  S0}, sowie die Menge der Kanten, welche nicht zu S0 gehören, {W(e 
S0}.
Der Nachweis erfolgt nun über das „Large Deviation Theorem for Binomials“ (L.D.T - siehe
[2]) und basiert auf folgender Idee:
Unter Zuhilfenahme des L.D.T. wird nachgewiesen, dass für N∞ das erwartete Minimum
in der Menge der Gewichte der zu S0 gehörenden Kanten min {W(e  S0} größer ist, als das
zu erwartende Maximum in der Menge der Gewichte der nicht zu S0 gehörenden Kanten max
{W(e  S0} ist. Dabei ist von Bedeutung, dass man annehmen kann, das die eingestreuten
Mutationen normalverteilt sind – wählt man die Größe der Tupel, also k, entsprechend groß,
13
konvergiert die Anzahl der Tupel welche mutiert sind und öfter als einmal vorkommen sehr
schnell gegen 0 wenn man die Anzahl der Sequenzen, also N, erhöht.
Ist dieser Nachweis erbracht, so kann man sich leicht überlegen, dass der Algorithmus mit
steigender Anzahl an Eingaben auch mit immer größerer Sicherheit S0 als Konsensus-Pfad
ermitteln wird und so ein möglichst gutes Alignment garantiert.
6. Komplexität von EulerAlign
Es sei nun die Komplexität von EulerAlign betrachten. Das Ergebnis wird sein, dass der
Algorithmus sehr effizient und entsprechend praxistauglich ist, was auch schon eine erste
Ahnung rechtfertigt wie das Programm später beim Testlauf gegen das etablierte Programm
CLUSTALW abschneiden wird.
Zunächst zum zeitlichen Aufwand:
(1)
Wie in Schritt 1 gesehen, müssen wir zunächst aus den vorhandenen Sequenzen
einen Graphen bauen und in einen DAG umformen, was allein durch die Anzahl
der Sequenzen N und der Länge L determiniert wird.  also beträgt der Aufwand
dafür etwa O(NL).
(2)
bei der Suche nach dem Längsten Pfad kommt uns zugute, dass das
Eingabealphabet endlich und i.d.R. klein ist (4 Nukleotide bzw. 20 Aminosäuren).
Damit hat jeder Knoten auch nur eine durch diese Konstante beschränkte Anzahl
von eingehenden/ausgehenden Kanten – denn von einem Knoten führt eine Kante
zu einem Knoten, bei welchem das „Sequenz-Raster“ nur um eine Position
verschoben ist. Die Anzahl der Kanten (welche ja linear die Komplexität des
Greedy-Algorithmus bestimmen) ist also durch O( Σ NL)  also O(NL)
beschränkt.
 Dementsprechend ergibt sich eine Gesamtlaufzeit beschränkt durch O(NL).
Zum Speicheraufwand:
Dieser ist auf den Platzbedarf für die Knoten samt ihrer Randdaten beschränkt und
hängt neben der Gesamtzahl der Buchstaben (also auch wieder NL) von dem
gewählten k ab, da dies für den Grad der Zerstückelung der Sequenzen und den damit
verbundenen redundanten Überschneidungshäufigkeiten zusammenhängt.
 also O(k NL), was auch sehr effizient ist.
Zusammenfassend lässt sich sagen, dass EulerAlign also sowohl in Bezug auf Rechenzeit,
als auch was den Platzbedarf angeht höchst effizient ist – gerade mal durch einen konstanten
Faktor größer als die Eingabe!
14
7. Auswahl an Simulationsergebnissen
Zum Vergleich mit bestehenden Algorithmen wurde repräsentativ CLUSTALW als
Gegner für EulerAlign ausgewählt und hinsichtlich vier Größen miteinander verglichen. Als
da wären: Sum-of-pairs, Aligning Alignment Score, Identity bezüglich der Qualität der
ermittelten multiplen Alignments, als auch noch die Laufzeit als Maß der effizienten
Geschwindigkeit. Die Ergebnisse folgen nun im Einzelnen: (In den folgenden Ausführungen
steht N für die Anzahl der Sequenzen, L (= 500) für deren Länge und  (=5,2%) für die beim
Erzeugen der Daten angelegten Mutationsrate.)
Sum-of-pairs (SP):
Sum-of-pairs ist ein sehr gebräuchliches Scoring-Schema zur Bewertung von
Alignments zwischen equidistanten Sequenzen. Das heißt, die Sequenzen sollten alle
evolutionär „ähnlich weit“ voneinander entfernt liegen. Das genaue Bewertungsschema liegt
zwar nicht vor, doch es ist davon auszugehen, dass andere Bewertungszahlen zu einem
vergleichbaren Ergebnis führen werden. Erwähnt sei darüber hinaus noch, dass der SP-Wert
durch die Anzahl der möglichen Paare normiert ist (also: N(N-1)/2).
800
700
600
SP
500
EA
400
CLW
300
200
100
0
6
10
15
50
100
500
N
Eigene Darstellung. Daten aus [1]
Es wird beim Betrachten des Diagramms schnell klar, dass für gegebene Länge und
Mutationsrate EulerAlign (EA) und CLUSTALW (CLW) bei einer geringen Anzahl N
durchaus vergleichbare Werte abliefern. Je größer die Anzahl der Sequenzen gewählt wird,
desto offensichtlicher zeigt sich, dass EA nahezu konstant im Wert bleibt und nur sehr leicht
ansteigt, CLW allerdings sehr stark in seiner Fehlerzahl (ausgedrückt durch den bestrafenden
Punktewert) ansteigt. Bezüglich Sum-of-pairs macht also eindeutig EA das Rennen.
Aligning Alignment Score (AA):
15
Auch AA ist ein spezifisches Scoring-Schema, welches aber auf der Existenz
phylogenetischer Stammbäume beruht. Kennt man den phylogenetischen Baum, so ist es ein
Leichtes auf diesem basierend eine Fehlerfunktion anzuwenden um die Ergebnisse zwei
verschiedener Verfahren zu vergleichen. Da die für den „EA vs. CLW“-Vergleich
verwendeten Daten zuvor selbst generiert wurden ist auch der phylogenetische Stammbaum
bekannt und AA wird so zu einem sinnvollen Vergleichsverfahren.
700
600
AA
500
400
EA
300
CLW
200
100
0
6
10
15
50
100
500
N
Eigene Darstellung. Daten aus [1]
Bei der Analyse der Ergebnisse zeigt EA bereits bei einer kleinen Anzahl von
Sequenzen seine Stärke gegenüber CLW. Während bei EA die zur Anzahl der Sequenzen
normierte Fehlerzahl nahezu konstant bleibt, bzw. tendenziell leicht ansteigt, werden die
Ergebnisse von CLW deutlich schlechter. Wiederum kann EA CLW insbesondere bei
steigender Zahl von Eingabesequenzen deutlich schlagen.
Identity (ID):
ID ist ein Vergleichsparameter, welcher sich nach folgender Formel errechnet:
ID = (ijk, i<j Iijk) / (ijk, i<j I) x 100%
k wird in dieser Formel als durchlaufende Sequenznummerierung verwendet, i und j
sind Positionen in der k-ten Sequenz. I ist 1, wenn eine Übereinstimmung zwischen dem
ermittelten Alignment und dem wirklichen Alignment (auch hier kommt einem wiederum die
Selbstgenerierung der Daten und somit das Wissen um das wirkliche Alignment zugute).
Damit wird wirklich eine prozentuale Vergleichbarkeit von wirklichem Alignment und
ermittelten Alignment – und damit auch ein Maß zum Vergleich zweier Methoden.
16
120
100
%
80
EA
60
CLW
40
20
0
6
10
15
50
100
500
N
Eigene Darstellung. Daten aus [1]
Da ein Ergebnis von 100% ja eine absolute Übereinstimmung bedeutet, schneidet
natürlich bei diesem Bewertungsschema das Verfahren am besten ab, welches den höchsten
prozentualen Wert vorweisen kann – auch hier hat wiederum EA die Nase vor, insbesondere
wenn es darum geht eine große Anzahl von Sequenzen zu alignieren!
Laufzeit:
Wenn es um das Alignieren kleiner und kurzer Sequenzen geht kann man dies auch
noch sehr genau per Hand erledigen. Die eigentliche Herausforderung besteht (wie eingangs
schon erwähnt) darin, viele (mitunter sehr lange) Sequenzen zu alignieren. Da bisher
verwendete Verfahren und Algorithmen allerdings i.d.R. mit quadratischer Laufzeit zurande
kommen müssen, sind der Praktikabilität bei steigender Sequenzzahl sehr schnell Grenzen
gesetzt. Da nun aber in der Forschung Fragestellungen auftauchen wo es interessant wird
einige Tausend Sequenzen zu alignieren, welche jeweils durchaus einige Millionen
Nukleotide aufweisen können, ist Geschwindigkeit ein sehr wichtiges Gütekriterium. Dabei
kann EulerAlign wirklich mit großen Geschützen aufwarten, wie die folgendes Diagramm
zeigt:
100000
Zeit [sec.]
10000
1000
EA
CLW
100
10
1
6
10
15
50
100
N
Eigene Darstellung. Daten aus [1]
17
500
Die Tests wurden alle auf einem SUN-Rechner mit einer CPU-Geschwindigkeit von
750 MHz durchgeführt, die jeweiligen Laufzeiten für EA und CLW in Sekunden im
Diagramm dargestellt. Für das maximale Testset (500 Sequenzen der Länge 500) benötigt EA
gerade mal etwas über 2 Minuten, CLW hingegen beinahe 4 Stunden (man beachte die
logarithmische Skalierung des Diagramms). Dieses Ergebnis bedarf wohl kaum einer näheren
Bewertung.
8. Zusammenfassung und Ausblick
Zusammenfassend lässt sich sagen, dass es eine revolutionäre Idee ist das Problem des
Alignierens einfach auf ein anderes Problem, in diesem Fall ein Graphtheoretisches Problem,
zu reduzieren. Auf diese Weise ist es gelungen, mit (aus EULER) bekannten Ansätzen nicht
nur bessere Ergebnisse zu produzieren (siehe Auswertung von SOP, AA und ID), sondern
diese sogar in einer signifikant schnelleren Berechnungszeit zu erhalten. Es bleibt offen, ob
das so möglich gewordene Verarbeiten einer solch großen Menge von Eingabesequenzen
wirklich auch zu einem exponentiellen Anstieg des Erkenntnisgewinns führt, doch die
Chancen dazu sind allemal als sehr gut zu bewerten. Es bleibt also abzuwarten wie sich das
Verfahren in der explorativen Praxis bewährt.
Weiterhin offene Probleme seien auch nicht unverschwiegen. So ist die Wahl eines
geeigneten „k“s derzeit noch ein von Hand zu lösendes Problem, welches viel Erfahrung und
Fingerspitzengefühl benötigt. Denn, wählt man k zu groß, so stellt sich nur bei extrem
niedriger Mutationsrate ein zufrieden stellender Konsensus-Pfad ein – andererseits führt ein
zu kleines k nicht zwangsläufig zu eindeutigen Sequenzabschnitten, will heißen: die
Wahrscheinlichkeit Sequenzabschnitte als „gleich“ zu behandeln obwohl sie nichts
miteinander zu tun haben steigt sehr stark an! Schön wäre also ein terminierendes Verfahren,
welches möglichst gut das beste zu verwendende k liefert.
Weiterhin ist bereits in der Beschreibung des Algorithmus das Problem aufgetaucht, dass
das (zwingend notwendige) Eliminieren der Kreise innerhalb des Graphen mitunter zu einem
Informationsverlust führt, welcher im schlimmsten Falle negative Auswirkungen auf das
Ergebnis haben könnte. Es sollten daher auch Veränderungen im Algorithmus angedacht,
getestet und ggf. verifiziert werden, die einen möglichst geringen bzw. nicht existenten
Informationsverlust garantieren. Eine Möglichkeit könnte darin bestehen, bei dem Entzerren
der gesehen „unsicheren Transformationen“ einen neuen Kantentyp zu entwickeln, welcher
dann bei der folgenden Pfadsuche in geeigneter Form mitberücksichtigt wird.
Ein letzter offener Punkt ist der des Auffindens geeigneter Scoring-Verfahren für das
Alighnieren. Dies ist allerdings kein EulerAlign-spezifisches Problem, sondern generell
offener Forschungsgegenstand aller Formen des paarweisen- bzw. multiplen-Alignierens.
18
Literatur:
[1]: Zhang, Y., Waterman, M.S. 2003. An Eulerian Path Approach to Global Multiple
Alignment for DNA Sequences. Journal of Computational Biology. Vol.10, 6, 803-819
[2]: Arratia,R., and Gordon,L. 1989. Tutorial on large deviations fort he binomial distribution.
Bull. Math. Biol. 51, 125-131.
[3]: Pevzner, P.A., Tang, H., Waterman,M.S. 2001. An Eulerian path approach to DNA
fragment assembly. Proc. Natl. Acad. Sci. USA 98, 9748-9753.
19
Herunterladen