Eine kleine Einführung in die Bioinformatik und warum Linux dort so weit verbreitet ist

Wie ich in meinem Blog irgendwann mal erwähnt habe, studiere ich im Moment Bioinformatik an der THM und JLU in Gießen. Da ich nebenbei auch  noch einen Job in einer der Arbeitsgruppen habe, bekomme ich einen Recht guten Eindruck davon, was aktuell Forschungsgebiet in der Bioinformatik ist und vor allem welche Software und Hardware dort eingesetzt wird. Einen Überblick über beispielsweise die Hardware des Bioinformatikfachbereichs an der THM liefert der z.B. folgende Link:

mni.thm.de: Bioinformatik erweitert Infrastruktur

Ubuntu ist im Bioinformatik-Umfeld sehr weit verbreitet. Ich würde sogar sagen, dass knapp 80% aller Bioinformatiker Ubuntu (Mit verschiedenen Desktops) einsetzen. Der Rest verteilt sich auf Debian und Arch-Linux. Es gibt auch Windows-Nutzer, aber diese sind deutlich in der Unterzahl. Ein sehr nettes Feature seitens Ubuntu und Debian ist die Tatsache, dass nahezu alle wichtigen Bioinformatik-Tools direkt in den Paketquellen vorhanden sind. Das ist auch einer der Hauptgründe für die weite Verbreitung.

Die Bioinformatik ist grundsätzlich sehr Unix-affin. Nahezu alle Server, die irgendwas mit Bioinformatik und verwandten Gebieten zu tun haben, laufen unter einem Unix-System (Heutzutage hauptsächlich eine Linux-Distribution). Und wer tagtäglich auf einem Unix-System unterwegs ist, arbeitet auch privat eher mit so einem System.

Das Projekt, welches die Bioinformatik als eigenständiges Fachgebiet der Informatik etabliert hat, war das „Humangenomeprojekt„. Dieses Projekt lief von 1990 bis ca. 2003 und endete mit der fast vollständigen Sequenzierung (Dem Ablesen des DNA-Strangs) und der Assemblierung (Dem Zusammenpuzzlen von DNA-Schnipseln) eines menschlichen Genoms. Die Gesamtkosten des Projekts lagen dabei bei ca. 3 Mrd. US-Dollar. Ohne den massiven Einsatz von leistungsstarken Computern und den passenden Algorithmen, hätte diese Aufgabe wahrscheinlich noch Jahrzehnte gedauert. Ich gehe jetzt hier nicht zu sehr ins Detail, eine gute Übersicht bietet z.B. der englische Wikipedia-Artikel „Sequence Assembly

Quelle: http://www.genomicglossaries.com/presentation/SLAgenomics.asp
Quelle: http://www.genomicglossaries.com/presentation/SLAgenomics.asp

Anfang bis Ende der 90er Jahre des letzten Jahrtausends war „leistungsstarker Computer“ ein Synonym für Unix-basierte Server und Workstations mit RISC-CPUs (z.B. von SUN, Silicon Graphics, IBM, HP, usw.). Wer große Datenmengen verarbeiten wollte, musste ein Unix-System benutzen. Das lag vor allem an drei Dingen:

  1. Unix war schon damals technisch ausgereift und stabil. Windows hingegen war mit der ersten NT-Version 3.0 und später mit NT 4.0 gerade erst den „Kinderschuhen“ entwachsen, aber noch weit davon entfernt Unix ein ernsthafter Konkurrent zu sein.
  2. x86-basierte Rechner waren damals einfach noch nicht leistungsfähig genug, um die gewaltigen Datenmengen, welche in der Bioinformatik anfallen, verarbeiten zu können und auch die Hardware war noch nicht stabil genug um tage -oder wochenlang am Stück zu laufen. Während dauerlaufende Multi-Core-Server mit mehr als 4 CPUs in der Unix-Welt eine alltägliche Sache waren, dauerte es in der x86-Welt bis in die frühen 2000er Jahre bis es zuverlässige Server in dieser Größenordnung gab.
  3. Alle Kommandozeilentools unter Unix machen Gebrauch von dem Umleiten von Datenströmen und nahezu jedes bioinformatische Programme macht ebenfalls davon Gebrauch. Oft reicht es mehrere Programme mittels der Pipe miteinander zu verbinden um die gewünschten Daten zu erhalten.

