Humboldt-Universität zu Berlin - Mathematisch-Naturwissenschaftliche Fakultät - Wissensmanagement in der Bioinformatik

Semesterprojekt Verteilte Echtzeitrecherche in Genomdaten

Professor Ulf Leser, Marc Bux, Stefan Sprenger

 

International sind eine Fülle von ganz oder teilweise aufgeklärten humanen Genome frei verfügbar. Beispielsweise stellt das 1000 Genomes Projekt Mutationsprofile von 2500 Menschen zur Verfügung , der The Cancer Genom Atlas Profile von hunderten von Tumoren, oder die DBSNP Datenbank Informationen über Dutzende Millionen bekannte humane genetische Varianten. In diesem Projekt soll ein System entwickelt werden, das eine intuitive Recherche in möglichst vielen öffentlich verfügbaren humanen Genomdaten in "quasi" Echtzeit (Antwortzeiten unter 1sec) ermöglichen soll.

Um hohe Abfragegeschwindigkeit zu erreichen, müssen dazu alle Quellen periodisch heruntergeladen und lokal in ein System integriert werden. Aufgrund der Datenmengen soll über dieser Datenbasis ein verteilter Index entworfen und implementiert werden. Dieser Index muss typische Anfragemuster unterstützen. Ergebnisse von Anfragen sollen über eine webbasierte, grafische Oberfläche visualisiert werden können.

Die wesentlichen zu lösenden Probleme betreffen damit:

  • (Periodische) Integration heterogener Datenquellen
  • Entwurf und Implementierung einer integrierten Mutationsdatenbank
  • Definition und Implementierung von Anfragemöglichkeiten
  • Entwurf und Implementierung eines verteilten Index für typische Anfragen über der Datenbank
  • Implementierung der Anfragebearbeitungslogik
  • Visualisierung sehr grosser Mutationsmengen

Einführungstermin ist Dienstag, den 13.10.13, von 9-11 Uhr, RUD25, 4.113. Teilnahme an diesem Termin ist verpflichtend.

Voraussetzungen

Voraussetzung für den Besuch sind gute Kenntnisse in der Softwareentwicklung mit Java und, je nach gewähltem Teilprojekt, gute Kenntnisse in Datenbanken, Anwendungsarchitekturen, oder der Entwicklung graphischer Webseiten.

Anrechenbarkeit

Die Veranstaltung ist nur für den Monobachelor Informatik anrechenbar

Struktur des Projekts

Das Projekt wird in Teilprojekte zerlegt. Eine Gruppe von Studierenden entwickelt die Datenintegrationsmodule, eine andere Datenbank und den verteilten Index, eine dritte die Middleware und die grafische Oberfläche. Daneben wird es eine technische (studentische) Projektleitung geben. Die Entwicklung wird professionelle Werkzeuge wie SVN und Bugtracker benutzen und einen klassischen Verlauf über Use Cases, Spezifikation, Implementierung, Tests, Integration und Abnahme durch die Betreuer geben. Die Gruppen organisieren sich dazu in regelmäßigen Treffen selber und nehmen an moderierten, gruppenübergreifenden Treffen zur Absprache des Designs und der Schnittstellen teil. Zum Abnschluss müssen die Ergebnisse in Vorträgen und Postern präsentiert werden.

Die Betreuer übernehmen im Projekt die Rolle eines fiktiven Kunden, der eine Software in Auftrag gibt und vorgibt, wie das Endprodukt aussehen soll, aber nicht, wie man das am besten erreicht - das sollen die Studierenden im Projekt gemeinsam erarbeiten und umsetzen. Natürlich geben die Betreuer auch Hilfestellungen zu technischen Fragen und Schwierigkeiten durch.

Begleitprogramm

Das Projekt wird durch ein Begleitprogramm begleitet. Geplant sind Kurzvorlesungen unter Anderem zu den folgenden Themen:
  • Human Mutation Databases und deren Integration (Leser)
  • Grundlagen verteilter Programmierung (Bux)
  • Hauptspeicherindexstrukturen (Sprenger)
  • Versionierung und Bugtracking mit Git(Hub) (Bux)
  • Webprogrammierung (Starlinger)
  • Continuous Integration (Sprenger)

Material und Zeitplanung

Wann Was Verantwortlich Status
13.10.15 Folien der Einführungsveranstaltung Leser Done
Bis 20.10. Informieren über div. Themen:
  • Techniken: Model-View-Controler, Haupspeicher-Suchbäume, Interval-Indexstrukturen, Java Servlets, Java ServerFaces, AJAX
  • Allgemeine Grundlagen Bioinformatik (Wikipedia, Folien der Vorlesung "Grundlagen der BioinformatiK" von Ulf Leser)
  • Datenbanken: Entrez Gene Database, Genbank Sequence Archive, Human Mutation Database
Alle Projektteilnehmer Ungeprüft
20.10.
  • Bux
  • Gross
  • Leser, Sprenger
