Wie sieht eine FASTA-Datei aus?
Eine FASTA-Datei ist eine einfache Textdatei, in der eine oder viele Sequenzen mit Namen stehen. Fast jedes Werkzeug der Bioinformatik liest und schreibt dieses Format.
Wer eine FASTA-Datei mit Python einlesen kann, kann Sequenzen auswerten, ohne ein Programm von anderen zu brauchen. Genau das üben Sie hier.
Am Ende dieser Lektion
Notiz
Ich kann die Sequenzen einer FASTA-Datei mit Python einlesen.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| FASTA | ein Textformat für Sequenzen mit Namen | |
| Kopfzeile | die Zeile mit dem Namen, sie beginnt mit > | >probe1 |
| Datensatz | eine Kopfzeile mit allen Sequenzzeilen darunter | |
| Bezeichner | das erste Wort der Kopfzeile, der Name des Datensatzes | |
| Zeilenumbruch | das Zeichen, das eine Zeile beendet |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Eine Kopfzeile beginnt mit einem Größerzeichen
In einer FASTA-Datei beginnt jeder Datensatz mit einer Kopfzeile. Sie startet mit dem Zeichen >, danach folgt der Name und oft eine kurze Beschreibung.
Darunter stehen die Basen. Lange Sequenzen sind auf mehrere Zeilen verteilt, damit keine Zeile zu breit wird. Die Zeilen gehören trotzdem zu einer einzigen Sequenz.
Beispiel: eine kleine FASTA-Datei Zeile für Zeile
| Zeile | Inhalt | Was sie ist |
|---|---|---|
| 1 | >s1 erste Probe | Kopfzeile, Name s1 |
| 2 | ACGT | erster Teil von s1 |
| 3 | TT | zweiter Teil von s1 |
| 4 | >s2 zweite Probe | Kopfzeile, Name s2 |
| 5 | GGC | ganze Sequenz von s2 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Datensätze zählen
docker exec jupyter python3 -c "t='>s1 Probe\nACGT\nTT\n>s2 Probe\nGGC\n'; print(t.count('>'))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Alle Basen zusammen zählen
docker exec jupyter python3 -c "t='>s1 Probe\nACGT\nTT\n>s2 Probe\nGGC\n'; print(sum(len(z) for z in t.splitlines() if z[0] != '>'))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Beim Einlesen entscheidet das erste Zeichen
Ein Programm liest die Datei Zeile für Zeile. Beginnt eine Zeile mit >, startet ein neuer Datensatz, und der Bezeichner ist das erste Wort danach.
Jede andere Zeile hängt das Programm an die Sequenz des letzten Datensatzes an. Alle Datensätze kommen in ein Dictionary: der Bezeichner als Schlüssel, die ganze Sequenz als Wert.
Zwei Datensätze in ein Dictionary lesen
# Eine erfundene Datei als Text. Jede Zeile endet mit einem Zeilenumbruch.
text = ">s1 erste Probe\nACGT\nTT\n>s2 zweite Probe\nGGC\n"
daten = {}
name = ""
for zeile in text.splitlines():
if zeile.startswith(">"):
name = zeile[1:].split()[0]
daten[name] = ""
else:
daten[name] = daten[name] + zeile
print(daten)
# Hängen Sie eine dritte Probe ">s3" mit der Zeile "AAAA" an den Text an.
Ein häufiger Fehler
Warnung
Viele nehmen nur die erste Zeile unter der Kopfzeile und verlieren den Rest der Sequenz. Dann ist die Sequenz zu kurz, ohne dass ein Fehler erscheint. Hängen Sie jede Zeile unter der Kopfzeile an, bis die nächste Kopfzeile kommt.
Leerzeichen und Leerzeilen gehören nicht zur Sequenz
Echte Dateien enthalten oft Leerzeilen und Leerzeichen am Zeilenende. Die Methode .strip() entfernt sie am Rand einer Zeile. Eine leere Zeile überspringen Sie.
Mit .upper() machen Sie aus kleinen Buchstaben große. So ist "acgt" dieselbe Sequenz wie "ACGT".