Der zweite Punkt änderte sich zwar im Laufe der 2000er Jahre, aber Windows ist im Bereich des „High Performance Computings“ (HPC) nie wirklich angekommen (Seit November 2017 besteht die Top 500 der Supercomputer nur noch aus Linux-basierten Systemen). Das lag und liegt vor allem daran, dass ein Bioinformatiker im Grunde „nur“ gigantisch große Textdateien analysiert und Unix durch seine vielen kleinen Tools dafür prädestiniert ist. Für einen Bioinformatiker ist es vollkommen normal eine 20 GB große Datei mit „grep“, „awk“ und Co zu behandeln. Dazu kommt der Fakt, dass es bis heute relativ umständlich ist Windows über Fernwartungstools zu bedienen. Erst letztes Jahr hat sich Microsoft dazu durchgerungen Windows mit einem SSH-Server -und Client auszuliefern. Selbst Microsoft hat in der Zwischenzeit bemerkt, dass eine komfortable und mächtige Shell unabdingbar ist.

Um ein Gefühl für die Datenmengen, die einem als Bioinformatiker tagtäglich einfach mal so begegnen können, zu bekommen, hier ein Beispiel aus meinem Studium:

Ich habe meine Bachelorarbeit über das Themengebiet „ChIP-Seq“ geschrieben. Mit Hilfe von ChIP-Seq kann man Bindestellen von Proteinen mit der DNA feststellen. Diese sind wichtig um festzustellen wo z.B. ein bestimmtes Gen auf der DNA liegt bzw. wo dessen Beginn ist. Um zuverlässig diese Bindestellen zu finden, muss man mehrere Experimente im „Wet-Lab“ durchführen, welche am Ende sehr große Datenmengen erzeugen. In meinem Ordner auf dem NAS meiner Arbeitsgruppe liegen aktuell 164 GB an Daten. Es sind sogar noch ein paar GB mehr, da das NAS ZFS benutzt und die Dateikompression aktiviert ist und sich Textdateien gut komprimieren lassen. Mein Kommilitone schreibt gerade eine Pipeline zur Verarbeitung von Gendaten. Er meinte er knackt noch den Rekord der Arbeitsgruppe, der bei ca. 8 TB liegt.

Die Rohdaten aus den ChIP-Seq-Experimenten müssen erst mit Hilfe eines sogenannten „Aligners“ auf das menschliche Genom gemappt werden. Das heißt grob, man schaut wo jeder einzelne der sogenannten „Reads“ (Ein kleiner DNA-Schnipsel mit ca. 50-1000 Buchstaben Länge, je nach eingesetzer Sequenzierungstechnologie) auf dem Genom liegt (Welches bei Menschen ca. drei Mrd. Buchstaben lang ist). Da die Rohdaten aus ungefähr 50 Mio. Reads pro Datei bestehen, dauert das ein wenig (In der Regel einen Kaffee). Moderne Aligner wie z.B. Bowtie2 unterstützen deshalb Multithreading um das Mapping zu beschleunigen.

Die meisten Menschen denken, dass der Mensch als „Krone der Schöpfung“ das größte Genom und auch die meisten Gene (ca. 20000) besitzt. Das stimmt aber nicht. So hat die Fichte eine Genomgröße von ca. 20 Mrd. Basenpaaren und kodiert ca. 56000 Gene. Der Lungenfisch hat sogar eine Genomgröße von 130 Mrd. Basenpaaren. Säugetiere scheinen allgemein weniger Gene als andere Tierarten zu haben, da sie wegen ihrer gleichbleibenden Körpertemperatur weniger „Buchhaltung“ betreiben müssen.

