Sequenzanalyse in der Bioinformatik mit Python

Experienced / Talk

Im Vortrag wird am Beispiel einer Vorlesung ("Algorithmen auf Sequenzen", TU Dortmund) gezeigt, wie Python eine Brücke zwischen pseudocode-ähnlicher Beschreibung von Algorithmen und deren Implementierung bildet.
Häufig (aber nicht immer) lassen sich Lesbarkeit und Laufzeit-Effizienz dabei gut verbinden. Im Vortrag werden verschiedene (Gegen-)Beispiele gegeben.

Abstract

Die klare Syntax von Python und der Verzicht auf "line noise" führen bekanntlich dazu, dass Python-Programme in der Regel sehr gut lesbar sind. Mit ein wenig zusätzlichem Bemühen lassen sich so in einer Vorlesung Algorithmen statt mit "erfundenem" Pseudocode direkt mit Python darstellen. Mir ist dabei wichtig, dass der algorithmische Kern nicht durch Implementierungsdetails "verwässert" wird, sondern genau so gut erkennbar ist wie bei einer Pseudocode-Darstellung. In diesem Fall bietet Python den zusätzlichen Vorteil, dass die Algorithmen direkt ausprobiert werden können.

In meiner Bioinformatik-Vorlesung "Algorithmen auf Sequenzen" habe ich nun drei Jahre lang versucht, zahlreiche Algorithmen in dieser Weise formal anzugeben, zusätzlich zu einer eher textuellen Beschreibung der Idee. In vielen Fällen funktioniert dieser Ansatz hervorragend und führt sogar zu effizienten Implementierungen. In anderen Fällen lässt sich das gewünschte Ergebnis nicht so einfach erreichen.

Im Vortrag werde ich über meine Erfahrungen mit "Python als Pseudocode" in dem speziellen Umfeld der bioinformatischen Sequenzanalyse berichten und verschiedene Beispiele angeben, an denen ich Erfolg und weitere Herausforderungen diskutieren möchte, zum Beispiel

  • klassische Algorithmen für exaktes Pattern Matching
  • bit-parallele Algorithmen für exaktes Pattern Matching
  • paarweise Sequenzalignments
  • Indexstrukturen (Suffixarrays)

Da ich insbesondere auf die Python-Formulierung der Algorithmen eingehen möchte (und nicht die Zeit habe, die Algorithmen im Detail zu erklären, wie ich es in der Vorlesung tun würde), wären Vorkenntnisse über Stringalgorithmen generell nützlich. Andererseits sind einige der Beispiele als Python-Code so übersichtlich, dass man auch innerhalb von 30 Minuten die wesentlichen Ideen mitnehmen kann.

Sponsoren

Alle Sponsoren anzeigen