Fabian Deitelhoff

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

  • Über mich
  • Kontakt
  • Twainsoft
  • Impressum
  • Artikel
    • dotnetpro
      • Rubrik „Frameworks“
    • heise Developer
    • Visual Studio One
    • Windows Developer
    • OBJEKTspektrum
    • Entwickler Magazin
  • Bücher
    • Rezensionen
    • Implementierung von Lizenzmodellen in .NET
    • GRIN
  • Artikelserien
    • Beiträge zum LEGO Mindstorms EV3
    • Raspberry Pi 2 als Mediacenter mit OSMC
    • Raspberry Pi als Mediacenter mit Raspbmc
    • Beiträge zum Thema Verschlüsselung & E-Mails

Lesedauer: 4 Minuten, 824 Wörter 1 Kommentar

Das ROSALIND-Projekt

30. November 2012 25. März 2013 - 14:55 Fabian Deitelhoff

ROSALIND-Projekt

Das Projektlogo des ROSALIND-Projekts.

Aktuelle Probleme aus der Bio-Informatik selber lösen. Was sich zunächst unrealistisch oder mindestens schwierig anhört, wird durch das ROSALIND-Projekt für jeden möglich, der sich für eine Programmiersprache begeistern kann.

Das Projekt

Genauer genommen handelt es sich bei ROSALIND um eine Plattform, die bekannte Probleme aus der Bio-Informatik didaktisch gut aufbereitet zur Verfügung stellt. Alle Probleme sind eindeutig durch eine ID und eine Beschreibung gekennzeichnet. Zusätzlich wird auf der Übersichtsseite die Anzahl der bereits eingegangenen Lösungen und das Verhältnis von korrekten zu fehlerhaften Lösungsversuchen ausgegeben.

Genau hier liegt auch der tiefere Sinn von ROSALIND. Interessierte Entwickler beziehungsweise Entwicklerinnen können sich auf der Projektseite registrieren. Nach einem Login wird anschließend auf der Übersichtsseite angezeigt, welche Probleme schon gelöst wurden. Von dem Zeitpunkt an können pro Problem eigene Lösungen eingereicht werden. Mit welcher Programmiersprache diese erzeugt werden, bleibt einem selbst überlassen. Laut Projektseite wird zwar Python bevorzugt, das ist aber lediglich ein Hinweis und keine Empfehlung.

Das viele unterschiedliche Lösungswege in den unterschiedlichsten Programmiersprachen eingereicht werden zeigt sich, wenn ein Problem eigenständig gelöst wurde. Anschließend können Lösungen, zu denen auch der Quelltext mit eingereichte wurde, eingesehen werden. So zum Beispiel beim DNA-Problem, bei dem die unterschiedlichen Nukleotide eines DNA-Strangs gezählt werden sollen. Die Bandbreite der eingereichten Lösungen reicht von Ruby, Perl über C, Scala bis hin zu Java und C#. Auch Shellskripte, Texteditoren und selbst SQL werden zur Lösung einiger Probleme herangezogen. Das ist besonders für einfachere Aufgabenstellungen der Fall, bei dem es um simple Operationen auf Zeichenketten geht. Das eigene Profil oder die Baumansicht der Probleme verraten zu jeder Zeit, wie groß der eigenen Fortschritt ist. Die Baumansicht verrät zusätzlich, welche Probleme thematisch aufeinander aufbauen. Wurde ein Problem erfolgreich gelöst, wird nicht zwingend einfach das nächste Problem aus der Liste zur Bearbeitung freigegeben. Es ist auch möglich, dass mehrere Probleme bearbeitet werden können. Das erlaubt eine parallele Bearbeitung von mehreren Personen in einem Team oder das Springen zwischen Problemstellungen, falls partout die Lösung zu einem speziellen Problem nicht gelingen will.

Die Problemspezifikationen

Nun bin ich noch die Antwort auf die Frage schuldig, warum ich dieses Projekt hier vorstelle. Zum einen liegt das an meinem Schwerpunkt im Masterstudium, den ich auf die Bio-Medizinische Informatik gelegt habe. Mittlerweile bemerke ich, dass mein Interesse für diese Art der Fragestellungen immer größer wird. Mein größter Ansporn ist also sicherlich der Spaß an der Sache und die Möglichkeit, mir Wissen aus der Bio-Informatik anzueignen. Zum anderen eignen sich die Probleme auch hervorragend dazu, Methoden und Praktiken aus der Softwareentwicklung anzuwenden und zu vertiefen. Das liegt an der sehr guten Aufbereitung der Aufgabenstellungen.

