Ich habe eine Fasta-Datei wie unten gezeigt. Ich möchte die Drei-Buchstaben-Codes in einen Buchstabencode umwandeln. Wie kann ich das mit Python oder R machen?
%Vor%gewünschte Ausgabe
%Vor%Ihre Vorschläge würden geschätzt werden!
BioPython hat bereits eingebaute Wörterbücher, die bei solchen Übersetzungen helfen. Die folgenden Befehle zeigen Ihnen eine vollständige Liste der verfügbaren Wörterbücher:
%Vor%Das vordefinierte Wörterbuch, nach dem Sie suchen:
%Vor%Hier ist ein Weg, es in R zu tun:
%Vor%Ergebnisse in:
%Vor%Beachten Sie, dass ich den Variablennamen geändert habe, da Variablennamen nicht mit einer Zahl in R beginnen dürfen.
Sie müssen nur die restlichen Einträge zum trans
dict.
Bearbeiten:
Um den Rest von trans
zu machen, können Sie dies tun. Datei table
:
Lesen Sie es:
%Vor%Sie können versuchen, Biopython zu suchen und zu installieren, da Sie eine .fasta-Datei analysieren und dann in einen Buchstabencode umwandeln. Unglücklicherweise hat Biopython nur die Funktion seq3 (im Paket Bio :: SeqUtils), die das Gegenteil von dem tut, was Sie wollen. Beispielausgabe in IDLE:
%Vor%Leider gibt es keine "seq1" -Funktion (noch ...), aber ich dachte, das könnte Ihnen in Zukunft hilfreich sein. Soweit Ihr Problem, Junuxx ist richtig. Erstellen Sie ein Wörterbuch und verwenden Sie eine for-Schleife, um die Zeichenfolge in Dreierblöcken zu lesen und zu übersetzen. Hier ist eine ähnliche Funktion wie die, die er zur Verfügung stellt, die all-inclusive ist und auch kleinere Fälle behandelt.
%Vor%Biopython hat eine nette Lösung
%Vor%Für Ihr Beispiel werde ich es mit diesem einen Liner lösen
%Vor%Sie mögen mich für diese Art von Liner kritisieren :), aber tief in meinem Herzen bin ich immer noch in PERL verliebt.
Verwenden Sie dieses Perl-Skript, um Triplet a.a-Codes in einen einzelnen Buchstabencode umzuwandeln.
Für diejenigen, die 2017 und danach hier landen:
Hier ist ein Linux-Bash-Befehl in einer einzigen Zeile, um Protein-Drei-Buchstaben-Code in einen Buchstaben-Code in einer Textdatei umzuwandeln. Ich weiß, dass das nicht sehr elegant ist, aber ich hoffe, dass dies jemandem hilft, der nach dem gleichen sucht, und einen einzeiligen Befehl verwenden möchte.
%Vor%Lösung für die ursprüngliche Frage oben, als eine einzelne Befehlszeile:
%Vor%Erläuterung:
[1] sed 's/.\{3\}/& /g'
wird die Sequenz split. Es wird nach jedem dritten Buchstaben ein Leerzeichen hinzugefügt.
[2] Der zweite ' sed'
' Befehl in der Pipe wird die Ausgabe von oben nehmen und in einen einzelnen Buchstabencode konvertieren. Fügen Sie einen nicht standardmäßigen Rest als s/XYZ/X/g;
hinzu.
zu diesem Befehl.
[3] Der dritte Befehl " sed
", sed 's/ //g'
, entfernt Leerzeichen.
Tags und Links python r bioinformatics biopython