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 |
- 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
- Versionierung und Bugtracking mit Git(Hub)
- Erfahrungen aus einem Semesterprojekt
- Vortrag: Informelle Anforderungen an das System
- Bux
- Gross
- Leser, Sprenger
- Projektstruktur (Teilprojekte, Projektleitung)
- Zuordnung Studierende – Teilprojekte
- Grobe Charakterisierung der Aufgaben pro Teilprojekt
- Informelle Beschreibung von 3 Use Cases
- Liste und Status geplanter Projektmanagementtools
- Präsentation erste Abgabe durch technische Projektleitung (TPL)
- Review durch Betreuer
- Vortrag Webprogrammierung (Code)
- Projektleiter
- Betreuer
- Starlinger
- Projektstruktur 2. Revision
- Projektplan
- Style Guide
- Grobspezifikation aller Teilprojekte
- Vortrag Genomdaten und deren Integration
- Projektplan 2nd revision
- Vortrag Hauptspeicherindexstrukturen
- Präsentation Projektplan
- Review
- Sprenger
- Projektleiter
- Betreuer
- 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
- 09.15: Integrationsgruppe
- 09.45: Middlewaregruppe
- 10.15: Interfacegruppe
- Vortrag Continuous Integration
- Zwischenreview: Stand aller Teilprojekte
- Sprenger
- Teilprojektleiter
- Funkionierendes UI (mit Testdaten)
- Schnelle Middleware (mit Testdaten)
- Integrierte Datenbank
- Ergebnisse Unit-Tests
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