Wie ähnlich sind zwei Sequenzen?
Ein paarweises Sequenzalignment legt zwei Sequenzen so untereinander, dass möglichst viele gleiche Basen übereinander stehen. Die Punktzahl des Alignments sagt, wie ähnlich die beiden Sequenzen sind.
Zwei Sequenzen sind selten gleich lang. Das Alignment fügt deshalb bei Bedarf Lücken ein und rechnet aus, welche Anordnung die höchste Punktzahl hat.
Am Ende dieser Lektion
Notiz
Ich kann zwei Sequenzen mit einer Punktzahl ausrichten.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Alignment | zwei Sequenzen Spalte für Spalte untereinander gelegt | |
| Treffer | zwei gleiche Basen in einer Spalte | +1 |
| Fehlpaarung | zwei verschiedene Basen in einer Spalte | -1 |
| Lücke | ein Strich statt einer Base, eine Einfügung oder Löschung | -2 |
| Alignment-Wert | die Summe der Punkte aller Spalten |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Jede Spalte bekommt Punkte
In einem Alignment steht jede Base über einer anderen Base oder über einer Lücke, die als Strich geschrieben wird. Jede Spalte bekommt Punkte: ein Treffer gibt +1, eine Fehlpaarung -1 und eine Lücke -2.
Der Alignment-Wert ist die Summe aller Spalten. Das sind unsere Regeln für diese Lektion, andere Regeln folgen in der nächsten.
Beispiel: GATTACA gegen GA-TACA
| Spalte | Oben | Unten | Punkte |
|---|---|---|---|
| 1 | G | G | +1 |
| 2 | A | A | +1 |
| 3 | T | - | -2 |
| 4 | T | T | +1 |
| 5 | A | A | +1 |
| 6 | C | C | +1 |
| 7 | A | A | +1 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Einen Alignment-Wert ausrechnen
docker exec jupyter python3 -c "a='GATTACA'; b='GA-TACA'; print(sum(1 if x==y else -2 if '-' in (x,y) else -1 for x,y in zip(a,b)))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Dieselben Sequenzen ohne Lücke ausrichten
docker exec jupyter python3 -c "print(sum(1 if x==y else -1 for x,y in zip('GATTACA', 'GCATGCA')))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Tabelle findet die beste Anordnung
Probieren Sie nicht alle Anordnungen durch, das wären zu viele. Legen Sie eine Tabelle an: eine Zeile je Base der ersten Sequenz, eine Spalte je Base der zweiten.
Jede Zelle ist der beste Wert von drei Wegen: von links oben plus Treffer oder Fehlpaarung, von oben plus Lücke, von links plus Lücke.
Beispiel: die Tabelle für GAT gegen GT
| Zeile | Start | G | T |
|---|---|---|---|
| Start | 0 | -2 | -4 |
| G | -2 | 1 | -1 |
| A | -4 | -1 | 0 |
| T | -6 | -3 | 0 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Die Tabelle von GAT gegen GT füllen
# Die Tabelle für GAT gegen GT, Regeln: Treffer 1, Fehlpaarung -1, Lücke -2.
x = "GAT"
y = "GT"
zeilen = []
for i in range(len(x) + 1):
zeilen.append([0] * (len(y) + 1))
for i in range(1, len(x) + 1):
zeilen[i][0] = i * -2
for j in range(1, len(y) + 1):
zeilen[0][j] = j * -2
for i in range(1, len(x) + 1):
for j in range(1, len(y) + 1):
if x[i - 1] == y[j - 1]:
schritt = 1
else:
schritt = -1
zeilen[i][j] = max(zeilen[i - 1][j - 1] + schritt, zeilen[i - 1][j] - 2, zeilen[i][j - 1] - 2)
for zeile in zeilen:
print(zeile)
print("Wert:", zeilen[len(x)][len(y)])
# Ändern Sie y auf "GAT". Wie hoch ist der Wert jetzt?
Ein häufiger Fehler
Warnung
Viele füllen die erste Zeile und die erste Spalte mit Nullen. Dort stehen aber Lücken: Wer drei Basen gegen nichts ausrichtet, braucht drei Lücken und bekommt -6. Die Ränder sind also 0, -2, -4, -6 und so weiter.