Wie konvertiere ich die drei-Buchstaben-Aminosäure-codes zu einem Buchstaben-code mit python-oder R?
Habe ich eine fasta-Datei, wie unten gezeigt. Ich möchte konvertieren, die drei-Buchstaben-codes zu einem Buchstaben-code. Wie kann ich das mit python oder R?
>2ppo
ARGHISLEULEULYS
>3oot
METHISARGARGMET
gewünschte Ausgabe
>2ppo
RHLLK
>3oot
MHRRM
Ihre Vorschläge würden geschätzt!!
- Wie ist
ARGHISLEULEULYS
umgewandeltRHLLK
? Was ist die Logik? - ARG = R, HIS = H, LEU = L, etc
- etc.? Es wäre nützlich, fügen Sie die vollständige übersetzung Liste auf die Frage, oder zumindest einen link darauf. Ich möchte helfen, mit dieser Frage, aber ich bin nicht in der Lage, es sei denn, ich bekommen alle notwendigen Informationen.
- en.wikipedia.org/wiki/...
- ah, so müssen Sie nach split die Zeichenfolge in ein array nehmen jedes 3. element des Arrays als letzten string?
- Wie wäre es mit: stat.ethz.ch/pipermail/bioconductor/2008-January/020958.html
- Ich bin neugierig, wo Sie so einen Datei - ich habe nie gesehen, eine FASTA-Datei mit drei-Buchstaben-Aminosäure-codes wie der.
Du musst angemeldet sein, um einen Kommentar abzugeben.
BioPython verfügt bereits über integrierte Wörterbücher zu helfen, mit solchen übersetzungen. Folgende Befehle zeigen Sie eine Liste Verfügbarer Wörterbücher:
Die eingebauten dictionary-Sie suchten:
Bio.Data
, währendBio.SeqUtilis
importiert es von dort, also wenn man wollte, nur die Methode protein_letters_3to1 in den aktuellen namespace, die man tun konnte:from Bio.Data.IUPACData import protein_letters_3to1
Verwenden Sie ein Wörterbuch zum nachschlagen der einer Buchstaben-codes:
Und eine einfache Funktion zum match-die drei-Buchstaben-codes mit einem Buchstaben-codes, die für den gesamten string:
Testen Sie Ihre Beispiel:
for line in inputfile: print(shorten(line))
.Hier ist ein Weg, es zu tun in R:
Ergebnisse in :
Beachten Sie, dass ich änderte den Namen der Variablen als Variablen-Namen dürfen nicht mit einer Zahl beginnen, in R.
foo
in Teilstrings von drei Zeichen, die zur Vermeidung solcher möglichen Wechselwirkungen.Müssen Sie nur fügen Sie die restlichen Einträge in der
trans
dict.Edit:
Machen den rest
trans
können Sie dies tun. Dateitable
:Lesen:
Können Sie versuchen, die Suche in und die Installation Biopython da Sie Parsen ein .fasta-Datei und dann Umwandlung in eine Buchstaben-codes. Leider Biopython nur die Funktion hat, seq3(im Paket Bio::SeqUtils), die nicht die inverse von dem, was Sie wollen. Beispiel für die Ausgabe im LEERLAUF:
Leider, es gibt keine "seq1" - Funktion (noch nicht...), aber ich dachte, das könnte hilfreich sein, um Sie in der Zukunft. Soweit Ihr problem, Junuxx korrekt ist. Erstellen Sie ein Wörterbuch und verwenden Sie eine for-Schleife zum Lesen der string in Blöcke von drei und übersetzen. Hier ist eine ähnliche Funktion wie die, die er zur Verfügung gestellt ist all-inclusive und Griffe untere Fällen als gut.
Bio.SeqUtils.seq1
ab der nächsten Version, Biopython 1.61 (oder laufen aus dem github-repository, wenn Sie gerne auf die Vorderkante).Biopython hat eine schöne Lösung
Für dein Beispiel, ich werde es lösen, indem diese ein liner
Können Sie kritisieren mich für diese Art von one-liner :), aber tief in meinem Herzen bin ich immer noch in der Liebe mit PERL.
R:
Biostrings (readFASTA)
,seqinr (read.fasta)
,bio3d (read.fasta)
.Anderen Weg, es zu tun ist mit der seqinr und iPAC Paket in R.
Verwenden Sie dieses perl-Skript zum konvertieren Drilling ein.a-codes um einzelne Buchstaben-code.
Für diejenigen, die hier land auf 2017 und darüber hinaus:
Hier ist eine einzige Zeile, Linux-bash-Befehl zum konvertieren von protein-Aminosäuren drei-Buchstaben-code, um einzelne Buchstaben-code in einer text-Datei. Ich weiß, das ist nicht sehr elegant, aber ich hoffe, das hilft jemand auf der Suche für das gleiche verwenden möchten Befehlszeile.
Lösung für die ursprüngliche Frage oben, als eine einzige Befehlszeile:
Erklärung:
[1]
sed 's/.\{3\}/& /g'
wird spllit der Sequenz. Es wird ein Leerzeichen nach jedem 3. Buchstaben.[2] Die zweite '
sed'
Befehl in der pipe wird die Ausgabe des oben und zu konvertieren einzelnen Buchstaben-code. Fügen Sie alle nicht-standard-Rückstände alss/XYZ/X/g;
zu diesem Befehl.
[3] Der Dritte '
sed
' Befehlsed 's///g'
entfernen von Leerzeichen.Python 3 Lösungen.
In meiner Arbeit, die genervt ist, dass man die Aminosäure-codes beziehen können, um die modifizierten, die oft erscheinen in der PDB/mmCIF-Dateien, wie
So kann sich das mapping mehr als 22 Paare. Die 3rd-party-tools in Python-wie
kann nicht damit umgehen. Meine einfachste Lösung ist die Nutzung der http://www.ebi.ac.uk/pdbe-srv/pdbechem zu finden, die Zuordnung und Beurteilung der ungewöhnliche Zuordnung zu den dict-in meinem eigenen Funktionen, Wann immer ich Ihnen begegnen.
Die andere Lösung ist das abrufen der mapping-online (Aber die url und die html-Muster kann sich ändern durch die Zeit):
Hier habe ich direkt die re statt den html-Parser für die Einfachheit.
Hoffe, dass diese helfen können.