Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und...

36
Python im Bioinformatiker-Alltag Marcel Martin Bioinformatik f¨ ur Hochdurchsatztechnologien, TU Dortmund 6. Oktober 2011 1 von 27

Transcript of Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und...

Page 1: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Python im Bioinformatiker-Alltag

Marcel Martin

Bioinformatik fur Hochdurchsatztechnologien, TU Dortmund

6. Oktober 2011

1 von 27

Page 2: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Worum gehts?

Bioinformatik

Lost Probleme in Biologie oder Medizin

Teilbereich Genominformatik

Analysie des Erbguts (Genom) von Lebewesen

Python im Bioinformatiker-Alltag 2 von 27

Page 3: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Ubersicht

1 Ein bisschen Biologie

2 Sequenzdaten und Datenformate

3 Wie wir Python einsetzen

4 Unsere Python-Software

5 Gedanken zu Python in der Bioinformatik

Python im Bioinformatiker-Alltag 3 von 27

Page 4: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Ubersicht

1 Ein bisschen Biologie

2 Sequenzdaten und Datenformate

3 Wie wir Python einsetzen

4 Unsere Python-Software

5 Gedanken zu Python in der Bioinformatik

Python im Bioinformatiker-Alltag 4 von 27

Page 5: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Molekularbiologie

DNA – Trager der Erbinformation

Fur Biologen: Zwei Kettenmolekule ausvier Basen – Adenin, Cytosin, Guanin,Thymin

Paarung: immer A–T und C–G

Fur Informatiker: String uber demAlphabet {A, C, G, T}Gen: Ein Abschnitt auf der DNA

PD by Forluvoft

Python im Bioinformatiker-Alltag 5 von 27

Page 6: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Was machen wir?

Fragen

Welche Gene sind in bestimmten Zelltypen aktiv und wiestark?

Wie unterscheidet sich Genaktivitat in kranken und gesundenZellen? Welche Gene sind

”an“, welche

”aus“?

Welche Mutationen fuhren zu Krebs?

Welche Veranderungen in welchem Gen sind fur eine erblicheKrankheit verantwortlich?

⇒ Beantwortung mit Hochdurchsatz-DNA-Sequenzierung

Python im Bioinformatiker-Alltag 6 von 27

Page 7: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Was machen wir?

Fragen

Welche Gene sind in bestimmten Zelltypen aktiv und wiestark?

Wie unterscheidet sich Genaktivitat in kranken und gesundenZellen? Welche Gene sind

”an“, welche

”aus“?

Welche Mutationen fuhren zu Krebs?

Welche Veranderungen in welchem Gen sind fur eine erblicheKrankheit verantwortlich?

⇒ Beantwortung mit Hochdurchsatz-DNA-Sequenzierung

Python im Bioinformatiker-Alltag 6 von 27

Page 8: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Was machen wir?

Fragen

Welche Gene sind in bestimmten Zelltypen aktiv und wiestark?

Wie unterscheidet sich Genaktivitat in kranken und gesundenZellen? Welche Gene sind

”an“, welche

”aus“?

Welche Mutationen fuhren zu Krebs?

Welche Veranderungen in welchem Gen sind fur eine erblicheKrankheit verantwortlich?

⇒ Beantwortung mit Hochdurchsatz-DNA-Sequenzierung

Python im Bioinformatiker-Alltag 6 von 27

Page 9: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Was machen wir?

Fragen

Welche Gene sind in bestimmten Zelltypen aktiv und wiestark?

Wie unterscheidet sich Genaktivitat in kranken und gesundenZellen? Welche Gene sind

”an“, welche

”aus“?

Welche Mutationen fuhren zu Krebs?

Welche Veranderungen in welchem Gen sind fur eine erblicheKrankheit verantwortlich?

⇒ Beantwortung mit Hochdurchsatz-DNA-Sequenzierung

Python im Bioinformatiker-Alltag 6 von 27

Page 10: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Was machen wir?

Fragen

Welche Gene sind in bestimmten Zelltypen aktiv und wiestark?

Wie unterscheidet sich Genaktivitat in kranken und gesundenZellen? Welche Gene sind

”an“, welche

”aus“?

Welche Mutationen fuhren zu Krebs?

Welche Veranderungen in welchem Gen sind fur eine erblicheKrankheit verantwortlich?

⇒ Beantwortung mit Hochdurchsatz-DNA-Sequenzierung

Python im Bioinformatiker-Alltag 6 von 27

Page 11: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Hochdurchsatz-DNA-Sequenzierung

DNA-Fragmente aus Gewebeprobe (z. B. Blut)⇓

Sequenziergerat⇓

Kurze Zeichenketten bestehend aus A, C, G, T: Reads

Foto: Illumina, Inc.

Python im Bioinformatiker-Alltag 7 von 27

Page 12: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Technische Daten

Illumina HiSeq

100 Basen pro Read

6 Milliarden Reads pro Durchlauf (14 Tage)

600 Gigabasen pro Durchlauf

Zum Vergleich

Humangenom: 6 Gigabasen (in 2× 23 Chromosomen)

Geratesoftware