Damit das Mappen schnell durchläuft, habe ich das Programm auf einem Server mit 64 Kernen (128 Threads) und 2 TB RAM laufen lassen. Der Aligner lief dabei nicht auf allen Kernen, da dieser ab 16 Threads nicht linear skaliert (Das liegt weniger am Programm, sondern daran, dass sich die 64 Kerne auf 4 CPUs verteilen und die Kommunikation zwischen diesen einiges an Leistung frisst). Aus diesem Grund habe ich maximal zwei Aligner mit 16 Threads parallel laufen lassen (Ich benutze nur 32 Kerne, da auch andere Benutzer den Server benutzen wollen).

Für Bioinformatiker ist das Buzzword „Big Data“ also nicht nur eine leere Worthülse, sondern Alltag. Im Grunde können wir nur darüber lächeln, wenn ein Wirtschaftsinformatiker bei einer Datenbank mit knapp 10 GB Dateigröße über die Datenmenge stöhnt. Natürlich kann man die Art der Daten nicht miteinander vergleichen (Bioinformatische Datenbanken haben in der Regel nur wenige Relationen), aber das obige Beispiel ist gerade mal die Spitze des Eisberges. Bei größeren Analysen oder dem relativ neuen Feld der Metagenomik (Salopp erklärt: Man nimmt einen Löffel mit Dreck und schaut was darin an Leben enthalten ist.) können leicht mehrere Petabytes (1 PB = 1000 TB) an Daten zusammenkommen, die einen Rechencluster mit mehreren hundert CPUs wochenlang mit der Analyse beschäftigen können.

Neben konventionellen CPUs kommen auch immer mehr GPUs zum Einsatz. Diese eignen sich besonders zum Training von großen neuronalen Netzwerken (Deep Learning) welche z.B. darauf trainiert werden Unregelmäßigkeiten in Langzeit-EKGs festzustellen oder Tumorzellen in Zellgewebeschnitten zu erkennen und zu klassifizieren. Gerade Letzteres basiert heute noch sehr auf der subjektiven Meinung eines Onkologen und nicht auf objektiven Maßstäben (Zeigt man einen solchen Zellschnitt drei verschiedenen Onkologen, erhält man in der Regel drei verschiedene Diagnosen). Software auf Basis neuronaler Netzwerke soll dabei den Arzt nicht ersetzen, sondern ihn bei seiner Arbeit unterstützen und vor allem entlasten. Das letzte Wort soll dabei immer noch ein Arzt haben. Das Training von großen Netzen kann mehrere Tage bis Wochen in Anspruch nehmen, weshalb momentan immer mehr dezidierte Hardware zum Beschleunigen dieses Trainings auf den Markt kommt. Die THM hat z.B. Anfang des Jahres eine Nvidia DGX-1 mit 8 Tesla V100 angeschafft. Diese läuft unter einer angepassten Version von Ubuntu 16.04 (Um den Bogen zu Linux zu spannen).

Die Hauptarbeit eines Bioinformatikers besteht in der Datenanalyse:

Biologen liefern die Daten und die Bioinformatiker der Arbeitsgruppe analysieren diese unter den gewünschten Gesichtspunkten. Dazu gehört der Einsatz schon vorhandener Tools wie z.B. Bowtie(2), SAMtools, Velvet, BioPython, R, usw. Die Liste lässt sich schier endlos weiterführen.

