DNA sequenz übersetzen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Pandora
User
Beiträge: 2
Registriert: Samstag 31. März 2012, 15:33

Hallo liebe community.
Ich bin ein Python Neuling und versuche mir den Großteil mit Tutorials etc.beizubringen momentan sitze ich an diesem Task und komme irgendwie nicht weiter. Habe das Forum durchsucht aber nichts gefunden also hoffe ich das mir hier jemand helfen kann. ich poste euch einmal den task und was ich bisher so habe.

Write a python script that
– Reads a DNA sequence from a file. The name of the input file should be passed as a command-line parameter
– Translates the sequence to the corresponding amino acid sequence. Look up the “genetic code” in the Internet!
– Writes the resulting AA sequence to a new file (whose name should also be read from a command-line parameter)
Extend your flowchart and script so that one can pass a file (as 3rd parameter) with mutations to your script
– This mutationfile contains simply a position information and the new base character, e.g., the file :
1 A
5 C
means that the first character of the DNA sequence should be replaced by an A, the 5th should be replaced by a C.
– Position and base character should be separated by a TAB character (“\t”) in this file
– Make sure that yours olution is case-insensitive(so,uppercaseand lowercase base characters should have the same effect)
Your script should now create an output file that looks like this:
“> original AAs”
<ORIGINAL AA SEQUENCE>
“> mutated AAs”
<MUTATED AA SEQUENCE>

Ich weiß nicht genau wie ich das mit der Bibliothek so mache dass jemand das Programm generell verwenden kann. Bisher hatte ich eine Library gencode die eben am PC gespeichert ist und die ich aufgemacht hab. Auch ist mir nicht ganz klar wie ich das Programm so schreibe dass es generell für jede beliebige DNA sequenz funktioniert und egal wer es wo verwendet!???
Das habe ich bisher:

python myscript.py dna.fa aa.txt mut.txt

Code: Alles auswählen

import.sys
dna.fa=sys.argv[1]
aa.txt=sys.argv[2]
mut.txt=sys.argv[3]

gencode={""} #do i need to upload a library so the user can get the seq.translated??

f=open(“dna.fa”)
l=f.readlines()[:-1]
“”.join(l)
for base in range(len((l)-2):
codon=seq[base:base+3]
as=gencode.get(a)
print as > aa.txt

g=open(“mut.txt”, “w”)
print >> g, “1”,(“t”), “A”, #now i'm stuck!
Bin für jede Hilfe dankbar. Dankeschön :)
Zuletzt geändert von Anonymous am Samstag 31. März 2012, 18:23, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
BlackJack

@Pandora: Hast Du auch ein richtiges Programm oder besteht Dein Versuch daraus etwas was wie Python aussieht in einer Textverarbeitung zu schreiben ohne *wirklich* ernsthaft probiert zu haben die Aufgabe zu lösen!?

Der Quelltext wimmelt nur so von semantischen und Syntaxfehlern. Das hast Du nicht einmal ansatzweise probiert auszuführen. Der Kommentar in der letzten Zeile suggeriert, dass es bis dorthin läuft, wo die ersten vier Zeilen schon nicht kompilieren oder fehlerfrei durchlaufen.

Code: Alles auswählen

In [337]: import.sys
------------------------------------------------------------
   File "<ipython console>", line 1
     import.sys
           ^
SyntaxError: invalid syntax
Arbeite mal in Ruhe das Tutorial in der Python-Dokumentation durch. Dann entwickle das Programm in dem Du das Problem in kleine Teilschritte zerlegst. Immer weiter, bis Du bei einem Teilproblem angekommen bist, was sich einfach in Quelltext umsetzen lässt. Das tust Du, und dann testest Du es durch ausführen und vergleichen der Ergebnisse mit dem was Du erwartet hast. Und erst wenn das Teilprogramm soweit funktioniert, schreibst Du weiteren Quelltext. Und den testest Du dann wieder, und so weiter und sofort. Wenn Du dabei dann auf ein konkretes Problem stösst, kannst Du dafür nach Hilfe fragen. Mit Quelltext und der Fehlerbeschreibung. Wenn es einen Traceback gibt, möchten wir den gerne komplett sehen, ansonsten brauchen wir eine Beschreibung was Du erwartet hast, und was Du stattdessen bekommst. So dass man das nachvollziehen kann.
Pandora
User
Beiträge: 2
Registriert: Samstag 31. März 2012, 15:33