Alle Probleme werden zunächst mit einer Beschreibung eingeleitet. Diese gibt einen oberflächlichen aber ausreichenden Abriss der Aufgabenstellung und der praktischen Relevanz des Problems. Anschließend wird eine mehr oder weniger formalisierte Problembeschreibung gegeben. Dazu gehört auch die Spezifikation von Eingabe- und Ausgabedaten. Anschießend ist genau klar, welche Eingaben das eigene Programm zu erwarten hat und welche Ausgaben erzeugt werden sollen. Das ist eine schöne Ausnahme zu vielen Beispielen aus der Praxis, wo diese Definitionen oft genug fehlen. Trotzdem setzt das ROSALIND-Projekt noch einen oben drauf. Zu jedem Problem werden zwei Datensätze mitgeliefert. Der erste beschreibt anhand eines Beispiels die Eingabe, der zweite die dazu passende Ausgabe. Für das bereits angesprochene DNA-Problem sieht das beispielsweise folgendermaßen aus.

Sample Dataset

AGCTTTTCATTCTGACTGCAACGGGCAATATGTCT
CTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC

Sample Output

20 12 17 21

Für den beschriebenen DNA-Strang muss die selbst implementierte Methoden also die angegebene Ausgabe erzeugen. Das Format der Ausgabe muss dabei genau beachtet werden. In diesem Fall also vier ganze Zahlen, die jeweils durch ein Leerzeichen getrennt werden. Wird eine Lösung eingereicht, kann die berechnete Ausgabe entweder in ein Textfeld eingegeben oder eine Datei zum Hochladen ausgewählt werden. Der eigene Quelltext kann optional als Datei angegeben werden.

Geplante Implementierung

Dadurch eigenen sich alle Probleme des ROSALIND-Projekts sehr gut für die testgetriebene Entwicklung. Die Beispieldaten können für einen ersten Unit-Test verwendet werden. Anschließend ist die eigentliche Implementierung an der Reihe.

Mein Plan ist es, alle Probleme des ROSALIND-Projekts nach und nach zu lösen und die implementierten Algorithmen in einer Bibliothek zu vereinen. Das hat viele Trainingseffekte auf einmal. Im Bereich TDD, C#, Bio-Informatik sowie Algorithmen- und Softwaredesign. Wie gut ich dabei vorankomme, lässt sich jetzt noch schwer abschätzen. Das liegt natürlich an dem steigenden Niveau der Probleme, aber auch an meinem eh schon knappen Zeitbudget. Trotzdem bin ich momentan zuversichtlich, viele der Probleme lösen zu können, auch wenn es einige Zeit in Anspruch nehmen wird.

Die Lösungen werde ich hier veröffentlichen. Inklusive weiterer Informationen, was beim Lösen und Einreichen von Lösungen möglicherweise zu beachten ist.

Das ROSALIND-Projekt
Bewertung

  • twittern  
  • teilen  
  • teilen  
  • teilen  
  • teilen  
  • flattr  
  • e-mail 
  • drucken 
  • teilen 
  • teilen 

Ähnliche Beiträge

  • Einreichungen bei ROSALIND
  • ROSALIND: Der Projektaufbau
  • OneNote 2013: Probleme beim Synchronisieren
  • Coursera: Freie Online-Kurse
  • Probleme mit Outlook, OutlookPrivacyPlugin und IMAP

Kategorie: .NET, Bio-Informatik, C#, ROSALIND Stichworte: .NET, Bio-Informatik, C#, German, ROSALIND, TDD

Trackbacks/ Pingbacks

  1. Einreichungen bei ROSALIND | Fabian Deitelhoff sagt:
    4. Dezember 2012 um 19:19 Uhr

    […] meinem vorherigen Blog-Artikel zum Thema ROSALIND habe ich einen kurzen Überblick über das Projekt und die Plattform gegeben. In […]

    Antworten

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Suche

Soziale Netzwerke

  • Email
  • Github
  • Google+
  • RSS
  • Twitter

Der EV3 Newslett3r

Archiv

Kategorien

Beliebte Beiträge

  • LEGO Mindstorms Education EV3 – Offizielle Bauanleitungen (+Software) veröffentlicht am 18. November 2015
  • LEGO Mindstorms EV3: Tipps & Tricks zur Fehlersuche veröffentlicht am 26. Januar 2016
  • LEGO Mindstorms EV3 Education – Offizielle Software-Blöcke veröffentlicht am 31. Dezember 2015
  • LEGO Mindstorms Education EV3: Kostenfreie Education Software veröffentlicht am 2. Juli 2016
  • Git: Besserer Vergleich von Word-Dokumenten veröffentlicht am 13. November 2013
Copyright © Fabian Deitelhoff 2012 - 2021 | Theme based upon the Genesis Framework.
Diese Website benutzt Cookies. Wenn du die Website weiter nutzt, stimmst du der Verwendung von Cookies zu. Akzeptieren Info