Django für Darstellung biol. Daten?

Django, Flask, Bottle, WSGI, CGI…
Antworten
ete
User
Beiträge: 218
Registriert: Montag 19. Februar 2007, 13:19
Kontaktdaten:

Hallo!

Ich wollte mal eure Meinung hören, ob Django das Richtige für uns ist:

Also es geht darum viele Daten, die miteinander in Verbindung stehen, darzustellen. Das können unterschiedlichste Datentypen sein, Text, Bilder etc. Die Daten werden alle in einer DB gespeichert und sollen nach einer Suche vom User entsprechend angezeigt werden. Etwas so was hier:
http://biogps.gnf.org/#goto=genereport&id=1017
http://www.gabipd.org/database/cgi-bin/ ... =1&Rows=50

Also Quasi 2 Webseiten. Eine Seite als Suche, die zweite zeigt die Daten entsprechend der Suche an. Der Aufbau ist aber immer gleich.

Hier meine Fragen:

1) Ich kann nur Python und würde gerne Django als Framework nehmen. Ist das sinnvoll, was meint ihr?
2) Dumme Frage aber wie bekommt man so ne nette Fancy GUI hin, mit Tabs und so weiter? Habe bis jetzt nur etwas HTML Erfahrung, was hässlich aussieht.
3) Wie siehts mit der Sicherheit aus. Die Daten dürfen nicht Publik gemacht werden.
4) Wie macht man das eigentlich mit Berechnungen? Macht man die Berechnungen vorher und läd sie in die DB oder rechnet man in "Echtzeit" wenn der User den Request gibt?
5) Lassen sich andere Programm leicht einbinden?

Wäre für jeden Tip dankbar!
Stefanie
http://www.snowflake-sl.info/index.html
BlackJack

@ete: 1) IMHO spricht nichts gegen Django. Das finden die von gnf.org auch -- lies mal den Abschnitt `Technology` auf http://biogps.gnf.org/about/ was die für die Präsentations-Schicht verwenden. ;-)

2) Dort steht auch, das sie auf Browserseite EXTJS verwenden. Damit kann man auch so schicke GUIs programmieren. Bedeutet natürlich, dass Du JavaScript können, und Dich in so eine Bibliothek einarbeiten musst.

3) Django kennt so etwas wie Benutzer, Gruppen, und Rechte. Dann musst Du die Verbindung noch über HTTPS machen.

4) Das kommt ganz auf die Berechnungen an. Je nach dem wie lange die dauern, wie oft sie gemacht werden, wie statisch die Ergebnisse sind. Da kann man von immer neu berechnen, über eine zeitlang vorhalten, bis vorberechnen und in die DB packen, alles mögliche machen.

5) Kannst Du Die Frage präzisieren? Man kann alles machen, was man mit Python halt machen kann, als der Benutzer unter dem Django letztendlich läuft. Welcher Benutzer das ist und was der darf, hängt von der Webserver- und Systemkonfiguration ab.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi Stefanie,

