Programmiersprachen in der Bioinformatik

Werbung
Programmiersprachen in der
Bioinformatik
Bioinformatik
• In der Biologie immer größere Datenmengen (z.B.
Genome, Proteinsequenzen)
• Sequenzanalyse, Strukturvorhersage
• Informationen in Datenbanken abrufbar machen
• Nur mit Hilfe von Computertechnik möglich
• „Sinnvolle“ (schnell, relativ unkompliziert)
Verwendung von Computern für individuelle
Probleme nur durch individuelle Programme
• Diese müssen eigens erstellt werden
• (Unter Anderem) Aufgabe der Bioinformatiker
• Mittels Programmiersprachen
Übersicht Programmiersprachen in der
Bioinformatik
• Java, C/C++, Perl, Python und andere
• Jede Sprache hat ihre eigenen Vorzüge und
Nachteile.
• Es gibt nicht DIE Programmiersprache.
• Es werden wahrscheinlich immer
verschiedene höhere Programmiersprachen
koexistieren
Verwandtschaft der
Programmiersprachen
Java
• Grundlagen allen bekannt (Objektorientierung
etc.)
• Verwendung in der Bioinformatik
– Bioinformatiker schreiben Programme für bestimmte
Probleme/Aufgaben
– Diese werden in der Regel von Biologen genutzt
– Java bietet gute Möglichkeiten der GUI-Erstellung
– So können auch Wissenschaftler ohne
computertechnisches Wissen die Programme einfach
nutzen
Biojava
• Open Source Projekt, Version 3.0
• Java Framework für die Verarbeitung biologischer
Daten
• Im Grunde Sammlung von wichtigen Methoden:
z.B. Reader/Writer für geläufige Dateiformate
(Fasta, PDB, etc.), Suchalgorithmen oder
Sequenzalignments, Strukturalignments
berechnen und vieles mehr
• www.biojava.org (CookBook 3.0)
Java basierte Programme in der
Bioinformatik
• TIGR MultiExperiment Viewer (MEV)
– Vielzahl an Experimenten zur Analyse eines GenexpressionMusters(Open-Source)
• WebMol
– Analysiert Molekularstrukturinformationen
– Verwendet Java3D zur Visualisierung und Manipulation von
komplexen Proteinstrukturen.
• Apollo
– Ermöglicht die Visualisierung und manuelle Annotation und die
Erstellung von möglichen Genstrukturen
– Wurde verwendet für die Annotation des Fruchtfliegengenoms
und Teilen des menschlichen Genoms verwendet
C
• Entstehung C:
– Anfang der 1970er Jahre im Zusammenhang mit dem
BS Unix bei AT&T Bell Laboratories: Dennis Ritchie
– Unmittelbarer Vorgänger ist B (K. Thompson, 1970,
ebenfalls bei Unix-Entwicklung)
– Wird auch als Kreuzung von Assembler und Pascal
bezeichnet: ähnlich strukturiertes Programmieren wie
in Pascal, fast so maschinennah wie Assembler
C
– C ist "universell" einsetzbar - FORTRAN z.B. nur für
wissenschaftlich-technische Berechnungen
– Hat sich aufgrund seines eng begrenzten
Sprachumfangs durchgesetzt. PL/I oder ALGOL68
dagegen nicht, weil zu komplex
– Trotzdem sehr große Flexibilität
– Das alles führt dazu, dass C im Grunde Spielraum
besitzt für alles zwischen hochportablem Code
und sehr maschinennahem, nicht portablem Code
("höherer Assembler")
Beispielcode C
C++
• Mitte der 1980er Jahre ebenfalls bei AT&T Bell
Labs: B. Stroustrup.
• Erweiterung von C um die Möglichkeit der
objektorientierten Programmierung und
einige Verbesserungen bezüglich des
Sprachumfangs von C
• C ist (nicht exakte) Teilmenge von C++
Bio++
• Ist eine C++ Bibliothek für Sequenzanalyse,
Phylogenetik, Populationsgenetik und
molekulare Evolution
• http://biopp.univ-montp2.fr/
• Momentan Version 2.0.2
Beispielcode C++
Eigenschaften von C/C++
• Große Verbreitung
• Gute Standardisierung (Sprache und
Laufzeitsystem)  Software relativ leicht
portierbar
• Programme sind laufzeiteffektiv
• Compiler für alle relevanten Plattformen
• Viele gute Programmiersysteme (Java: Eclipse,
etc.; C/C++: Code::Blocks, C-Free, Eclipse, etc.)
• CASE-Tool Unterstützung (Computer Aided
Software Engineering)
• Strukturiertes Programmieren ebenso möglich
wie unstrukturiertes
Python
• Objektorientiert
• Von Guido van Rossum entwickelt
• Mehrere Programmierparadigmen unterstützt
• Open source
Anwender/Anwendungen
• Google
• Ubuntu
• Bit Torrent
• NASA: u.a. Mission Control Center
Module
• Große Standardbibliothek
• Programm anderer Sprachen als Modul
• Schnell und leicht eigene Module schreiben
Syntax
•
•
•
•
•
Ziel: möglichst einfach und übersichtlich
Keine Konstanten- und Variablendeklaration
Einrückung als Blockbegrenzung
Kein Semikolon
Kein Datentyp BOOLEAN
>>> len("GATTACA")
7
>>> "GAT" + "TACA"
GATTACA'
>>> "A" * 10
'AAAAAAAAAA'
>>> "G" in "GATTACA"
True
>>> "GAT" in "GATTACA"
True
>>> "AGT" in "GATTACA"
False
>>> "GATTACA".find("ATT")
1
>>> "GATTACA".count("T")
2
>>>
>>> "GATTACA".lower()
'gattaca'
>>> "gattaca".upper()
'GATTACA'
>>> "GATTACA".replace("G", "U")
'UATTACA'
>>> "GATTACA".replace("C", "U")
'GATTAUA'
>>> "GATTACA".replace("AT", "**")
'G**TACA'
>>> "GATTACA".startswith("G")
True
>>> "GATTACA".startswith("g")
False
>>>
>>> seq = raw_input("Enter a DNA sequence: ")
Enter a DNA sequence: ATGTATTGCATATCGT
>>> seq.count("A")
4
>>> print "There are", seq.count("T"), "thymines"
There are 7 thymines
>>> "ATA" in seq
True
>>> substr = raw_input("Enter a subsequence to find:
")
Enter a subsequence to find: GCA
>>> substr in seq
True
Biopython
• Tools zu biologischen Berechnungen
• Werkzeuge für Operationen auf Sequenzen
• Schnittstellen für andere biologischen Module
Perl
• Practical Extraction and Report Language
• Von Larry Wall 1987 entwickelt
• Plattformunabhängige, interpretierende
Programmiersprache
• Mehrere Programmierparadigmen unterstützt
• „glue“-language
Prinzipien
• Mehrere Wege
– „There is more than one way to do it“
• Einfach und Möglich
– „Perl makes easy jobs easy and hard jobs possible“
Syntax
• Variablen
– Skalare Datentypen:
$zahl = 50;
$zahl = 0,01;
$zahl = 1e-2;
$name = ‘Günther‘
Syntax
– Arrays:
@array = (1, 2, “drei“, $vier)
– Hash-Tabellen werden mit % gekennzeichnet
Wichtige Module
• CGI: CGISchnittstelle für WebServer
• LWP: Bibliothek für Internetzugriffe
• MySQL: Schnittstell zu MySQLDatenbank
Laufzeitvergleich
Laufzeit für Algorithmus für globales Alignment
Input: 2 Sequenzen: 3216bp und 3217bp
Laufzeitvergleich
Laufzeit für Neighbor-Joining
Input: 76 DNA-Sequenzen
Speicherbedarf
Andere Programmiersprachen in der
Bioinformatik
• Ruby
– Skriptsprache, BioRuby
• FORTRAN
– Höhere Programmiersprache, PROMOT
• C#
– Höhere Programmiersprache, BioC#
Herunterladen