Frontend: Vista; Compute-Server: LinuxSoftware teilw. in Python

Python im Bioinformatiker-Alltag 8 von 27

Page 13: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Technische Daten

Illumina HiSeq

100 Basen pro Read

6 Milliarden Reads pro Durchlauf (14 Tage)

600 Gigabasen pro Durchlauf

Zum Vergleich

Humangenom: 6 Gigabasen (in 2× 23 Chromosomen)

Geratesoftware

Frontend: Vista; Compute-Server: LinuxSoftware teilw. in Python

Python im Bioinformatiker-Alltag 8 von 27

Page 14: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Technische Daten

Illumina HiSeq

100 Basen pro Read

6 Milliarden Reads pro Durchlauf (14 Tage)

600 Gigabasen pro Durchlauf

Zum Vergleich

Humangenom: 6 Gigabasen (in 2× 23 Chromosomen)

Geratesoftware

Frontend: Vista; Compute-Server: LinuxSoftware teilw. in Python

Python im Bioinformatiker-Alltag 8 von 27

Page 15: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Ubersicht

1 Ein bisschen Biologie

2 Sequenzdaten und Datenformate

3 Wie wir Python einsetzen

4 Unsere Python-Software

5 Gedanken zu Python in der Bioinformatik

Python im Bioinformatiker-Alltag 9 von 27

Page 16: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Sequenzdaten

Ausgabe: gzip-komprimierte Textdatei im FASTQ-Format

Zwei Reads plus ASCII-kodierte Qualitatswerte

@HWI-ST552:1:1101:12272:153398#0/1

ATATATTATGTTACTTCCTTTAATGCATGTAACACATTTTGTAGTCATGTGTTTA...

+

CC@FFFFFHGHHGJJJIIIJJIJIIJCGHAHJHIJIJJJJHHGHGIGGHGHGIIE...

@HWI-ST552:1:1102:5609:164336#0/1

ATACCCATTCTGCACAGCACACACACTGTACAGCATACACACTGCACTTCACACA...

+

CCCFFFFFHHHHHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ...

Python im Bioinformatiker-Alltag 10 von 27

Page 17: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Was geschieht mit den Daten?

Read Mapping (wenn Genom der Spezies bekannt)

Positioniere Reads mit Textsuchalgorithmen auf dem Genom

Erlaube Unterschiede – Sequenzierfehler oder Mutationen

Finde Mutationen

Vergleiche bekannte Referenz mit Reads und liste abweichendeStellen auf

Python im Bioinformatiker-Alltag 11 von 27

Page 18: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Read Mapping

Platziere Read auf Chromosom

Erlaube: Zeichenveranderung, -loschung, -einfugung

Alignment (”-“: Lucke)

Read: CT-ATCGCTTCTGTC

Chromosom: . . . CAGCCAGGCTGATCCCTT-TGTCGAGTAGGAC. . .

diff macht Ahnliches

Python im Bioinformatiker-Alltag 12 von 27

Page 19: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

SAM-Dateiformat

Ausgabe der positionierten Reads im SAM-Dateiformat

1 Readname

2 Chromosom und Position

3 Alignment

4 Sequenz und Qualitatswerte

Python-API fur Zugriff auf SAM-Dateien: pysam1 (nicht von uns)

1http://pysam.googlecode.com/Python im Bioinformatiker-Alltag 13 von 27

Page 20: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

SAM-Viewer

Python im Bioinformatiker-Alltag 14 von 27

Page 21: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Ubersicht

1 Ein bisschen Biologie

2 Sequenzdaten und Datenformate

3 Wie wir Python einsetzen

4 Unsere Python-Software

5 Gedanken zu Python in der Bioinformatik

Python im Bioinformatiker-Alltag 15 von 27

Page 22: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Software-Arten

Einmal-Skripte

Software-Bibliothek

Neue Algorithmen

Python im Bioinformatiker-Alltag 16 von 27

Page 23: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Einmal-Skripte

Nur in einem Projekt interessant

Wenn als Einzeiler moglich, dann in Bash, ansonsten inPython programmiert

”quick and dirty“, aber: immer mit (kurzer) Doku

Beispiele

Konvertiere andere Sequenzformate zu FASTQ

Importiere Mutationen in SQLite-Datenbank, fuhre einSELECT aus, gib Ergebnis aus

Python im Bioinformatiker-Alltag 17 von 27

Page 24: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Bibliothek / Sammlung

Anforderungen

Aufnahme wenn mehrfach (≥ 2) benotigt

Hartkodierte Werte ok – aber sofortKommandozeilenparameter hinzufugen wenn notig

Wenn ich im Code nachschauen muss → Doku verbessern

Zur Zeit nur teilweise: Unit Tests

Python im Bioinformatiker-Alltag 18 von 27

Page 25: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Entwicklung neuer Algorithmen

Beispiele

Read-Mapping-Algorithmus fur Sequenziertechnologie mitbesonderen Fehlertypen

Suffix-Array-Konstruktionsalgorithmus

Ablauf

Prototyp immer in Python → schnelle iterative Verbesserung

Evaluation auf kleinen Testdaten

Prototyp auf große Daten loslassen