ad 1) Bin nicht der große Django-Experte, aber ich habe vor zwei Monaten ernsthaft ein LIMS damit geplant (ganz ähnlich wie Deine Fragestellung, nur andere Daten - das Projekt ist nicht beerdigt, aber wegen Zeitmangel erst Mal min. 1 Jahr auf Eis) und denke von daher: Ja, Django ist geeignet. Allerdings ist das keine Sache, die in kurzer Zeit erledigt werden kann und in dem vorgeschlagenen Umfang zur Pflege fast schon eine Vollzeitstelle braucht. Und wenn ich die Komplexität richtig einschätze, dann sollte die Person definitiv auch ein wenig Ahnung von SQL-Datenbanken haben, weil Django nicht die ganze Arbeit machen wird (gerade bei Nachbesserungen, der Datenbank).
ad 2) Es gibt da einige Django-Tutorials/Bücher/etc. (gut fand ich: The Definitive Guide to Django, ISBN: 9781430219361; ist aber schon veraltet). Mit Django kann man durchaus die Möglichkeiten des Browsers bzgl. Tabs und Frames nutzen (alldieweil ich keine Ahnung habe wie der Crosstalk zwischen Tabs in einer Applikation funktioniert, bzw. ob überhaupt).
ad 3) Das ist eher 'ne Frage, die Du mit Deinem lokalen Admin besprechen solltest. IMHO ist es jedenfalls keine gute Idee öffentlich sichtbare Datenbanken und Interfaces zu haben und dann im Programm Aussenstehenden den Zugriff zu verweigern. Besser ist es wohl das Framework gar nicht erst sichtbar zu haben. Daneben werden Sicherheitsaspekte aber auch in den Django-Referenzmaterialien erörtert (womit ich mich aber noch nicht gut genug auskenne, um mehr zu raten), z.B. http://www.djangobook.com/en/2.0/chapter20/ - und damit hört es nicht auf. Auf Basics wie Nutzerlogin würde ich nicht verzichten wollen - gerade im Kontext eines Forschungsinstitutes mit rel. viel Publikumsverkehr.
ad 4) Du hast sogar 3 Möglichkeiten (plus die von BJ genannten) ;-) und ich würde folgende Strategie vorschlagen: 1. zeitintensive Rechnungen mit kleinen finalen Datenmengen oder solche, die sehr viel abgefragt werden vorab berechnen. 2. schnell zu rechnende Dinge, die eher selten abgefragt werden, online berechnen und 3. kannst Du auch ein Mischprogramm fahren, bei dem die Berechnung auf die erste (oder x-ste) Anfrage (in einem best. Zeitraum) hin durchgeführt werden und alle weiteren gleichartigen Anfragen aus der DB bedient werden. Wahrscheinlich wirst Du nicht so viel Traffic haben (eine Arbeitsgruppe, ein Forschungsnetzwerk oder so), so daß Du in diese Kategorien anders einteilst, als die Mammutprojekte wie HAPMAP oder 1k machen. Außerdem spielen andere Kriterien wie die Größe der Datenbank und die gewünschten Latenzzeiten eine Rolle. Und natürlich, ob das Rechnen der zeitlich limitierende Schritt ist oder die Darstellung. Und schließlich kommen Dir wohl noch ganz andere Aspekte in den Sinn. (edit: Plus der Aspekt der Statik, den BJ genannt hat)
ad 5) Was meinst Du? Auf Pythonebene - und mit Django entstehende da keine Einschränkungen - steht Dir subprocess und Co. zur Verfügung. Also blast oder Ähnliches sollte kein Problem sein, Beispiele gibt es im Netz. So etwas userfriendly zu machen, ist aber u. U. aufwendig (man sollte ja anzeigen: "So, jetzt lieber Nutzer, steht Dein Framework nicht zur Verfügung, weil es erst einmal auf die Antwort von EMBOSS wartet.", etc.).

Fazit: Ambitioniert, aber machbar. Matplotlib oder Reportlab und Django vertragen sich auch.

Gruß,
Christian

PS Sorry, wenn ich nicht ins Detail gehen kann: Zu wenig Webdevelopment-Praxis und zu wenig Zeit.
PPS BJ war schneller ... ;-)
ete
User
Beiträge: 218
Registriert: Montag 19. Februar 2007, 13:19
Kontaktdaten:

Vielen Dank ihr zwei, für die sehr ausführlichen Antworten!

Zumindest schreit niemand NEIN als ich nach Django fragte. Also bleibe ich wohl dabei (hatte schon mal ein bisschen mit dem Tutorial angefangen und war mal bei Markus's Kurs in Leipzig).

Klar die Sache wird aufwendig, ich habe ca. 1,5 Monate 50 % Zeit. Es soll aber auch kein Endprodukt geliefert werden. Eher ein Beispiel, was man machen kann (mit Testdaten). Die eigentlichen Daten in die DB zu packen, braucht wahrscheinlich am Ende die meiste Zeit. Ich will gar nicht an meine hunderten von Excel Datein denken :( Der grosse Vorteil ist, ich habe die Daten selbst produziert. Daher ich kenne mich in dem Chaos am Besten aus, einarbeiten fällt daher weg. Bin dadurch auch sehr motiviert, da die Redundanz und Fehlerquote bei 3 Mann an allen Datein rummurkeln stetig steigt...

Zu 5)
Ja, ich meine so was wie BLAST, also z.B. exe Datein über subprocess ausführen.

@CM
Die Antworten von BJ und dir waren ausreichend und sehr hilfreich. Mir war wichtig, das kein "Um Gottes willen, dafür doch nicht Django" kommt, da ich von Webdevelopment keine Ahnung habe.

Also danke nochmals und einen schönen Abend noch!
Stefanie
http://www.snowflake-sl.info/index.html
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi,

bin gerade mit 'ner ziemlichen langsamen Verbindung unterwegs, daher keine Links, aber google doch mal 'python parallel blast' ;-). Da ist meist von pp die Rede. Ich würde ja multiprocessing vorziehen. Und bei einem großen Cluster selber um das jeweilige Queueing-System rumbasteln. (Falls Du so was hast und torque nutzt hätte ich etwas bash-Code für Dich.)

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

Noch ein grosses Plus für Django :mrgreen: :mrgreen:
http://www.mylittledjango.com/

Endlich wurde auch mal an die Mädchen gedacht :wink:
http://www.snowflake-sl.info/index.html
Antworten