Falls kein Tool vorhanden ist, muss oft ein neues implementiert werden um z.B. einen speziellen Sachverhalt zu untersuchen. Die allermeisten Tools werden dabei in C, Java, Python oder R geschrieben, wobei Python und R am häufigsten benutzt werden (Ich schreibe meine Programme meistens in Python). Programme, bei denen es auch auf Geschwindigkeit ankommt, werden in C oder C++ entwickelt, wobei sehr häufig die Sprachen bunt gemischt werden (z.B. der kritische Teil in C, der Rest in Python oder R). Die Entwicklung findet dabei, aus den oben genannten Gründen, primär unter Linux statt. Der Trend geht dabei eindeutig zu webbasierten Anwendungen, um den Anwendern die Installation und Konfiguration abzunehmen und vor allem eine leistungsfähige Hardware zur Verfügung zu stellen.

Ein wichtiges, wenn nicht das wichtigste Teilgebiet der Bioinformatik ist die Entwicklung neuer Algorithmen um bestimmte Aufgabenstellungen effizienter und schneller als vorher zu erledigen. So war es z.B. erst durch die Entwicklung von bestimmten Algorithmen möglich das Humangenomprojekt schneller als geplant abzuschließen. Ich will jetzt hier nicht allzu sehr ins Detail gehen, sondern nenne nur eine kleine Liste wichtiger Algorithmen und Datenstrukturen:

Die Liste ist bei Weitem nicht vollständig, deckt aber die Dinge ab, die mir während meines Studiums nahezu tagtäglich im Rahmen von Vorlesungen, Hausübungen und Projekten begegnet sind. Gerade die BWT begegnet einem Linux-Benutzer in Form von bzip2 nahezu alltäglich.

Die immer größeren Datenmengen, welche durch die Einführung der „Next Generation Sequencing„-Technologien produziert werden, können nicht alleine durch die Anschaffung besserer Computer und Server schneller bearbeitet werden. Wie stark die Entwicklung der „NGS“-Technik die Kosten reduziert und damit auch die Arbeit der Biologen verändert hat, kann man z.B. an der folgenden Grafik sehen:

Quelle: https://www.genome.gov/27565109/the-cost-of-sequencing-a-human-genome/

Die Y-Achse der Grafik ist logarithmisch aufgetragen, d.h. jeder Strich ist um den Faktor 10 größer. Wie oben schon erwähnt kostete das Human Genom Projekt ca. 3 Mrd. US-Dollar. Rechnet man nur die reinen Kosten für die Sequenzierung, waren es „nur“ 300 Mio. US-Dollar. Das war ungefähr im Jahr 2002. Heute kostet die vollständige Sequenzierung eines menschlichen Genoms in etwa 1500 US-Dollar. Die Assemblierung des Genoms lässt sich heute fast auf einem Desktop-PC in akzeptabler Zeit bewerkstelligen. Ein kleiner Server mit 16 Kernen und 32 GB RAM reicht je nach Programm vollkommen aus und schafft die Assemblierung dann in weniger als einem Tag. Die Sequenzierung von kleinen Bakteriengenomen kostet nur wenig mehr als 100$ und die Assemblierung ist in wenigen Minuten auf einem heutigen Standardlaptop erledigt. Mit der Einführung der Nanopore-Technologie und Sequenziergeräten in Größe eines USB-Sticks, welche gerade mal 1000$ kosten, wird die Datenmenge noch weiter zunehmen.

Ich könnte den Artikel an dieser Stelle noch weiter ausbauen, aber das Gebiet der Bioinformatik ist so groß (z.B. habe ich das Gebiet des „Molecular Modellings“ oder der Proteinstrukturvorhersage und andere Themen komplett ausgeklammert), dass ich irgendwo aufhören musste um nicht den Rahmen zu sprengen. Ich hoffe aber das der Artikel einen kleinen Einblick in das Thema gegeben hat und dass Linux gerade in der Forschung unabdingbar geworden ist.

2 Antworten auf „Eine kleine Einführung in die Bioinformatik und warum Linux dort so weit verbreitet ist“

  1. Danke für den Einblick in das Tagesgeschäft eines Bioinformatikers.

    Das war ein sehr spannender und informativer Artikel, imposante Datenmengen mit denen ihr herumhantieren müsst…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.