Langsam? → Parallelisieren (Cluster), C-Erweiterungprogrammieren oder abwarten

Python im Bioinformatiker-Alltag 19 von 27

Page 26: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Effizienz

Python ist langsam! Oder?

Python ist schnell und effizient – zu programmieren

Rechenzeit ist billig, Arbeitszeit ist teuer

Beispiel

Fremdes C++-Tool zum Kurzen von Reads in FASTQ-Datei –reimplementiert in reinem Python→ Python war doppelt so schnell

Wahl der Algorithmen ist viel wichtiger als Wahl derProgrammiersprache!

Python im Bioinformatiker-Alltag 20 von 27

Page 27: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Ubersicht

1 Ein bisschen Biologie

2 Sequenzdaten und Datenformate

3 Wie wir Python einsetzen

4 Unsere Python-Software

5 Gedanken zu Python in der Bioinformatik

Python im Bioinformatiker-Alltag 21 von 27

Page 28: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

sqt – SeQuencing Tools

Kommandozeilentools (Python- und Shell-Skripte)

Python-Module (in Python und C)

Idee ahnlich wie Git: sqt-Binary plus externe Subcommandsin beliebiger Programmiersprache (sogar Perl)

Momentan unvollstandig

MIT-Lizenz, http://sqt.googlecode.com

Python im Bioinformatiker-Alltag 22 von 27

Page 29: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

sqt – SeQuencing Tools

Kommandozeilentools (Python- und Shell-Skripte)

Python-Module (in Python und C)

Idee ahnlich wie Git: sqt-Binary plus externe Subcommandsin beliebiger Programmiersprache (sogar Perl)

Momentan unvollstandig

MIT-Lizenz, http://sqt.googlecode.com

Python im Bioinformatiker-Alltag 22 von 27

Page 30: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

sqt – SeQuencing Tools

Kommandozeilentools (Python- und Shell-Skripte)

Python-Module (in Python und C)

Idee ahnlich wie Git: sqt-Binary plus externe Subcommandsin beliebiger Programmiersprache (sogar Perl)

Momentan unvollstandig

MIT-Lizenz, http://sqt.googlecode.com

Python im Bioinformatiker-Alltag 22 von 27

Page 31: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Beispiel: fastamutate

1 import sys

2 from sqt import seqio

34 def mutate(seq , rate =0.01):

5 # mutate and return

67 out = seqio.FastaWriter(sys.stdout , wrap =80)

8 for record in seqio.FastaReader(sys.argv [1]):

9 mutated = mutate(record.sequence)

10 out.write(record.name , mutated)

Python im Bioinformatiker-Alltag 23 von 27

Page 32: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Cutadapt

DNA-Molekule enthalten am Ende”Adaptoren“ (techn.

Grunde)

Wenn DNA-Fragment zu kurz, wird Adapter mitsequenziert

GAGTGGTTGGAGAGGAGTTGTTGGGAGTTTGTGTCCTGCTGAGACACGCA

cutadapt schneidet Adapter fehlertolerant ab

Fullt anscheinend eine”Marktlucke“

Lauft mit Python 2.6 bis 3.2

MIT-Lizenz, http://cutadapt.googlecode.com

Python im Bioinformatiker-Alltag 24 von 27

Page 33: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Ubersicht

1 Ein bisschen Biologie

2 Sequenzdaten und Datenformate

3 Wie wir Python einsetzen

4 Unsere Python-Software

5 Gedanken zu Python in der Bioinformatik

Python im Bioinformatiker-Alltag 25 von 27

Page 34: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Python in der Bioinformatik – ja bitte

Bioinformatik-Tools: Es scheint alles zu geben – aber schlecht(Absturze, seltsame Ein- oder Ausgabeformate, verwaist,unsinnige oder keine Fehlermeldungen)

Das ware auch mit Python moglich – ist aber schwieriger!(Exceptions, argparse)

Python-Code ist aufs Wesentliche reduziert – macht dasVerstehen von Algorithmen einfacher

Python im Bioinformatiker-Alltag 26 von 27

Page 35: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Um was es ging

Moderne Sequenziergeraten produzieren Massen von Daten

Python lasst sich dennoch sinnvoll anwenden

Python-Code muss nicht von Anfang an wartbar und schonsein

Die Bioinformatik vertragt mehr Python – es wurde Arbeiterleichtern und macht einfach Spaß!

Python im Bioinformatiker-Alltag 27 von 27

Page 36: Python im Bioinformatiker-Alltag · Ubersicht 1 Ein bisschen Biologie 2 Sequenzdaten und Datenformate 3 Wie wir Python einsetzen 4 Unsere Python-Software 5 Gedanken zu Python in der

Quelltextkompatibel mit Python 2 und 3

uberall:from __future__ import print_function, division

5–6 Stellen mit:if sys.version_info[0] >= 3:

(darin z.B. xrange = range)

Großtes Problem: str vs. bytes/bytearray (Elemente sindStrings der Lange 1 oder ints)

Wie erstellt man sinnvoll installierbare gemischte Pakete ausPython-2- und Python-3-Tools?

Python im Bioinformatiker-Alltag 1 von 1