nospace >>split() nicht mehr möglich

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
ete
User
Beiträge: 218
Registriert: Montag 19. Februar 2007, 13:19
Kontaktdaten:

Hallo!

ich hab folgendes Problem:

Ich möchte einen Text zeilenweise eingeben, ihn zeilenweise berechnen und die Werte auch pro Zeile ausgeben.

Dabei soll dem eingebenen Text die Leerzeichen entfernt werden und dieser in Kleinbuchstaben umgewandelt werden. Dies funktioniert auch alles, solange ich self.nospace anwende (Zeile 170). Die Leerzeichen werden zwar entfernt, nur funktioniert jetzt split() nicht mehr. Der Typ von Sequence ist immer Str, ob mit oder ohne der Anwendung von self.nospace. Deswegen verstehe ich das Problem nicht ganz. Nach split() kann ich self.nospace nicht anwenden, da durch split() eine Liste ensteht. Ich hab auch schon versucht über join() die Leerzeichen zu entfernen aber stosse genau auf dasselbe Problem.

Hier der Code:
http://paste.pocoo.org/show/13793/

Dieser wird in ein Notebook geladen:
http://paste.pocoo.org/show/10408/

Weiss jemand Rat?

Liebe Grüsse
Stefanie
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Gibt es auch irgendwo ein kleines Minimalbeispiel, dass ohne wx auskommt?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
ete
User
Beiträge: 218
Registriert: Montag 19. Februar 2007, 13:19
Kontaktdaten:

Habs mal schnell mit Tkinter gemacht:

http://paste.pocoo.org/show/13880/

Auf Konsole weiss ich nicht wie ichs machen soll, da die Eingabe ja gesplittet werden soll.

Problematische Zeile ist 114, Funktion dazu 107.

Ich hoffe das Bsp. hilft :)
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi Stefanie,

ich habe mal was ähnliches Programmiert ;-). Deshalb verstehe ich nicht so ganz, warum Du überhaupt split() anwenden willst. Und auch die Funktion von nospace() kapiere ich nicht. Warum nicht einfach

Code: Alles auswählen

sequence.replace(' ', '')
? Für alle weiteren Fälle ist es doch ausreichend genau *einen* String, bzw. einen Teil daraus zu verwenden. Aber das ist natürlich Dir überlassen. Allerdings vermute ich doch, daß im ersten Paste das

Code: Alles auswählen

if isfile(sequence):
unlogisch ist, da die vorhergehenden Operationen nicht auf Dateien angewendet werden können. Also müßtest Du die Operationen, die eine Datei betreffen voran stellen und zwar alternativ zu dem GetValue(), falls da tatsächlich eine Sequenz ist.

Gruß,
Christian

PS Kennst Du das Biopython-Projekt?
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Nachtrag: Das Biopython-Projekt bietet interessante Interfaces zu Datenbanken und einiges DNA-Handling ist bereits für Anwender zu nutzen und muß nicht mehr neu geschrieben werden.

Allerdings habe ich, wie gesagt, auch Dinge selber geschrieben. Damals mußte ich, weil es nichts in der Richtung gab. Wenn Du an meinem DNA-Modul als Muster interessiert bist: PN mit Deiner E-Adresse an mich. (Es ist allerdings ziemlich anfängermäßig geschrieben: Ich habe gerade nach Jahren wieder reingeschaut und mich überkommt das Grausen ;-) .)

Gruß,
Christian
ete
User
Beiträge: 218
Registriert: Montag 19. Februar 2007, 13:19
Kontaktdaten:

Hallo!

Das mit dem replace ist ne gute Idee...Ich benutzte replace mind. 10 mal am Tag in Excel :shock: .Manchmal verrennt man sich in etwas.

Wenn ich split wegglasse, berechnet er nicht jeden Primer einzeln. Muss da mal nachforschen. Das war am Anfang ein Problem und ich habs glaube über split gelöst und bis jetzt drinbehalten.

Biopython streikt gerade ziemlich (siehe anderer Thread). Vielleicht kannst du mir ein bisschen helfen.

Danke für deine Tips!

Stefanie
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

ete hat geschrieben:Wenn ich split wegglasse, berechnet er nicht jeden Primer einzeln. Muss da mal nachforschen. Das war am Anfang ein Problem und ich habs glaube über split gelöst und bis jetzt drinbehalten.
Wenn Du *zwei* Primer in einer Eingabe löst, dann machst Du was falsch ;-) .

Das Problem mit GUI-Code ist, daß man u. U. ziemlich lange suchen muß, um überhaupt die Logik zu finden, die betroffen ist, wenn Problemlogik in die GUI gemixt ist. Deshalb war es keine so dolle Idee Leonidas Frage mit einem Beispiel in TK zu beantworten ;-) Das eigentliche Problem ist: Du mixt Problemlogik mit dem GUI. Das ist ein Kardinalfehler. Da zumindest ist mein altes Beispiel, was ich gerade noch ergoogeln konnte (ein wunder, daß es die Seite noch gibt) vielleicht doch noch von Wert**: http://www.amp.ucdavis.edu/Homepages/St ... ython.html

Warum ein Kardinalfehler? Weil die GUI die Ein-/Ausgabe übernehmen soll*. Mehr nicht. Das ist bei CLIs ja auch nicht anders. Wenn Du nun Problemlogik reinmixt, wie Du es machst, mußt Du zum Aufrufen von Methoden zur Problemlösung immer den Umweg über die GUI gehen. Wenn Du eine Klasse hast, die Deine DNA repräsentiert, kannst Du Methoden auf die Instanz anwenden (was auch in Leonidas-Sinn OOP ist): z. B. self.reverse_complement(), um das Komplement zu erhalten.

Gruß,
Christian

* edit: Und natürlich Eventhandling, ...
** edit: Nicht so sehr auf den eigentlich Code achten - da überkommt mich wirklich das Grausen, der ist nicht so schön!
ete
User
Beiträge: 218
Registriert: Montag 19. Februar 2007, 13:19
Kontaktdaten:

Danke für die Comments!

Dies ist mein erstes Programm und ich wollte es nach Beenden eh hier ins Forum posten, um Kritik zu bekommen.

Ich schau mir deines mal an...

lg
Antworten