Um alle Funktionen dieser Seite zu nutzen, aktivieren Sie bitte die Cookies in Ihrem Browser.
my.bionity.com
Mit einem my.bionity.com-Account haben Sie immer alles im Überblick - und können sich Ihre eigene Website und Ihren individuellen Newsletter konfigurieren.
- Meine Merkliste
- Meine gespeicherte Suche
- Meine gespeicherten Themen
- Meine Newsletter
Needleman-Wunsch-AlgorithmusDer Needleman-Wunsch Algorithmus berechnet fuer allgemeine Gap-Kosten das globale Alignment bzw. den global optimalen Similarity-Score zweier Sequenzen a und b. Er verwendet die Programmiermethode der dynamischen Programmierung. Weiteres empfehlenswertes Fachwissen
Das VerfahrenDer Needleman-Wunsch-DP-Algorithmus berechnet in einer Matrix für alle Paare von möglichen Präfixen der Sequenzen a und b den optimalen globalen Similarity-Alignment-Score. Das Element i,j der Matrix enthält den optimalen Score für das optimale globale Alignment der Teilsequenz a[0..i] von a und b[0..j] von b. Die Schreibweise a[0..i] entspricht dem i-ten Praefix von a. Wenn m die Sequenzlänge von a bzw. n die Sequenzlänge von b bezeichnet, dann enthält die Score-Matrix M m + 1 Zeilen und n + 1 Spalten. Der Alignment-Score der vollständigen Sequenzen ist nach der Ausführung des Algorithmus in M(m,n) enthalten. Die Score-Matrix wird rekurrent berechnet. Für das Element (i,j) der Matrix M wird über drei Fälle maximiert. Die Erweiterung des bisherigen Alignments der Sequenzen a[0..i − 1] und b[0..j − 1] um ein Match bzw. Mis-Match, entspricht der Addition des zuvor berechneten Scores aus M(i − 1,j − 1) und der Kosten für die Ersetzung von a[i] zu b[i]. Die Erweiterung eines schon berechneten Aligments um eine abschließende Löschung, entspricht der Addition der allgemeinen Gap-Kosten der Länge der Löschung zu dem Score des optimalen Alignments der Sequenzen a[0..i − k] und b[0..j], wobei k die Länge der Löschung bezeichnet. Analog zur Löschung entspricht die Erweiterung eines optimalen Alignments der Sequenzen a[0..i] und b[0..j − l] um eine abschließende Einfügung der Addition des Scores dieses Alignments und der Gap-Kosten für die Länge l der Einfügung. Der maximale Wert dieser drei Alternativen wird im Element M(i,j) gespeichert. Die Gap-Kostenfunktion kann allgemein sein. D.h. es wird nicht vorausgesetzt, dass einheitliche Kosten oder Affine-Gap-Kosten verwendet werden. Die bisher informell beschriebenen Matrix-Rekurrenzen sind im nächsten Abschnitt formal aufgeschrieben. Um die Abhängigkeiten der Rekurrenz nicht zu verletzen, muss die Score-Matrix zeilen- oder spaltenweise berechnet werden. Das Alignment kann durch Backtracking ausgegeben werden. Als ein mögliches Backtracking-Verfahren kann man während der Berechnung der Score-Matrix in einer Hilfs-Matrix für jedes Element (i,j) speichern, ob der maximale Wert durch eine Einfügung, Löschung oder durch ein Match berechnet wurde. Vom Element (n,m) der Matrix M kann nach der vollständigen Berechnung der Matrix der Pfad zur Berechnung des maximalen zurückverfolgt und dabei das optimale Alignment konstruiert werden. Für zwei Sequenzen existieren in einer Matrix ein oder mehrere optimale Pfade in einer Score-Matrix die zu dem optimalen Score führen, ebenso wie für zwei Sequenzen mehrere Alignments existieren können, welche den optimalen Score besitzen. Matrix-RekurrenzenSpezifikation des Algorithmus durch Matrix-Rekurrenzen: M(0,0) = 0
BeispielAnhand eines kleinen Beispiels werden hier die Schritte des Algorithmus' vorgestellt. Als Bewertungsfunktion wird die folgende Funktion benutzt:
a = ACGTC und b = AGTC Zum besseren Verständnis kann man sich vorstellen, dass die Zeilen mit den Buchstaben aus Sequenz a gelabelt sind und die Spalten mit den Buchstaben aus Sequenz b. Mathematisch gesehen macht dies innerhalb der Matrix keinen Sinn, deshalb ist dies hier nur zur Anschauung.
Die Einträge der Matrix D(i,j) für die erste Zeile und die erste Spalte wird wie oben beschrieben gefüllt. Die Bewertung für den Eintrag D(1,0) wird berechnet aus der darüberliegenden Bewertung D(i − 1,j) = D(0,0) = 0 und dem Score an der Stelle w(ai,bi) = w(a1, − ) = w(A, − ) = − 1. Also D(1,0) = 0 + ( − 1) = − 1 die anderen Werte werden nun analog berechnet.
1. Schritt: Berechnung von D(1,1):
2. Schritt: Berechnung von D(1,2):
Die gefüllte Matrix sieht nach vollständiger Ausführung der o.a. Schritte folgendermaßen aus:
Die Bewertung dieses Alignments ist 3. Das dazugehörige Alignment sieht so aus:
Berechnet wird es durch ein Traceback.
Wahl der BewertungsfunktionDie Wahl der Bewertungsfunktion hat einen großen Einfluss auf die Ergebnisse, die man durch den Needleman-Wunsch-Algorithmus erhält. Eine einfach Bewertungsfunktion wie oben gewählt spiegelt keinesfalls den biologischen Hintergrund eines Alignments wieder und ist deshalb für praktische Zwecke eher ungeeignet. Die im Moment gebräuchlichsten Bewertungsfunktionen lesen die Bewertung aus einer sogenannten Scoring Matrix aus. Für Proteine kann man die PAM- oder Blosum-Matrizen benutzen. Diese Matrizen mit der Größe 20*20 (bzw. 24*24, wenn noch einige Sonderfälle beachtet werden) enthalten Bewertungen (sogenannte log-odds) dafür, dass eine Aminosäure durch eine andere substituiert wird. Die log-odds basieren auf Wahrscheinlichkeiten. Berechnet werden diese Scoring-Matrizen ebenfalls aus Sequenzalignments. Die oben verwendete Bewertungsfunktion wird benutzt um die Ähnlichkeit zweier Sequenzen zu bestimmen. Um nun die Distanz bestimmen zu können kann man einfach die Bewertungsfunktion ändern, d. h. bei Ungleichheit kann man einen positiven Wert zurückgeben, welcher als Strafe interpretiert werden kann und bei Gleichheit 0 oder einen negativen Wert. Es muss allerdings beachtet werden, dass in der Rekursion bei einer distanzbasierten Bewertungfunktion nicht das Maximum, sondern das Minimum ermittelt werden muss. Ein Beispiel für eine distanzbasierte Bewertungsfunktion:
KomplexitätDie Laufzeit des Needleman-Wunsch Algorithmus liegt in O(max(n,m)3). Es müssen Elemente der Matrix berechnet werden, und für jedes Element muss über O(n) + O(m) Elemente maximiert werden. Dies läßt sich einfach aus den Matrix-Rekurrenzen ableiten. Der Speicherbedarf liegt in O(nm). AbgrenzungIn dem Needleman-Wunsch Paper von 1970 sind keine Matrix-Rekurrenzen enthalten, der Algorithmus wird dort informell beschrieben; die Matrix-Rekurrenzen ergeben sich aus dieser Beschreibung. In mancher Literatur wird der Standard O(n2) DP-Algorithmus zur Berechnung des globalen Alignments unter einheitlichen Kosten fälschlicherweise als Needleman-Wunsch-Algorithmus bezeichnet (Gusfield 1999, ein Beispiel sind alte Versionen dieses Artikels). Dies ist allerdings eine Spezialisierung des Needleman-Wunsch Algorithmus, da bei der Verwendung einheitlicher Kosten für die Edit-Operationen nur die drei benachbarten Zellen beachtet werden müssen. Aufgrund der kubischen Laufzeit wird der Needleman-Wunsch-Algorithmus in der Praxis nicht eingesetzt. Bei Beschränkung auf einheitliche Kosten kann mit oben beschriebener Optimierung das optimale Alignment in O(n2) berechnet werden. Mit dem Gotoh-Algorithmus kann das optimale Alignment bei affinen Gap-Kosten in quadratischer Laufzeit berechnet werden. Der Hirschberg-Algorithmus berechnet ein globales Alignment bei einheitlichen bzw. affinen Gap-Kosten auf linearem Speicherplatz O(m + n) in Zeit Θ(mn) und der Smith-Waterman-Algorithmus berechnet das optimale lokale Alignment zweier Sequenzen. Speicher-AbschätzungDer Algorithmus ist daher für lange Alignments eher ungeeignet. Wenn man davon ausgeht, dass man Integerwerte speichert und diese in Java 4 Byte Speicher belegen, kommt man bei einem Alignment von 10.000 * 10.000 Buchstaben schon auf 100.000.000 * 4 Byte 381 MegaByte. Die Alignierung ganzer Genome lässt sich so allerdings noch nicht optimal durchführen. (Ein mittleres Bakteriengenom hat ca. 1 - 4 Millionen Basenpaare. Das menschliche Genom z.B. hat ca. 3 Milliarden Basenpaare). Abgesehen davon ist die Array-Größe in Java auf 2 GB beschränkt und ein globales Alignment ganzer Genome hat nicht unbedingt einen hohen biologischen Erkenntnisgewinn. Literatur
|
|
Dieser Artikel basiert auf dem Artikel Needleman-Wunsch-Algorithmus aus der freien Enzyklopädie Wikipedia und steht unter der GNU-Lizenz für freie Dokumentation. In der Wikipedia ist eine Liste der Autoren verfügbar. |