Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-1Perl-Programmierung
Einführung in die Einführung in die ProgrammierungProgrammierung
Basiert auf dem Bioinformatik-Vorlesung der TU-Braunschweig
Institute für Genetik, Mikrobiologie und Software
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-2Perl-Programmierung
GliederungGliederung
Rechneraufbau
Algorithmen
Programmiersprachen
Programmiersprache Perl
Operatoren
Variablen/Funktionen
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-3Perl-Programmierung
VorwortVorwort
Ziel:- Verständnis des Funktionsprinzips von Software- Ausführen von Perl-Programmen- Lesen, Verstehen von Perl-Programmen- Umsetzung einfacher Perl-Programme
Literatur:- James D. Tisdall: Einführung in Perl für Bioinformatik- Tom Christiansen, Nathan Torkington: Perl Kochbuch
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-4Perl-Programmierung
RechneraufbauRechneraufbau
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-5Perl-Programmierung
Quelle: Oliver Haase – Uni Konstanz
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-6Perl-Programmierung
Quelle: Oliver Haase – Uni Konstanz
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-7Perl-Programmierung
Quelle: Oliver Haase – Uni Konstanz
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-8Perl-Programmierung
Quelle: Oliver Haase – Uni Konstanz
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-9Perl-Programmierung
Steuerung eines RechnersSteuerung eines Rechners
Software: nichtphysische Funktionsbestandteile
- Systemsoftware: Ablaufsteuerung der Hardware• z. B. Betriebssysteme, Treiber, Interpreter
- Anwendungssoftware: Lösung von Problemen, die nicht ursächlich mit Rechnern zu tun haben
• z. B. Textverarbeitungsprogramme, Datenbanken, Web-Browser, Bioinformatiksoftware
- Softwarewerkzeuge: Erstellung von System- und Anwendungsprogrammen
- Daten- z. B. Textdatei, Bild, AA-Sequenz
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-10Perl-Programmierung
AlgorithmenAlgorithmen
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-11Perl-Programmierung
AlgorithmenAlgorithmen
Ein Algorithmus ist eine Berechnungsvorschrift
Die Berechnungen sind aus elementaren Operationen aufgebaut und besitzen Aus- und evtl. Eingabewerte
Algorithmen sollen in der Regel terminieren- Ausnahmen: z. B. Betriebssysteme oder
sogenannte reaktive Systeme. Determiniert: bei gleichen Eingabedaten stets
gleichen Ausgabedaten
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-12Perl-Programmierung
Beispiel AlgorithmusBeispiel Algorithmus
Kochrezept Plätzchen (Eingabe/Ausgabe)
Eingabedaten- 200g Mehl- 100g Butter- 100g Zucker- 1 Priese Salz- 1 Ei
Ausgabe- Plätzchen
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-13Perl-Programmierung
Beispiel AlgorithmusBeispiel Algorithmus
Kochrezept Plätzchen (Ausführungsvorschrift)
1. Mehl auf Arbeitsplatte sieben2. Magarine in Flöckchen auf dem Rand
verteilen3. Zucker und Salz darauf steuen 4. Verrühertes Ei in Vertiefung giessen5. Verkneten6. 30 min kalt stellen7. Ausrollen, Ausstechen8. 20 min Backen
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-14Perl-Programmierung
ProgrammProgramm
Formulierung eines Algorithmus und seiner Datenbereiche in einer Programmiersprache
Eine Programmiersprache erlaubt es, Algorithmen präzise zu beschreiben
Festlegung elementarer Operationen Die grundlegenden Aspekte der
Algorithmenentwicklung sind:- Lösbarkeit: Gibt es zu meinem Problem einen
Algorithmus?- Korrektheit: Löst mein Algorithmus mein Problem?- Komplexität: Welcher Aufwand (z. B. Rechenzeit,
Speicherplatz)
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-15Perl-Programmierung
ProgrammiersprachenProgrammiersprachen
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-16Perl-Programmierung
ProgrammiersprachenProgrammiersprachen
Einteilung u.a. nach Abstraktion von der Hardware
Maschinensprache:- Satz von Zahlencodes (Operation Codes, kurz
OpCodes), für CPU-Typen Assemblersprachen:
- Darstellung der Zahlencodes der Maschinensprache durch Buchstabenfolgen.
- Besser lesbar, aber für die CPU nicht mehr verständlich.
- Der Quellcode eines in einer Assemblersprache geschriebenen Programms muss von einem „Assembler“ in die jeweilige Maschinensprache übersetzt werden.
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-17Perl-Programmierung
Höhere ProgrammiersprachenHöhere Programmiersprachen
Starke Abstraktion von Hardware/Hardwareunabhängigkeit
Übersetzung vor Ausführung in Maschinencode:- Das Übersetzer-Programm heißt hier Compiler- Ausführbare/Übersetzte Programme (binaries) nicht
plattformunabhängig- Beispiele: C, JAVA
Übersetzung während Ausführung: - Spezielles Programm (Interpreter) übersetzt während
der Programmausführung (zur Laufzeit) Schritt für Schritt
- etwas langsamere Ausführung- Programme sind plattformunabhängig,- Beispiele: Basic, Perl, UNIX/Windows-Shell-Scripte
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-18Perl-Programmierung
Virtuelle MaschinenVirtuelle Maschinen
Mischformen:- Erst übersetzt ein Compiler- den Quellcode in einen kompakteren, Plattform
unabhängigen Maschinencode- Ausführung durch plattformspezischen Interpreter
Beispiele: Java, Perl, ...
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-19Perl-Programmierung
Programmiersprache PerlProgrammiersprache Perl
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-20Perl-Programmierung
Der Programminterpreter PerlDer Programminterpreter Perl
Perl (Practical Extraction and Report Language) 1987 von Larry Wall Weite Verbreitung in der Bioinformatik:
- Frei verfügbar und läuft auf allen Betriebssystemen- Mächtige Textanalyse- und Manipulationsfähigkeiten
direkt eingebaut;- gut geeignet zum Extrahieren und Aufbereiten von
Informationen aus strukturierten Textdateien(siehe Vorlesungsteil Datenbanken in der Bioinformatik)
- praktisch alle Bioinformatikdaten (Sequenzen, Strukturen, Expressionsprofile, biomolekulare Netzwerke...) in Form von Textdateien
- Zahlreiche Bibliotheken mit vorprogrammiertem Perl-Code (z. B. BioPerl)
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-21Perl-Programmierung
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-22Perl-Programmierung
Perl-EinführungsbeispielPerl-Einführungsbeispiel
Einführungsbeispiel
print "Hello World!\n";print "How are you\n";print "I am fine!\n"
Ausführung:
perl hello.pl
Ausgabe:
Hello World!How are you
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-23Perl-Programmierung
Literale DatentypLiterale Datentyp
Literale: Basisdatentypen Stehen für verschiedene Arten von Daten stehen können:
- 2- 2.7- -10- "A "- "ACGGGAGGACGGGAAAATTACTACGGCAATTAGC„- "2.7"
Numerische Daten (Zahlenwerte): Angabe von Ziffern Einzelne Zeichen und Zeichenketten (Strings): in Anführungszeichen
gesetzt Ausgabe am Bildschirm über die print-Anweisung am Bildschirm
ausgegeben werden:- print 2.7;
print: auch mehrere durch Kommata getrennte Elemente auszugeben: print „Kreiskonstante PI: ", 3.141, "\n";
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-24Perl-Programmierung
OperatorenOperatoren
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-25Perl-Programmierung
OperatorenOperatoren
Auf den Literalen definierte Funktionen Numerische Operatoren:
- print 3 + 2 , "\n"; # Addition- print 3 - 2 , "\n"; # Subtraktion- print 3 * 2 , "\n"; # Multiplikation- print 3 / 2 , "\n"; # Division- print 3 ** 2 , "\n"; # Potenzierung- print 16 % 7 , "\n" # Ganzzahliger Rest
Ausgabe:- 5- 1- 6- 1.5- 9- 2
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-26Perl-Programmierung
Zeichenketten OperatorenZeichenketten Operatoren
Verkettung von Strings mittels Punkt-Operator:- print "Hell" . "o world!" . "\n";
Ausgabe:- Hello world!
Kombination von Operatoren:- Addition und Konkatenation- print "17" + "4" , "\n";- print "17" . "4" , "\n";
Ausgabe:- 21- 174
String-Operator ix: hintereinander hängen von Strings:- print "Bioinformatik", " Hurra" x 2, "\n";
Ausgabe:- Bioinformatik Hurra Hurra
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-27Perl-Programmierung
Variablen/FunktionenVariablen/Funktionen
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-28Perl-Programmierung
VariablenVariablen
Wiederverwendung und Speicherung von Daten Veränderlicher „Platzhalter“ für Literale Beispiel DNA speichern und ausgeben:
- $DNA = "ACGGGAGGACGGGAAAATTACTACGGCATT";print $DNA;
Reserviert Platz im Arbeitsspeicher um:- mit Daten zu füllen - später wieder auszulesen
Variablen werden durch $ gefolgt von eindeutige Namen identifiziert
Literalzuweisungs-Operators =- $Variablenname = 3.141;
Kombination mit Operatoren:- $x = $x + 1
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-29Perl-Programmierung
FunktionenFunktionen
Rechenvorschrift, die einem oder mehreren Literalen ein Ergebnisliteral zuordnenunter
Numerische Funktionen am Beispiel:- print "Die Wurzel aus 64 ist ", sqrt (8**2), ".\n";- print "Der Kosinus von 0 Grad ist ", cos(0), ".\n";- print "Der ganzzahlige Wert von 3.141 ist ", int( 3.141),- ".\n";
Ausgabe:- Die Wurzel aus 64 ist 8.- Der Kosinus von 0 Grad ist 1.- Der ganzzahlige Wert von 3.1415926 ist 3.
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-30Perl-Programmierung
ZeichenkettenfunktionenZeichenkettenfunktionen
Gross- und Kleinbuchstaben- print uc ("Dies ist gross geschrieben.\n");
Ausgabe:- DIES IST GROSS GESCHRIEBEN.
Länge einer Zeichenkette ermitteln, z. B.:- print length("abcdefghijklmnopqrstuvwxyz"), "\n";
Ausgabe:- 26
Teilstringextraktion:- $alphabet = "abcdefghijklmnopqrstuvwxyz";- print substr ($alphabet, 0, 3)."\n";
Ausgabe:- abc
Veränderung eines Teile einer Zeichenkette- $text = "Hamoglobin";- substr($text, 1, 1) = "ae";
Ergebnis:- $text zu Haemoglobin ändern.
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-31Perl-Programmierung
BenutzereingabenBenutzereingaben
Interaktion mit dem Programm Operator <> zur Eingabe externer Daten Tastatur: <STDIN>
- print "Bitte eine Zeichenkette eingeben: ";- $string1 = <STDIN>;- print $string1;
Datei:- open (SEQUENZ, "data/ecoli.seq");- $zeile=<SEQUENZ>;- print $zeile;- close(SEQUENZ);
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-32Perl-Programmierung
Einführung in die Einführung in die ProgrammierungProgrammierung
--Teil IITeil II
Basiert auf dem Bioinformatik-Vorlesung der TU-Braunschweig
Institute für Genetik, Mikrobiologie und Software
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-33Perl-Programmierung
GliederungGliederung
Programmfluss
Konditionalanweisung
Schleifen
Praxis
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-34Perl-Programmierung
ProgrammflussProgrammfluss
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-35Perl-Programmierung
FlusskontrolleFlusskontrolle
Programm: feste Abarbeitungsreihenfolge von Anweisungen
Beispiel: Auswertung einer Nutzereingabe- $x = 1;- print $x,“ ist gerade\n“- $x = <STDIN>;- print $x,“ ist gerade\n“;- print $x,“ ist ungerade\n“;
Problem: keine dynamische Auswahl der auszuführenden Anweisung möglich
Beispiel: Berechnung des Logarithmus von 256 zur Basis 2- $x = 256;- $x = $x/2;- print „“1. Division:“, $x;- $x = $x/2;- print „“\n2. Division:“, $x;- . . .- $x = $x/2;- print „“\n8. Division:“, $x;
Problem: Keine dynamische Anzahl von Wiederholung gleicher Anweisungen
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-36Perl-Programmierung
FlusskontrolleFlusskontrolle
Möglichkeiten zur Steuerung- Konditionalanweisung (Bedingungsanweisung,
Conditions Statements)- Schleifen (loops)
Konditionalanweisung: Bedingte Ausführung von Anweisungen
Schleife: Wiederholung einer Gruppe von Anweisungen bis Bedingung fehlschlägt
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-37Perl-Programmierung
KonditionalanweisungKonditionalanweisung
Beispiel benötigte Konditionalanweisung:
- print ”Bitte 1. Zahl eingeben”;- $x = <STDIN>;- print ”Bitte 2. Zahl eingeben”;- $z = <STDIN>;- Print “x dividiert durch z ergibt; “, x/y;
Falls Divisor 0 Warnmeldung Je nach Benutzereingabe verschiedene
Programmanweisungen nötig Bedingte Ausführung verschiedene
Programmabschnitte:- bedingten Verzweigungen im Kontrollfluss
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-38Perl-Programmierung
Bedingungsprüfung mit IF-Bedingungsprüfung mit IF-AnweisungAnweisung
Wichtigste Eigenschaft von Konditionalanweisungen:
- Testen einer Bedingung Überprüfung der Bedingung ergibt:
- entweder Wahr (true) oder- Falsch (false) Wert
Bedingung erfüllt (Wahr):- nachfolgende Anweisungen werden ausgeführt
Beispiel: Getestete Bedingung ist wahr- $x=1;- if($x==1) {- print "x ist gleich 1\n";- }
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-39Perl-Programmierung
Bedingungsprüfung mit IF-Bedingungsprüfung mit IF-AnweisungAnweisung
Beispiel: Getestete Bedingung ist falsch- $x=1;- if($x==0) {- print "x ist gleich 0\n";- }
Der Test lautet 1 == 0 oder „Ist 1 gleich 0?“ Nicht wahr: Anweisungen werden nicht
ausgeführt
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-40Perl-Programmierung
VergleichsoperationenVergleichsoperationen
Numerische Vergleiche:
- == ist gleich- < kleiner als- > größer als- <= kleiner oder gleich- >= größer oder gleich- != ungleich
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-41Perl-Programmierung
VergleichsoperationenVergleichsoperationen
Vergleiche von Zeichenketten- ($string1 eq $string2) Gleichheit (equal)- ($string1 ne $string2) Ungleichheit (not equal)- ($string1 gt $string2) grösser (greater than)- ($string1 ge $string2) grösser oder gleich (greater
or equal)- ($string1 lt $string2) kleiner als (less than)- ($string1 le $string2) kleiner oder gleich (less or
equal) - lexikalische Ordnung:
• "drei“ gt "zwölf" ist erfüllt
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-42Perl-Programmierung
IF-ELSE AnweisungIF-ELSE Anweisung
else-Anweisung:- Ausführung bei nicht erfolgreicher Bedingungsprüfung
Beispiel: if-else ist wahr- $x=1;- if ($x==1) {- print "x ist gleich 1\n";- }else {- print "x ist nicht gleich 1\n";- }
Beispiel: if-else ist falsch- $x=7;- if ($x==0) {- print "x ist gleich 0\n";- }else {- print "x ist nicht gleich 0\n";- }
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-43Perl-Programmierung
unless Anweisungunless Anweisung
unless-Anweisung („nur wenn nicht“) verneinte if-Anweisung:
- if (not <Bedingung>)- unless (<Bedingung>)
Beispiel: unless- $x=1;- unless ($x==0) {- print "x ist nicht gleich 0\n";- }
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-44Perl-Programmierung
Verschachtelte IF-AneisungVerschachtelte IF-Aneisung
verschachtelte if-Anweisung- $x=3;- if ($x>1) {- print "x ist größer als 1\n";- if ($x<10) print "x ist kleiner als 10\n";- }else {- print "x ist kleiner als 1\n";- }
Schwierige Lesbarkeit:- Welcher Anweisungsblock bzw. Welche else-
Anweisung gehört zu welchem if-Anweisung- Lösung: gute Perl Programmierumgebung
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-45Perl-Programmierung
SchleifenSchleifen
Lösung zahlreiche Problemstellungen durch einen iterativen Algorithmus:- Annährung an die Lösung durch schrittweise Wiederholung- Jeder neue Berechnung nutzt Ergebnis der vorherigen Berechnung
Beispiele:- Zählen von Zeichen in einer Zeichenkette: $anzahl = $anzahl +1- Aufsummieren: $summe=$summe+$wert- Potenzieren: $potenz=$potenz*$basis
Beispiel 23 :- $basis=2;- $potenz = basis; 2- $potenz = $potenz*$basis; 4- $potenz = $potenz*$basis; 8
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-46Perl-Programmierung
SchleifenSchleifen
Schleife: wiederholte Ausführung eines Anweisungsblocks Begrenzt durch geschweiften Klammern:
- {- Anweisung1;- Anweisung2;- }
Programmiererer muss nicht wissen, wie oft der Anweissungsblock durchgeführt werden muss
Perl kennt verschiedene Arten von Schleifen:- while,- until-,- for-,- foreach- und noch mehr
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-47Perl-Programmierung
while-Schleifewhile-Schleife
Anweisung while:- Wiederhole solange Bedingung erfüllt
Beispiel: while-Schleife
- $sequence = "GGGCGGCTTCGAGTGTCGTCGAAGTGA";- $position=0;- while( substr($sequence,$position,1) ne "A") {- $position=$position+1;- }- print "Erstes A an Position ",$position+1,"\n";
Ausgabe :- Erstes A an Position 12
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-48Perl-Programmierung
for-Schleifefor-Schleife
Komplexe Anweisung for:- Zählvariable, Abbruchbedingung, Zählanweisung
Beispiel: for-Schleife
- for ($i=0; $i<100; $i = $i +1){- print "\n $i";- }
Ausgabe :- 0- …- 99
Weitere Anweisungen zur Kontrolle einer Schleife- last: Abbruch der Schleife- next: Abbruch des aktuellen Schleifendurchlaufs
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-49Perl-Programmierung
PRAXISPRAXIS--
Installation, Ausführung, Beispiele (Übung!)Installation, Ausführung, Beispiele (Übung!)
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-50Perl-Programmierung
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-51Perl-Programmierung
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-52Perl-Programmierung
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-53Perl-Programmierung
Vorlesung Einführung in die Bioinformatik - U. Scholz & M. Lange Folie #9-54Perl-Programmierung