The Köster lab is located at the Institute of Human Genetics, University Hospital Essen, University of Duisburg-Essen. We are focused on reproducible data analysis, algorithm engineering and Bayesian statistics in Bioinformatics.
Member Position
Johannes Köster Group leader
Marcel Bargull Research fellow
Jan Forster PhD student
Till Hartmann PhD student
David Lähnemann PhD student
Felix Mölder PhD student
Bianca Stöcker PhD student
Hamdiye Uzuner PhD student

News

Date News
2021-08-23 Registration for the (virtual) Boston Snakemake Days 2021 is now open at this page.
2021-01-18 Our paper "Sustainable data analysis with Snakemake" has been published in F1000. F1000 enables us to treat this as a "rolling paper", which will be updated whenever Snakemake receives a major new feature. Hence, this paper can be seen as an always up-to-date high-level overview of what Snakemake offers for reproducible, adaptable, and transparent data analysis.
2020-04-28 Our paper "Varlociraptor: enhancing sensitivity and controlling false discovery rate in somatic indel discovery" has been published in Genome Biology. This is the first of multiple papers which will describe how Varlociraptor provides a unified statistical model for calling any kind of variant in any kind of scenario (single sample, population, tumors, pedigrees, combinations thereof) and species.
2020-02-07 Our review paper "Eleven grand challenges in single-cell data science" has been published in Genome Biology. This work is the result of an inspiring workshop on single-cell data science with many leaders of the field that we organized at the Lorentz Center in 2018.
2019-11-14 We managed to acquire funding for the Bioconda project by the Chan Zuckerberg Initiative! Bioconda was selected as one of 42 projects out of 293 submissions.
2019-09-24 Johannes has received the Friedmund-Neumann-Prize 2019 for extraordinary fundamental biomedical research from the Schering Foundation. Many thanks goes to Prof. Sven Rahmann (who has nominated Johannes), all colleagues, and the Snakemake, Bioconda, and Rust-Bio communities, without whom this would not have been possible.
2019-03-21 Register here for our Snakemake tutorial in Boston in May 2019
2018-08-23 Our paper "A Bayesian model for single cell transcript expression analysis on MERFISH data" has been published in Bioinformatics!
2018-07-02 The Bioconda paper has been published in Nature Methods!
2017-11-03 The Bioconda project that has been founded by Johannes Köster in 2015 has been acknowledged by Nature. Nature technology editor Jeffrey Perkel has blogged about it here.

Research

Projects

Snakemake

Snakemake is a popular workflow management system. Snakemake reduces the complexity of formalizing and executing data analyses by providing a fast and comfortable execution environment, together with a clean and modern Python-based specification language. Snakemake workflows scale from workstations to compute servers, clusters, the grid and the cloud without the need to adjust the workflow definition.

visit homepage

Bioconda

A distribution of bioinformatics software realized as a channel for the versatile package manager Conda. Bioconda is a multinational project with hundreds of developers and thousands of software packages.

visit homepage

MERFISHtools

A Bayesian model for single-cell transcript (differential) expression analysis on MERFISH data. The model allows to overcome systematic biases occurring with MERFISH and provides measures of uncertainty and control of the false discovery rate in a strictly Bayesian way. MERFISHtools is a corresponding command line client and analysis library written in Rust and Python. MERFISHtools is also available via Bioconda.

visit homepage

Rust-Bio

A bioinformatics library written in the Rust language. The implementation provides state of the art solutions for common tasks in bioinformatics, focusing on stability by using comprehensive unit tests and continuous integration.

visit homepage

Protein Hypernetworks

This project aims to model protein networks along with dependencies between interactions like allosteric effects, steric hindrance and competition on binding domains. This allows us to improve the accuracy of protein complex prediction and to simulate the effects of perturbations like knockout or over-expression.

Contact

email johannes.koester@uni-due.de
phone +49 (0)201 723 1908
www https://koesterlab.github.io
office Room 1.13
University Hospital Essen
Virchowstr. 183
45147 Essen
[Google Maps]
postal Algorithms for reproducible bioinformatics
Genome Informatics
Institute of Human Genetics
University of Duisburg-Essen
Hufelandstr. 55
45147 Essen
Germany

Teaching

Entwicklung einer Rust-Bibliothek am Beispiel von Wavelet Trees

Art Fachprojekt
Semester SS 2019
Zeit 1.4.2019 - 12.7.2019, Freitag, 8h-12h (Anwesenheitspflicht)
Ort OH12, Raum 3.033
Ablauf und Material TBA
Kontakt johannes.koester@uni-due.de

Die Programmiersprache Rust erfreut sich in den letzten Jahren wachsender Beliebtheit. Neben tausenden Open-Source-Projekten erfolgt die derzeit stattfindende schrittweise Reimplementierung des Firefox-Browsers durch die Mozilla-Foundation in Rust. Des weiteren wurde Rust drei Jahre in Folge zur "most loved programming language" auf Stack Overflow gewählt. Ein Grund für diese Beliebtheit ist der Compiler von Rust, der es erlaubt Thread- und Speichersicherheit zur Kompilierzeit zu garantieren ohne Geschwindigkeitseinbußen hinnehmen zu müssen. Dies ist realisiert indem Speicherallokationen und -zugriffe einem neuartigen Konzept von "Ownership" und "Borrowing" unterworfen werden.