Python stürzt bei mir regelmäßig ab sobald ich eine Bibliothek einfüge oder irgend einen Befehl paste. jetzt habe ich versucht das ganze mal theoretisch mit Befehlen durchzugehen und dass dann in python zu probieren sobald ich Zugang habe. Also sorry wenn das von Fehlern nur so wimmelt aber mir sind viele Sachen nicht klar und ich hab niemanden den ich fragen könnte.
Habe das Programm jetzt neu installiert und Wing IDE hoffe es läuft jetzt besser.

Scheitere anscheinend schon am Anfang.

Code: Alles auswählen

import sys
dna.fa=sys.argv[1]
Traceback (most recent call last):
  File "<string>", line 1, in <fragment>
IndexError: list index out of range
Wollte eigentlich dass das 1 Argument meiner command line die dna frequenz ist. Muss ich Anfangs

Code: Alles auswählen

python myscript.py dna.fa aa.txt mut.txt
Traceback (most recent call last):
  File "<string>", line 1, in <fragment>
invalid syntax: <string>, line 1, pos 15
machen, aber wie man sieht geht das auch nicht????

meine Vorgangsweise wäre gewesen:
1)File Zeile für Zeile einlesen
2)zu einem Strang verbinden mit join Befehl
3)Codon erzeugen mit range
4)Codons mit Bibliothek abgleichen und Aminosäure kriegen
5)string in file umleiten

tja falls jemand helfen kann wäre das nett oder ein Forum empfehlen oder sonst was. Ich krieg das einfach nicht hin :(
LG
Zuletzt geändert von Anonymous am Sonntag 1. April 2012, 17:36, insgesamt 1-mal geändert.
Grund: Code-Tags hinzugefügt
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Pandora hat geschrieben:Python stürzt bei mir regelmäßig ab sobald ich eine Bibliothek einfüge oder irgend einen Befehl paste.
Was heißt hier "Python" genau? IDLE? Die Python-Shell? Du musst hier präzisere Angaben machen! Dazu gehört imho auch, welches OS und welche Python Version Du benutzt. Damit wir versuchen können, den Fehler nachzuvollziehen, musst Du uns genau beschreiben, was Du wie gemacht hast.

Die Meldungen unten sind übrigens keine Abstürze, falls Du das bisher denken solltest!

Du brauchst auch keine IDE. Ein einfacher, guter Editor reicht vollkommen hin. Dazu dann eine Shell a la IPython o.ä. und Du hast alles, was Du brauchst.

Code gehört auch in Code-Blöcke hier im Forum. Sonst gehen Einrückungen verloren usw. Dazu kannst Du die Button über der Eingabebox benutzen oder per Hand [ code=python ] code [/ code] schreiben (ohne Leerzeichen).

Du solltest auch kein eigenes Script `string.py` nennen, da Du damit ein Modul aus der Standard-Lib überschreibst.

Beachte doch das, was BlackJack Dir empfohlen hat. Arbeite ein Tutorial durch und taste Dich heran. Ich habe die Aufgabenstellung nicht zu 100% nachvollzogen, daher mal mein Rat: Dateien öffnen, einlesen und schließen kannst Du ganz am Schluss machen. Das ist relativ trivial. Kümmere Dich doch erst einmal um den eigentlichen Teil, also das "Vergleichen" von Sequenzen oder was immer Du da machen sollst. Das kannst Du einfach mit statischen Daten probieren, die Du im Quellcode hinterlegst. Dazu muss es doch kein String von 1Mio Einträgen sein, sondern vielleicht mit 10 - 20... je nach Aufgabe reicht doch so etwas erst einmal, um das algorithmische Problem zu lösen! Verpacke Deinen Algo einfach in ein oder mehrere Funktionen und übergebe denen zunächst Testdaten. Später kannst Du die immer noch aus einer Datei oder aus dem Netz ziehen - woher die Daten stammen ist doch am Anfang erst einmal egal.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Zunächst solltest du dir angwöhnen den Code hier in Python-Codetags zu setzen, dann kann man den auch vernünftig lesen. Zu deinem Problem: Offensichtlich führst du die Befehle im interaktiven Modus aus. Speicher deinen Code in einer Datei und starte diese Datei direkt über die Konsole.
Das Leben ist wie ein Tennisball.
Antworten