Done
26.10. Abgabe In einem Bericht (PDF) per Mail bis 26.10.15, 9.00 Uhr (Montag)
  • Projektstruktur (Teilprojekte, Projektleitung)
  • Zuordnung Studierende – Teilprojekte
  • Grobe Charakterisierung der Aufgaben pro Teilprojekt
  • Informelle Beschreibung von 3 Use Cases
  • Liste und Status geplanter Projektmanagementtools
Projektleiter Done
27.10.
  • Projektleiter
  • Betreuer
  • Starlinger
Done
2.11. Abgabe In einem Bericht (PDF) per Mail bis 2.11.15, 9.00 Uhr (Montag):
  • Projektstruktur 2. Revision
  • Projektplan
  • Style Guide
  • Grobspezifikation aller Teilprojekte
Projektleiter Done
3.11. Leser
9.11. Abgabe
  • Projektplan 2nd revision
Done
10.11.
  • Sprenger
  • Projektleiter
  • Betreuer
14.11. Erster Meilenstein: Projektplan Alle Gehalten
17.11. Grundlagen nebenläufiger Programmierung in Java Bux Done
30.11. Abgabe Projektspezifikation
  • Modelle aller Teilprojekte (Schemata, UML, etc.)
  • Exakte Beschreibung Integrationsprozess (welche Quelle, Attributauswahl und -mapping, Mengengerüst, Modellierung des DWH)
  • Schnittstellenspezifikation (DB-Middelware, Middleware-Frontend)
  • Definition Komponententests (Unit-Tests), Stresstests (Middleware), Integrationstests
  • Formale Beschreibung Indexstruktur, Operationen als Pseudocode, Komplexitätsabschätzungen
  • Mock-Ups Benutzerschnittstelle
  • Sequence-charts für den Ablauf jeder zentralen Funktionen vom UI zur Infrastruktur und zurück
Verspätet
1.12. Präsentation Projektspezifikation. Jedes Teilprojekt trägt 5-10 Minuten vor, gefolgt von einer Diskussion mit den Kunden. Es sollten jeweils nur die Teilprojektmitglieder und mindestens ein PL anwesend sein.
  • 09.15: Integrationsgruppe
  • 09.45: Middlewaregruppe
  • 10.15: Interfacegruppe
Projektleiter und Teilprojektleiter Done
10.12. Zweiter Meilenstein: Projektspezifikation Alle Nicht gehalten
15.12.
  • Sprenger
  • Teilprojektleiter
Done
23.12.15 Neuer Zweiter Meilenstein: Projektspezifikation Alle Gehalten
11.1.2016 Abgabe Beschreibung der Implementationen Teilprojekte. Abzugeben ist ein Abschnitt pro Teilprojekt, dass den Stand der Implementierung bezogen auf die Spezifikation darstellt. Welche Teile der Spez wurden fertig implementiert, welche Tests wurden implementiert und wie wurden sie durchgeführt, und bei welchen Teilen haben sich Änderungen ergeben? Außerdem ein Abschnitt, der den Gesamtkontext herstellt. Die einzelnen Teilprojekte müssen noch nicht gemeinsam funktionieren, Tests werden mit Mock-Up Interfaces und Testdaten durchgeführt.
  • Funkionierendes UI (mit Testdaten)
  • Schnelle Middleware (mit Testdaten)
  • Integrierte Datenbank
  • Ergebnisse Unit-Tests
Projektleiter Done
12.1.2016 Codereview in drei Teilgruppen. TP-Leiter führen durch den Code, die Entwicklungsumgebung, die Testdaten, die Konfiguration, und die Testumgebung. Teilprojekte Done
26.1.2016 Zweites Codereview in drei Teilgruppen. TP-Leiter stellen die Neuerungen gegenüber dem ersten Codereview vor und nehmen dabei Bezug auf das damals erhaltene Feedback. Voraussetzung für das zweite Codereview ist, dass der Quellcode vollständig im zentralen Code-Repository verfügbar ist. Teilprojekte Offen
1.2.2016 Abgabe Schlüsselfertiges, dokumentiertes System Projektleiter Offen
9.2.2016 Projektpräsentation, Postervorstellung, Abnahme Projektleiter
14.2. Dritter Meilenstein: Projektabschluss Alle Offen
16.2.2016 Projektabschluss Alle

Grober Fahrplan

Das Projekt wird in Phasen laufen; die genauen Zeitpunkte und Meilensteine werden noch festgelegt. Ein grober Überblick ist der folgende
  • Anforderungsaufnahme mit den Kunden; festhalten in informellen Beschreibungen und Use Cases
  • Projektplan: Festlegung Projektstruktur und Verantwortungsbereiche; Definition der Schnittstellen
  • Projektspezifikation: Modellieren und Spezifikation der einzelnen Teilprojekte; Definition von Testfällen; Festlegung Code-Styleguides; Festlegen Verantwortlichkeiten in den Teilprojekten
  • Implementierung: Mit wechselseitigem Code-Reviews, Komponententests und Integrationstests; Dokumentation
  • Softwareabnahme; Aufnahme und Abarbeitung von Nachbesserungsbedarf
  • Präsentation und Poster