little GUI w/o spice: findSequence

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

little GUI w/o spice: findSequence

Beitragvon CM » Samstag 11. September 2004, 03:37

Hoi,

ui, ui, ui, jetzt traue ich mich auch einmal ein kleines Projekt der "Weltöffentlichkeit" vorzustellen. Na ja, eigentlich würde ich mich freuen, wenn wer Lust hat mal einen Blick drauf und dann erbauliche Kommentare zurückwirft. Das wäre schön.

Worum geht es? Jeder der schon mal aus einem Genom (eines Bakteriums) kloniert hat, hat festgestellt, daß es ganz schön lästig sein kann die Wunschsequenz im Genom zu finden, inkl. flankierender Sequenzen, so daß man auch schöne Primer designen kann.
Da ich jetzt ein ganzes Dutzend solcher Projekte vor mir habe und eigentlich nicht so ganz vom Fach bin (mehr Proteinbiochemie / Biophysik) habe ich mir gedacht: Das kann ich mir etwas einfacher machen. Heraus kamen etliche Skripte, von denen einige jetzt hier unter den Hut eines GUI gebracht habe. Näheres siehe dem beigepackten README.

Das Ganze erhebt keinen Anspruch auf Perfektion. Ich habe ein paar Anleihen bei Biopython und bei Dookie gemacht (siehe README) und wer mehr will soll gleich Biopython verwenden oder ein kommerzielles Paket ;-).

Wo findet man das Paket?
http://www.amp.ucdavis.edu/Homepages/Stahlberg/Meesters/Python/python.html

Viel Vergnügen,
Christian

PS Auf Windows wird das wohl nicht so gut funktionieren, aber bei LINUX/Unix Rechnern erwarte ich weniger große Schwierigkeiten ... (hoffe ich jedenfalls).
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Beitragvon mawe » Samstag 11. September 2004, 05:54

Hi!

Die Links auf der Seite funktionieren nicht wirklich :?

UPDATE: Die sollten funktionieren:

findSequence-0.1.2a.tar.gz
findSequence-0.1.2a.zip
k12.tgz

Gruß, mawe
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Beitragvon mawe » Samstag 11. September 2004, 20:15

Hi!

Gleich zu Anfang ein Verbesserungsvorschlag :wink::
Wie Du ja schon in der README geschrieben hast, dauern einige Vorgänge etwas lange. Irgendwie hat mir so etwas wie eine ProgressBar gefehlt, um den Fortschritt zu beobachten. Wenn das zu aufwändig ist, könnte man vielleicht einfach den Cursor verändern, nur um zu sehen ob das Programm überhaupt noch läuft (naja, so lange dauert es nun auch wieder nicht, ich bin einfach ungeduldig :wink:).

Lustigerweise ist das Unit-testing von DNA.py fehlerhaft. Ich bekomme die Fehlermeldung:
Traceback (most recent call last):
File "DNA.py", line 475, in ?
onemore = test2.elongate_one(test)
TypeError: elongate_one() takes exactly 3 arguments (2 given)

Fehlt wohl das flag-Setzen beim Aufruf von elongate_one :wink:

Ich hatte leider noch keine Zeit, mir den ganzen Code genauer anzusehen, darum kann ich dazu noch nicht viel sagen (kommt noch :wink:)

Ach ja, Du wolltest ja erbauliche Kommentare.
Na gut: Cooles Programm, gefällt mir :D

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

Beitragvon CM » Montag 13. September 2004, 04:25

Hi mawe,

Oh, das mit den Links ist peinlich: Als das PHP-Programm, welches die Datumsanzeige am rechten Rand erstellt, sich nicht mehr beschwert hat, habe ich die eigentlichen Links nicht mehr geändert ... Vielen Dank für den Hinweis, das habe ich jetzt auch korrigiert.

Das mit dem Test im DNA-Modul stimmt: Habe ich geändert, mit dem nächsten Update wird es hochgeladen. Aber noch hat sich niemand gemeldet mit etwas, was eine sofortige Änderung oder Ergänzung erfordert. (Das README habe ich aber trotzdem auch noch mal geändert, war nämlich auch nicht ganz astrein - wird dann auch in eine aktuellere Version mit aufgenommen.)

Funktioniert bei Dir das GUI? Und ist alles genügend gut erklärt?

Zur Kritik: Das mit Progressbar ist mir nicht ganz klar wie es funktionieren soll, da das Programm ja meist vorher nicht weiß wie viele Rechenschritte es machen soll, es also nicht weiß, wie groß der Fortschritt ist. Einen veränderten Zeiger könnte ich aber einbauen: Bei mir sieht man das schon, weil vom OS so vorgegeben, da habe ich an dieses Feature nicht gedacht.

Mir ist auch schon eingefallen, wie man das "Primerdesign" wesentlich beschleunigen könnte - nur leider würde das einiges Re-factoring bedeuten und mir ist nicht ganz klar, ob sich diese Sache lohnt.

Vielen Dank fürs Lob, würde mich freuen, wenn das noch jemand benutzen würde - dann wären wir schon mal zwei ;-)

Schönen Start in die Woche - euch allen,
Christian

PS Hat jemand eine Idee welche Features noch unbedingt hinzusollen?
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Beitragvon mawe » Montag 13. September 2004, 07:14

Hi!

CM hat geschrieben:Funktioniert bei Dir das GUI?

GUI funktioniert.
CM hat geschrieben:Und ist alles genügend gut erklärt?

