Warum ändert die Bewertung das Alignment?
Bei einem Sequenzalignment bestimmen die Bewertungsregeln, welche Anordnung gewinnt. Vor allem die Lückenstrafe entscheidet, ob eine Lücke sich lohnt oder ob lieber Fehlpaarungen in Kauf genommen werden.
Außerdem unterscheidet man globale und lokale Alignments. Nach dieser Lektion können Sie die Regeln ändern und erklären, warum sich das Ergebnis ändert.
Am Ende dieser Lektion
Notiz
Ich kann die Bewertung ändern und erklären, wie sich das Alignment dadurch verändert.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Bewertungsregel | die Punkte für Treffer, Fehlpaarung und Lücke | +1, -1, -2 |
| Lückenstrafe | die Punkte, die eine Lücke kostet | |
| Globales Alignment | richtet beide Sequenzen vom Anfang bis zum Ende aus | |
| Lokales Alignment | sucht nur das ähnlichste Teilstück | |
| Alignment-Wert | die Summe der Punkte aller Spalten |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Die Lückenstrafe entscheidet, ob eine Lücke sich lohnt
Eine Lücke kann viele Treffer retten, weil sie eine Verschiebung ausgleicht. Sie kostet aber Punkte. Ist die Lückenstrafe klein, benutzt das Alignment viele Lücken. Ist sie hoch, nimmt es lieber Fehlpaarungen in Kauf.
Ein Beispiel: ACGTTGCA gegen ACGTGCAT. Die Tabelle zeigt, welche Anordnung bei welcher Strafe gewinnt.
Beispiel: dieselben Sequenzen, drei Lückenstrafen
| Lückenstrafe | Mit zwei Lücken | Ohne Lücke | Sieger |
|---|---|---|---|
| -1 | 5 | 0 | mit Lücken |
| -2 | 3 | 0 | mit Lücken |
| -4 | -1 | 0 | ohne Lücke |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Die Anordnung mit Lücken bewerten
docker exec jupyter python3 -c "a='ACGTTGCA-'; b='ACG-TGCAT'; print([sum(1 if x==y else L if '-' in (x,y) else -1 for x,y in zip(a,b)) for L in (-1,-2,-4)])"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 Anordnung ohne Lücke bewerten
docker exec jupyter python3 -c "a='ACGTTGCA'; b='ACGTGCAT'; print([sum(1 if x==y else L if '-' in (x,y) else -1 for x,y in zip(a,b)) for L in (-1,-2,-4)])"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein lokales Alignment sucht nur das ähnlichste Stück
Ein globales Alignment richtet beide Sequenzen komplett aus, vom ersten bis zum letzten Zeichen. Ein lokales Alignment sucht nur das ähnlichste Teilstück und ignoriert den Rest.
Beim lokalen Verfahren sinkt keine Zelle der Tabelle unter 0, und der Wert ist die größte Zahl der ganzen Tabelle. Der Rand besteht aus Nullen, denn man darf überall neu anfangen.
Global und lokal im Vergleich
# Ein erfundenes gemeinsames Stück mitten in zwei verschiedenen Sequenzen.
x = "TTTACGTACGTAAA"
y = "GGACGTACGTGG"
for lokal in [False, True]:
rand = -2
if lokal:
rand = 0
zeilen = []
for i in range(len(x) + 1):
zeilen.append([i * rand] + [0] * len(y))
for j in range(1, len(y) + 1):
zeilen[0][j] = j * rand
beste = 0
for i in range(1, len(x) + 1):
for j in range(1, len(y) + 1):
schritt = -1
if x[i - 1] == y[j - 1]:
schritt = 1
wert = max(zeilen[i - 1][j - 1] + schritt, zeilen[i - 1][j] - 2, zeilen[i][j - 1] - 2)
if lokal and wert < 0:
wert = 0
zeilen[i][j] = wert
if wert > beste:
beste = wert
if lokal:
print("lokal:", beste)
else:
print("global:", zeilen[len(x)][len(y)])
# Ändern Sie y auf "TTTACGTACGTAAA". Was zeigen jetzt beide Werte?
Ein häufiger Fehler
Warnung
Viele vergleichen Alignment-Werte, die mit verschiedenen Regeln entstanden sind. Eine 5 mit der Lückenstrafe -1 ist nicht besser als eine 3 mit -2. Werte lassen sich nur vergleichen, wenn die Regeln dieselben sind.