Ziel des Fachprojekts ist, mittels Rust eine robuste und schnelle Implementierung von Wavelet Trees als Programmierbibliothek zu realisieren. Wavelet Trees sind eine Datenstruktur zur komprimierten Speicherung von Zeichenfolgen. Ursprünglich wurden Wavelet Trees bei der Volltextindizierung eingesetzt. Seitdem haben sich diverse andere Anwendungsgebiete ergeben. Sie können eingesetzt werden um u.a. Graphen, Permutationen, Mengen, binäre Relationen und numerische Sequenzen speichereffizient zu repräsentieren.

Die Aufgabe der Studenten ist, auf Basis von aktueller Literatur, eine allgemein verwendbare, effiziente Implementierung von Wavelet Trees in Rust zu erstellen. Zudem sollen Interfaces für verschiedene Anwendungsgebiete designt werden. Dabei wird zum einen ein Einblick in ein neues theoretisches Feld, zum anderen in eine vielversprechende neue Programmiersprache gewonnen. Des weiteren hat sich gezeigt, dass die Beschäftigung mit den Konzepten von Rust hilft, ein besseres Verständnis für wichtige technische Aspekte der Programmierung zu entwickeln.

Reproduzierbare Datenanalyse mit Snakemake am Beispiel der Bioinformatik

Art Fachprojekt
Semester WS 2018/2019
Zeit 08.10.2018 - 01.02.2019, Donnerstag, 14-18h (Anwesenheitspflicht)
Ort OH12, Raum 3.033
Ablauf und Material Wiki
Kontakt johannes.koester@uni-due.de

In der Bioinformatik, aber auch in vielen anderen Wissenschaftszweigen spielt heutzutage die Analyse von großen Datenmengen eine wichtige Rolle. Um reproduzierbare und verlässliche Ergebnisse zu erhalten müssen drei Dimensionen beachtet werden. Erstens bedarf es einer formalen Beschreibung einer Datenanalyse, welche automatisiert ausführbar sein muss und dokumentiert aus welchen Schritten die Analyse besteht und welche Parameter verwendet wurden. Zweitens muss eine Datenanalyse skalierbar sein, dass heißt sie muss ohne Modifikation gegebene Resourcen in unterschiedlichen Umgebungen (Workstation, Server, Cluster, Grid, Cloud) effizient Nutzen können. Drittens muss sie portierbar sein, dass heißt sie muss ohne großen Aufwand auf einem neuen, nicht speziell vorbereiteten System lauffähig sein.

Mit Snakemake steht ein sehr erfolgreiches System zur Verfügung welches alle drei oben genannten Anforderungen umsetzt. Ziel des Fachprojekts ist, in Kleingruppen mit Hilfe von Snakemake Referenzimplementierungen für typische Datenanalysen aus der Bioinformatik zu erstellen. Dabei werden zusätzlich zu zentralen Datenanalyse-Paradigmen allgemeine Fähigkeiten aus den Bereichen Linux-Kommandozeile, Python, R und Visualisierung erlernt. Außerdem werden zentrale Themen der Bioinformatik aufgegriffen und vertieft.

Entwicklung einer Rust-Bibliothek am Beispiel von Succinct Trees

Art Fachprojekt
Semester SS 2018
Zeit 09.04.2018 - 20.07.2018, Freitag 8-12h (Anwesenheitspflicht)
Ort OH12, Raum 3.032, TU Dortmund
Ablauf und Material Wiki
Kontakt johannes.koester@uni-due.de

Die Programmiersprache Rust erfreut sich in den letzten Jahren wachsender Beliebtheit. Neben tausenden Open-Source-Projekten erfolgt die derzeit stattfindende schrittweise Reimplementierung des Firefox-Browsers durch die Mozilla-Foundation in Rust. Des weiteren wurde Rust zwei Jahre in Folge zur "most loved programming language" auf Stack Overflow gewählt. Ein Grund für diese Beliebtheit ist der Compiler von Rust, der es erlaubt Thread- und Speichersicherheit zur Kompilierzeit zu garantieren ohne Geschwindigkeitseinbußen hinnehmen zu müssen. Dies ist realisiert indem Speicherallokationen und -zugriffe einem neuartigen Konzept von "Ownership" und "Borrowing" unterworfen werden.

Ziel des Fachprojekts ist, mittels Rust eine robuste und schnelle Implementierung von Succinct Trees als Programmierbibliothek zu realisieren. Durch die Verwendung von Bitvektor-Techniken (Rank/Select) ermöglichen Succinct Trees die Repräsentation von Bäumen mit n Knoten in 2n + o(n) Bits anstelle von O(n log n) Bits. Des weiteren können diverse Baum-Operationen in konstanter Zeit ausgeführt werden. Eine erfolgreiche Implementierung besäße zahlreiche Anwendungsmöglichkeiten, insbesondere in Fällen wo eine herkömmliche Baumrepräsentation nicht effizient genug oder zu groß wäre.

Es existieren mehrere alternative Repräsentationen von succinct trees, die je nach Operation unterschiedliche Stärken und Schwächen haben. Die Aufgabe der Studenten ist, mindestens eine Repräsentation zu implementieren. Dabei wird zum einen ein Einblick in ein neues theoretisches Feld, zum anderen in eine vielversprechende neue Programmiersprache gewonnen. Des weiteren hat sich gezeigt, dass die Beschäftigung mit den Konzepten von Rust hilft, ein besseres Verständnis für wichtige technische Aspekte der Programmierung zu entwickeln.