Ich kenne mich aus (und das will was heissen :D).
CM hat geschrieben: Das mit Progressbar ist mir nicht ganz klar wie es funktionieren soll, da das Programm ja meist vorher nicht weiß wie viele Rechenschritte es machen soll, es also nicht weiß, wie groß der Fortschritt ist.

Da hast Du recht. Du könntest aber eine Progressbar für Arme einbauen (die Statuszeile ist eh etwas unterbeschäftigt :wink:):

Code: Alles auswählen

import sys
import time

symbols = '\\|/-'
while 1:
   for i in symbols:
      sys.stdout.write("%s\b"%i)
      sys.stdout.flush()
      time.sleep(0.1)

oder

Code: Alles auswählen

sys.stdout.write("working ")
while 1:
   sys.stdout.write(".")
   sys.stdout.flush()
   time.sleep(0.5)   

oder eine Kombination:

Code: Alles auswählen

#symbols = ' .oOo.'
symbols = '\\|/-'
#symbols = '<^>v'
def spin():
   for i in symbols:
      sys.stdout.write("%s\b"%i)
      sys.stdout.flush()
      time.sleep(0.5)

sys.stdout.write("working ")
while 1:
   spin()
   sys.stdout.write(".")
   sys.stdout.flush()

Wenn dir das zu billig ist, bietet wx ja noch Throbber. Würde so aussehen wie in den Browsern die Dinge oben rechts die sich so lustig bewegen (huiiiiii, ... äh, ... naja :D).

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

Beitragvon CM » Montag 13. September 2004, 18:25

Hoi

Habe jetzt doch noch ein Update hochgeladen, mir ist nämlich gestern noch ein wenig reichlich seltsamer Code untergekommen. Das kommt davon, wenn man nur spät Abends dran arbeitet ...
Außerdem habe ich eine Help-Funktion eingebaut - die aber erst einmal nur den README-Text anzeigt. Ob das jetzt schon eine neue Version rechtfertigt sei natürlich dahingestellt.

In puncto Progressbar oder veränderter Zeiger, bin ich nicht recht weitergekommen. Mir ist nicht klar wie das funktionieren soll: Z.B. läuft die Suchfunktion in zwei Schritten ab, die eben lange dauern. Nach dem ersten Schritt die Progressbar auf 1/2 zu setzen macht wenig Sinn, denn das ist wenig informativ. Die anderen Funktion können an sich noch Optimierung gebrauchen. So wie ich mir z. B. die finale CheckPrimer-Funktion vorstelle, wird sie auch nicht mehr so lange dauern (wenn ich sie je schreibe, denn das ist etwas umständlich ...)
Und eine Art von Busyzeiger (so eine rollende Trommel beim Mac), den es bei manchem OS gibt, ist nicht wx integriert (oder?). Und allzu OS spezifisch möchte ich nicht werden. (Throddler habe ich erst heute morgen gesehen.)

Stattdessen habe ich gestern Abend (war völlig alleine ;-( ) ein "Busy-Info" eingebaut (dort wo es wirklich lange dauert). Das ist zwar nur eine Minimallösung, aber wohl besser als nichts. Hoffe ich mal ...

Dann habe ich heute Morgen Deine Antwort gelesen, mawe, und muß sagen: Die "Progressbar für Arme" hat in mir richtig nostalgische Gefühle geweckt. Ach, Schön! Wer weiß, vielleicht sollte ich die auch noch einbauen?

Die Statuszeile ist in der Tat unterbeschäftigt. Das war einmal anders, aber dann habe ich den Code wieder rausgeschmissen: Zu unschön.

Vielen Dank für die Kritik! Ich hoffe es gibt noch mehr davon (z.B. wenn meine Kumpel mal damit arbeiten, was eine vage Hoffnung ist ...)

Gruß,
Christian
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Beitragvon mawe » Montag 13. September 2004, 20:07

Hi!

Zum Thema Cursor:

Code: Alles auswählen

wx.BeginBusyCursor(wx.HOURGLASS_CURSOR)

Ist vielleicht die einfachste Lösung.

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

Beitragvon CM » Dienstag 5. Oktober 2004, 02:35

Hoi

habe mal ein Update hochgeladen, das den Namen verdient. Mit eurer Hilfe habe ich jetzt ja nun verschiedene Verbesserungen vornehmen können. Vor allem aber gibt es jetzt eine eingebaute Translationsfunktion und eine Funktion mit der man Information über die Codon-Usage bekommt (wurde notwendig, weil ich auch Nicht-E.coli-Gene in E.coli exprimieren will). Die Dialoge erinnern sich an vorherige Eingaben und noch es gibt noch ein paar andere Kleinigkeiten.
Außerdem sind manche Funktionen doch stabiler geworden, sprich als Anwender kann man ein bißchen weniger falsch machen.

Meine Planungsaktivitäten sind zu einem Ende gekommen (vorerst), so daß ich nicht mehr so häufig mein eigenes Programm benutzen werde. Wenn aber jemand einen besonderen Wunsch hat oder eine Anregung, so werde ich gerne noch ein Update vornehmen (email-Adresse steckt im Paket).

An dieser Stelle sollte ich aber hinzufügen, daß es immer noch keine Progressbar oder dergleichen gibt (Throbber ist zu systemspezifisch, lese: funktioniert nicht unter OSX ;-) ).

Insgesamt ist das kein tolles Werk, aber vielleicht hier und da nützlich. Insb. das DNA-Modul kann der eine oder andere sicher im Mikrobio- oder Genetikpraktikum einsetzen (und erweitern?). Mich würde es freuen, tut euch keinen Zwang an ;-) .

Viel Spaß damit,
Christian

Wer ist online?

Mitglieder in diesem Forum: addi, snafu