Smith-Waterman-Algorithmus

Smith-Waterman-Algorithmus

Der Smith-Waterman-Algorithmus ist ein Algorithmus, der den optimalen lokalen Alignment-Score (similarity score) bzw. das optimale lokale Alignment zwischen zwei Sequenzen berechnet. Ein Sequenzalignment ist eine Folge von Edit-Operationen (wie z. B. Zeichenersetzung, Einfügung, Löschung), die die eine Sequenz in die andere überführt. Die einzelnen Operationen haben einen Score und der Alignment-Score ist als die Summe der Edit-Operations-Scores definiert. Ein lokales Alignment ist eine Folge von Edit-Operationen um eine Teilsequenz der ersten Sequenz in eine Teilsequenz der anderen Sequenz zu überführen, d.h. bei der Optimierung kann eine Folge von Einfüge- und Lösch-Operationen am Anfang und Ende ignoriert werden, wenn dies den Alignment-Score verbessert. Diese ignorierten Operationen sind nicht Teil des lokalen Alignments.

Die Eingabe-Sequenzen können Zeichenketten über verschiedenen Alphabeten sein, z. B. in der Bioinformatik wird der Smith-Waterman-Algorithmus auf DNA-Sequenzen oder Aminosäuresequenzen angewendet. Ein Anwendungsfall ist z. B. die Suche nach Genen (in neu-sequenzierten Genomen), deren Sequenz einer bekannten Gen-Sequenz in einem andern Organismus ähnelt, wobei das Edit-Operations-Modell biologische Veränderungen während der Evolution approximiert.

Der Algorithmus verwendet die Methode der Dynamischen Programmierung und seine Laufzeit ist quadratisch. Er wurde 1981 von Temple Smith und Michael S. Waterman entwickelt und ist eine Variante des Needleman-Wunsch-Algorithmus, der das globale Alignment berechnet.

Inhaltsverzeichnis

Lokales Alignment-Problem

Der Smith-Waterman-Algorithmus löst das lokale Alignment-Problem:

Geben seien zwei Sequenzen a und b, sowie eine Alignmentbewertung w. Gesucht sind alle optimalen lokalen Alignierungen, das sind globale Alignierungen von Teilsequenzen a' und b', die die Bewertungsfunktion w optimieren, mit a' = a_x\ldots a_{x'}, b' = b_y\ldots b_{y'}, 0\leq x\leq x'<|a|, 0\leq y\leq y'<|b|.

Motivation

Die Berechnung des optimalen lokalen Alignment hat eine andere Anwendung als die Berechnung des optimalen globalen Alignment.

Die Betrachtung von globalen Alignments ist sinnvoll, wenn man davon ausgehen kann, dass die zu vergleichenden Sequenzen relativ ähnlich sind, z. B. Sequenzen gleicher Länge aus einer Proteinfamilie.

Wenn man allerdings nach lokalen Übereinstimmungen (=Similarities) in Sequenzen, die in anderen Bereichen sehr unterschiedlich sein können, suchen möchte, so ist die Betrachtung von lokalen Alignments sinnvoller. Denn ein optimales globales Alignment könnte in diesem Fall diese lokalen Übereinstimmungen verdecken, da es seinen Score in Hinblick auf die gesamte Sequenz maximieren muss, z. B. einzelne Motive in verschiedenen Proteinsequenzen.

Abgrenzung zum Needleman-Wunsch-Algorithmus

Der Needleman-Wunsch-Algorithmus berechnet das globale Alignment von zwei Sequenzen. Um das lokale Alignment-Problem zu lösen, sind an dem Needleman-Wunsch-Algorithmus zwei Modifikationen notwendig:

  1. Initialisierung der ersten Spalte und der ersten Zeile mit 0
  2. Maximierung über einen vierten Fall, nämlich 0

Der lokale Alignment-Score steht nicht in der rechten unteren Ecke der Score-Matrix, sondern irgendwo in der Matrix. Es ist der Eintrag mit dem größten Wert in der Matrix.

Das optimale lokale Alignment erhält man durch Backtracking von dem Matrix-Eintrag mit dem größten Wert bis zu einem 0-Eintrag in der Matrix.

Wie bei der Berechnung des globalen Alignment können auch mehrere optimale lokale Alignments von zwei Sequenzen existieren. Also können mehrere maximale Werte in der Score-Matrix existieren, und für jeden optimalen Wert sind auch mehrere unterschiedliche Backtraces möglich.

Matrix-Rekurrenzen

Spezifikation des Algorithmus durch Matrix-Rekurrenzen:


Input

  • a,b … Zeichenketten über einem Alphabet Σ mit
    • m = length(a)
    • n = length(b)
  • w(c,d) … Alignment-Score-Funktion mit


Rekurrenzen

  • H(i,j) gibt den maximalen Alignment-Score zwischen einem Suffix von den ersten i Zeichen von a und einem Suffix von den ersten j Zeichen von b an
  • H(i,0) = 0,\; 0\le i\le m
  • H(0,j) = 0,\; 0\le j\le n
  • H(i,j) = \max \begin{Bmatrix}
0 & \text{das leere Suffix} \\
H(i-1,j-1) + \ w(a_i,b_j) & \text{Match bzw. Mismatch} \\
H(i-1,j) + \ w(a_i,-) & \text{Deletion} \\
H(i,j-1) + \ w(-,b_j) & \text{Insertion}
\end{Bmatrix}
,\; 1\le i\le m, 1\le j\le n

