HOWTO · Python

Das umgekehrte Komplement eines DNA-Strangs mit Python ermitteln

Dieser Artikel beschreibt, wie wir mit Python ein umgekehrtes Komplement eines DNA-Strangs erstellen können. Es verwendet die eingebauten String-Methoden und das Biopython-Modul.

Auf dieser Seite

Für den DNA-Strang ACGTAATTGGCC ist das umgekehrte Komplement GGCCAATTACGT. Python erzeugt es, indem es jede Base komplementiert und die Basen vom Ende zum Anfang liest.

Umgekehrtes Komplement eines DNA-Strangs

Die DNA verwendet die Basenpaare A↔T und C↔G. Das Komplement von ACGTAATTGGCC ist TGCATTAACCGG; das Umkehren dieses Komplements ergibt GGCCAATTACGT. Das Umkehren ändert die Reihenfolge, während das Komplementieren jede Base verändert.

Die folgenden Beispiele bilden die Großbuchstaben A, T, C und G ab. Sie behalten andere Symbole so bei, wie sie geschrieben sind, einschließlich Kleinbuchstaben; sie vereinheitlichen die Groß- und Kleinschreibung nicht und prüfen auch kein vollständiges DNA-Alphabet.

Das umgekehrte Komplement eines DNA-Strangs mit der for-Schleife in Python ermitteln

Für eine DNA-Sequenz in Großbuchstaben erstellt dieses vollständige Beispiel das Ergebnis mit einer for-Schleife:

input_strand = "ACGTAATTGGCC"
complements = {"A": "T", "T": "A", "C": "G", "G": "C"}
result = ""
for base in reversed(input_strand):
    result += complements.get(base, base)
print(result)
GGCCAATTACGT

Die Schleife durchläuft die Basen in umgekehrter Reihenfolge. Der Fallback des Dictionarys lässt ein Symbol unverändert, wenn es keine der vier Basen in Großbuchstaben ist.

Das umgekehrte Komplement eines DNA-Strangs mit der Methode join() in Python ermitteln

Zeichen in einer Liste zu sammeln und sie zu verbinden, macht den Schritt des Zusammensetzens deutlich:

input_strand = "ACGTAATTGGCC"
complements = {"A": "T", "T": "A", "C": "G", "G": "C"}
complement_chars = [complements.get(base, base) for base in reversed(input_strand)]
result = "".join(complement_chars)
print(result)
GGCCAATTACGT

join() verbindet die Listenelemente zu einem einzigen String. Dieser Ansatz mit der Standardbibliothek vermeidet es, den Ergebnis-String wiederholt zu erweitern.

Das umgekehrte Komplement eines DNA-Strangs mit der Methode get() in Python ermitteln

Hier ist base der Schlüssel des Dictionarys. get(base, base) gibt das zugeordnete Komplement zurück, wenn der Schlüssel existiert, und andernfalls das ursprüngliche Zeichen als Fallback:

input_strand = "ACGTAATTGGCC"
complements = {"A": "T", "T": "A", "C": "G", "G": "C"}
result_chars = []
for base in reversed(input_strand):
    result_chars.append(complements.get(base, base))
print("".join(result_chars))
GGCCAATTACGT

Die Form aus Liste und Join hält die Schleife gut lesbar, während sie einen String aus Zeichen zusammensetzt.

Das umgekehrte Komplement eines DNA-Strangs mit List Comprehension in Python ermitteln

Der umgekehrte Slice [::-1] durchläuft die Eingabe von rechts nach links. Das ursprüngliche Zeichen als Fallback anzugeben stellt sicher, dass jedes Listenelement ein String ist:

input_strand = "ACGTAATTGGCC"
complements = {"A": "T", "T": "A", "C": "G", "G": "C"}
result = "".join(complements.get(base, base) for base in input_strand[::-1])
print(result)
GGCCAATTACGT

Ohne diesen Fallback würde eine nicht zugeordnete Base None erzeugen, was join() nicht mit Strings verbinden kann.

Das umgekehrte Komplement eines DNA-Strangs mit der Methode translate() in Python ermitteln

Das str.maketrans() der Standardbibliothek erstellt eine Tabelle zur Zeichenzuordnung; str.translate() wendet sie an. Kehren Sie den Strang separat um und übersetzen Sie dann jede Base:

input_strand = "ACGTAATTGGCC"
table = str.maketrans("ATCG", "TAGC")
result = input_strand[::-1].translate(table)
print(result)
GGCCAATTACGT

Zeichen, die in der Tabelle fehlen, werden unverändert durchgelassen. Dieser Ansatz benötigt keine externe Bibliothek.

Das umgekehrte Komplement eines DNA-Strangs mit dem Biopython-Modul in Python ermitteln

Biopython ist eine externe Abhängigkeit, die Sequenz-Werkzeuge bereitstellt, darunter reverse_complement(). Ihr Distributionsname ist biopython, während der Python-Importpfad mit Bio beginnt. Installieren Sie es in der Umgebung, in der Sie Ihr Skript ausführen, mit python -m pip install biopython.

Das Folgende ist eine Syntax-Illustration, kein zur Laufzeit verifiziertes Beispiel: Installation und Import wurden in der ausgewählten Laufzeitumgebung nicht bestätigt.

from Bio.Seq import Seq und Seq("ACGTAATTGGCC").reverse_complement()

Diese Option hängt davon ab, dass Biopython installiert ist; bei den obigen Beispielen mit der Standardbibliothek ist das nicht der Fall. Verwenden Sie die Bibliothek, wenn ihre Sequenz-Werkzeuge zu Ihrem Projekt passen, oder wählen Sie einen Ansatz mit der Standardbibliothek, wenn das Hinzufügen einer Abhängigkeit nicht geeignet ist.

Fazit

Verwenden Sie eine Schleife, ein Dictionary, eine List Comprehension oder translate() für eine Lösung mit der Standardbibliothek. Wählen Sie Biopython, wenn seine umfassenderen Sequenz-Werkzeuge zur Aufgabe passen. Ein leerer String erzeugt ein leeres Ergebnis. Die Beispiele behalten andere Symbole und Eingabezeichen in Kleinbuchstaben bei; normalisieren oder validieren Sie die Eingabe separat, wenn Ihre Daten diese Richtlinie erfordern.