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:
|
Alle Projektteilnehmer | Ungeprüft |
20.10. |
|
|
Done |
26.10. Abgabe |
In einem Bericht (PDF) per Mail bis 26.10.15, 9.00 Uhr (Montag)
|
Projektleiter | Done |
27.10. |
|
|
Done |
2.11. Abgabe |
In einem Bericht (PDF) per Mail bis 2.11.15, 9.00 Uhr (Montag):
|
Projektleiter | Done |
3.11. |
|
Leser | |
9.11. Abgabe |
|
Done | |
10.11. |
|
|
|
14.11. | Erster Meilenstein: Projektplan | Alle | Gehalten |
17.11. | Grundlagen nebenläufiger Programmierung in Java | Bux | Done |
30.11. Abgabe |
Projektspezifikation
|
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.
|
Projektleiter und Teilprojektleiter | Done |
10.12. | Zweiter Meilenstein: Projektspezifikation | Alle | Nicht gehalten | 15.12. |
|
| 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.
|
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