Effizienz

Die Laufzeitkomplexität des Smith-Waterman-Algorithmus ist in O(nm) und der Speicherbedarf in O(nm). Dies kann man einfach aus den Matrix-Rekurrenzen ableiten.

Weil man die Score-Matrix zeilen- bzw. spaltenweise berechnen kann, braucht man jeweils nur die aktuelle und die letzte Zeile bzw. Spalte zu speichern, wenn man nur den Score und nicht das Alignment berechnen möchte. In dem Fall liegt der Speicherbedarf in O(n) bzw. O(m).

In linearem Speicherbedarf kann man auch das lokale Alignment mit Hilfe der Programmiermethode Divide-and-Conquer berechnen. Siehe Hirschberg-Algorithmus.

Beispiel

Input

  • Sequenz a = TCCG
  • Sequenz b = ACGA
  • w(x,y)=\begin{cases}
+2&\text{wenn }x=y\text{ (match)}\\
-1&\text{wenn }x=-\text{ oder }y=-\text{ oder }x\ne y\text{ (mismatch)}
\end{cases}


H =
\begin{pmatrix}
 &-&A&C&G&A \\
-&0&0&0&0&0 \\
T&0&0&0&0&0 \\
C&0&0&2&1&0 \\
C&0&0&2&1&0 \\
G&0&0&1&\mathbf{4}&3 \\
\end{pmatrix}

Für das optimale lokale Alignment wird bei der Zahl 4 begonnen und diagonal zurückgewandert, was als Ergebnis des Alignments CG (aus Sequenz a) mit CG (aus Sequenz b) liefert. Dies scheint bei diesem einfachen Beispiel trivial, bei längeren Sequenzen jedoch ist das Ergebnis nicht mehr auf einen Blick aus der Angabe abzulesen.

Literatur

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Waterman — ist der Name folgender Personen: Alan Tower Waterman (1892–1967), US amerikanischer Physiker Alex Waterman (* 1975), US amerikanischer Cellist und Komponist Boy Waterman (* 1984), niederländischer Fußballer Charles W. Waterman (1861–1932), US… …   Deutsch Wikipedia

  • Needleman-Wunsch-Algorithmus — Der Needleman Wunsch Algorithmus ist ein Verfahren der Bioinformatik. Er wird für den Vergleich zweier Sequenzen (häufig zweier DNA oder Aminosäuresequenzen) genutzt. Hierfür ermittelt er das globale Alignment, d. h. eine Zuordnung der… …   Deutsch Wikipedia

  • Michael S. Waterman — (* 28. Juni 1942 in Coquille, Oregon[1]) ist ein US amerikanischer Pionier der Bioinformatik. Michael Waterman Waterman wuchs in Bandon (Oregon) auf und studierte Mathematik an der Oregon State University mit dem Bachelor Abschluss 1964 und Ma …   Deutsch Wikipedia

  • Sequenzalignment — Ein Alignment (englisch: Abgleich, Anordnung, Ausrichtung), im Deutschen oft auch Alignierung oder Alinierung genannt, dient dem Vergleich zweier oder mehrerer Strings (technischer Begriff für Zeichenfolge, Sequenz) und wird besonders häufig in… …   Deutsch Wikipedia

  • Levenshtein-Distanz — Die Levenshtein Distanz zwischen zwei Zeichenketten ist die minimale Anzahl von Einfüge , Lösch und Ersetz Operationen, um die erste Zeichenkette in die zweite umzuwandeln. Benannt ist die Distanz nach dem russischen Wissenschaftler Wladimir… …   Deutsch Wikipedia

  • Dynamic programming — Dynamische Programmierung ist ein Paradigma zum algorithmischen Lösen von Optimierungsproblemen. Der Begriff wurde in den 1940er Jahren von dem amerikanischen Mathematiker Richard Bellman eingeführt, der diese Methode auf dem Gebiet der… …   Deutsch Wikipedia

  • Dynamisches Programmieren — Dynamische Programmierung ist ein Paradigma zum algorithmischen Lösen von Optimierungsproblemen. Der Begriff wurde in den 1940er Jahren von dem amerikanischen Mathematiker Richard Bellman eingeführt, der diese Methode auf dem Gebiet der… …   Deutsch Wikipedia

  • DNS-Sequenzanalyse — Eine DNA Sequenzanalyse ist in der Molekularbiologie und Bioinformatik die automatisierte, computergestützte Bestimmung von charakteristischen Abschnitten, insbesondere Genen, auf einer DNA Sequenz. Untersucht werden die bei der DNA Sequenzierung …   Deutsch Wikipedia

  • Blocks Substitution Matrix — Die BLOSUM62 Matrix BLOSUM (BLOcks SUbstitution Matrix[1]) ist eine evidenzbasierte Substitutionsmatrix, die für Sequenzalignment von Proteinen benutzt wird und spielt neben der Point Accepted Mutation Matrix (PAM Matrix) eine wichtige Rolle in… …   Deutsch Wikipedia

  • Blosum — Die BLOSUM62 Matrix BLOSUM (BLOcks SUbstitution Matrix[1]) ist eine evidenzbasierte Substitutionsmatrix, die für Sequenzalignment von Proteinen benutzt wird und spielt neben der Point Accepted Mutation Matrix (PAM Matrix) eine wichtige Rolle in… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”