Perl Skript

39
MERIAN-SCHULE FREIBURG Bioinformatik Perl Practical extraction and report language Inhalt 1. Einführung ...................... ................................. . Seite 2 2. Grundlagen....................... ................................. Seite 3 3. Kontrollstrukturen............... ............................... Seite 5 4. Variablen........................ ................................. ... Seite 7 5. Filehandles...................... ................................. .. Seite 10 6. Pattern Matching und Reguläre Ausdrücke....... Seite 11 Dr. Harald Bobeth 09.06.2022 Seite 1/39

Transcript of Perl Skript

MERIAN-SCHULE FREIBURG Bioinformatik

PerlPractical extraction and report languageInhalt1. Einfhrung ........................................................ Seite 2 2. Grundlagen........................................................ Seite 3 3. Kontrollstrukturen.............................................. Seite 5 4. Variablen............................................................ Seite 7 5. Filehandles......................................................... Seite 10 6. Pattern Matching und Regulre Ausdrcke....... Seite 11

ANHANG

A: Software............................................................ Seite 15 B: Variablen - Skalara, Arrays, Hashes ................ Seite 16 C: Ntzliche Perl-Skripts ...................................... Seite 17 D: bungsaufgaben............................................... Seite 19 E: Links................................................................. Seite 25

Dr. Harald Bobeth

19.10.2011

Seite 1/25

MERIAN-SCHULE FREIBURG Bioinformatik

1. Perl Einfhrung1.1 Drei Beispiele 1. Umwandlung einer Aminosurensequenz im Einbuchstabencode in eine Sequenz im Dreibuchstabencode Skript: Eincode_zu_Dreicode.pl mit der Datei : Chymotrypsin_B_1Code.txt 2. Extraktion von Teilinformationen aus einer Datei im FASTA-Format Skript: Lesen_Mult_FASTA_hash.pl mit der Datei: Presenilin_hum_prot_mult.fasta 3. Ermittlung einer Konsensus-Sequenz Skript: Consensussequenz.pl mit derDatei: aligned.fas 1.2 Strken der Programmiersprache Perl Auslesen von Textdateien Manipulation von Textdateien

1.3 Geschichte Perl wurde 1987 von Larry Wall entwickelt. Es geht die Geschichte, dass Wall vernetzte Rechner an der Ost- und Westkste der USA betreuen musste. Dazu gehrte auch die Analyse von Berichten und das Erstellen von bersichtslisten. Mit den bis dahin herkmmlichen Programmiermitteln htte er dies nur mit groem zeitlichen Aufwand verwirklichen knnen. Deshalb habe er eine neue Programmiersprache erfunden: Pearl: Practical extraction and report language Spter wurde das a im Namen weggelassen: Perl Sptter bersetzen Perl mit: Pathologically eclectic rubbish lister Zur Software siehe Anhang A Inhalt

Dr. Harald Bobeth

19.10.2011

Seite 2/25

MERIAN-SCHULE FREIBURG Bioinformatik

2. Perl Grundlagen2.1 Eingabe per Tastatur, Ausgabe auf dem Bildschirm ffnen Sie mit dem Perl-Editor das Skript Eingabe_Ausgabe.pl. Starten Sie das Programm (Run in Command Prompt oder Shift + F9). Auf eine Registrierung wird verzichtet. Schlieen Sie das MS-DOS-Fenster. Hinweis: Wie ein Programm gestarten wird, wird im Folgenden nicht mehr extra aufgefhrt. Analysieren Sie das Skript: In einem Perl-Skript unterscheidet man Anweisungen und Kommentare. Wie kann PERL zwischen Kommentaren und Anweisungen unterscheiden? Welche Aufgabe hat $skalart? Welche Auswirkungen hat die Anweisung chomp? berprfen Sie dies, indem Sie die entsprechende Zeile als Kommentar-Zeile ausweisen. Stellen Sie weitere Eigenheiten fest. Programmier-Aufgabe: Schreiben Sie ein eigenes kurzes Eingabe-Ausgabe-Skript (ohne Kommentare) und speichern Sie es unter einem selbst gewhlten Namen ab. 2.2 Berechnungen Analysieren Sie das Skript Berechnungen.pl Was bedeutet das Zeichen $ vor einem Zeichen bzw. einer Zeichenfolge? Was bewirkt die Angabe \n? Programmier-Aufgaben: 1. Nach Eingabe einer Zahl soll deren Quadrat berechnet werden. Hinweis: Verwenden Sie statt der Berechnung wie y = x * x die Funktionsschreibweise y = x2. Suchen Sie im Internet, wie dies geht. 2. Nach Eingabe einer Zahl soll deren Quadratwurzel berechnet werden. 2.3 Einfache Manipulationen von Texten Analysieren Sie das Skript Text_String_Operationen.pl selbststndig!

Dr. Harald Bobeth

19.10.2011

Seite 3/25

MERIAN-SCHULE FREIBURG Bioinformatik

Programmier-Aufgaben: 1. Geben Sie in das Perl-Skript eine aus dem Internet gesuchte DNA-Sequenz ein und lassen Sie deren Lnge bestimmen. Hinweis: $dna = atgcgt....gtaca; 2. Nach Eingabe eines Wortes soll dieses unterstrichen auf dem Bildschirm ausgegeben werden. Hinweis: Die Striche befinden sich eine Zeile tiefer. Zusammenfassung Fassen Sie die wichtigsten Befehle, Operatoren usw. in einer WORD-Datei tabellarisch zusammen und ergnzen Sie in Zukunft Ihre Tabelle. 2.4 Einfache Ersetzungen: Ersetzen.pl Das nachfolgende Skript ist eine Einfhrung in das groe Kapitel Pattern Maching (vergl. Kapitel 6) Analysieren Sie das Skript Ersetzen.pl. Welche neuen Operatoren erkennen Sie? Schreiben Sie sich die neuen Befehle heraus.. Programmier-Aufgabe Schreiben Sie ein Programm, das folgende Anforderungen erfllt: 1. Auf Aufforderung geben Sie eine RNA-Sequenz mit 4 Nukleotiden ein. 2. Auf dem Bildschirm wird ein entsprechender Ausschnitt aus einem DNADoppelstrang ausgegeben. Diese Ausgabe soll folgende Form haben (Beispiel): 5-AGCT-3 IIII 3-TCGA-5 Speichern Sie das Programm unter RNA_in_DNA.pl ab. Wenn der Benutzer fehlerhafte Eingaben macht, ist das Programm nicht brauchbar. berlegen Sie, welche Fehler der Benutzer machen knnte. An welchen Stellen msste das Programm ergnzt werden, damit fehlerhafte Eingaben zurckgewiesen bzw. automatisch verbessert werden. Benutzen Sie vorlufig die Umgangssprache.

Dr. Harald Bobeth

19.10.2011

Seite 4/25

MERIAN-SCHULE FREIBURG Bioinformatik

2.5 Ablaufsplanung Bei der Lsung grerer Aufgaben ist es zweckmig, sich den Ablauf vorab genau zu berlegen und dies zu dokumentieren. Man kann den Ablaufsplan in der Umgangssprache formulieren. Es gibt aber auch mehrere genormte Programmablaufsplne Internet: http://de.wikipedia.org/wiki/Programmablaufplan http://de.wikipedia.org/wiki/Nassi-Shneiderman-Diagramm Im Ordner NSD ist ein Programm abgespeichert, mit dem man NSD-Diagramme auf einfach Weise erstellen kann (siehe: NSD-Editor Kurzanleitung). Das Diagramm kann in die Skriptsprache C umgewandelt werden und von dort leicht als PerlSkript verndert werden. Inhalt

Dr. Harald Bobeth

19.10.2011

Seite 5/25

MERIAN-SCHULE FREIBURG Bioinformatik

3. Perl Kontrollstrukturen3.1 Bedingungen, Alternativen Analysieren Sie das Skript Bedingung.pl. Notieren Sie sich die Besonderheiten der Syntax.. (der Vergleichsoperator eq entspricht ist gleich. ) Stellen Sie die Skriptzeilen als Programmentwurf dar. berlegen Sie sich 3 Beispiele, wo dieser Skriptabschnitt eingesetzt werden knnte. Im Skript if-if_statt_if-elsif.pl knnen Sie sehen, wie die if-Anweisung falsch eingesetzt ist. Programmier-Aufgabe: Verbessern Sie das Skript RNA_in_DNA.pl, so dass fehlerhafte Eingaben zurckgewiesen bzw. automatisch verbessert werden. Benennen Sie das verbesserte Skript RNA_in_DNA_2.pl. Skizzieren Sie einen Programmentwurf. Welche Eingaben knnen automatisch verbessert werden? Welche Eingaben mssen zurckgewiesen werden? 3.2 While-Schleifen, Do_until-Schleifen Analysieren Sie die Skripts Schleifen1.pl und Schleifen2.pl. Welche Schleife ist Kopf, welche fugesteuert? Ersetzen Sie $text = ja mit $text = nein und berprfen Sie das unterschiedliche Verhalten der beiden Schleifen. berlegen Sie sich Einsatzmglichkeiten und schreiben Sie ein neues Skript. Skizzieren Sie dazu einen Programmentwurf. 3.3 For-Schleife Wenn man wei, wie oft eine Schleife durchlaufen werden muss, whlt man gern die sog. For-Schleife. Beispiel: Bilde die Fakultt einer vorgegebenen Zahl n. n! = 1*2*3*.........n. Die Syntax der For-Schleife lautet:

Dr. Harald Bobeth

19.10.2011

Seite 6/25

MERIAN-SCHULE FREIBURG Bioinformatik

for($i = 1;$i = 5, soll er eine entsprechende Fehlermeldung ausgeben und eine erneute Zahleneingabe abwarten. Bei korrekter Zahleneingabe soll am Schluss das Wort ENDE auf dem Bildschirm erscheinen. Der Anwender soll eine positive Zahl eingeben. Der Computer soll dann die Quadratwurzel dieser Zahl auf dem Bildschirm ausgeben. Die entsprechende Funktion lautet: $x = sqrt($y). Bei Eingabe einer negativen Zahl soll der Computer eine entsprechende Fehlermeldung ausgeben und eine erneute Zahleneingabe abwarten. Bei korrekter Zahleneingabe soll das Wort ENDE auf dem Bildschirm erscheinen. Es soll ein Passwort eingegeben werden, das mindesten 8 Zeichen lang ist. Ist diese Bedingung nicht erfllt, soll der Computer das Passwort mit einer entsprechenden Fehlermeldung zurckweisen und auf eine erneute Passworteingabe warten. Hat das Passwort die notwendige Lnge, soll auf dem Bildschirm das Wort LOGIN erscheinen. Nach 10 falschen Eingaben soll abgebrochen werden. Der Anwender soll ein neues Passwort beliebiger Lnge generieren. Nach Eingabe des Passwortes soll er es zur berprfung erneut eingeben. Stimmen beide Eingaben berein, soll auf dem Bildschirm stehen: Neues Passwort angenommen. Stimmen die Eingaben nicht berein, soll der ganze Vorgang wiederholt werden. Nach 10 falschen Eingaben soll abgebrochen werden. Primzahlen Geben Sie eine natrliche Zahl als obere Grenze an und lassen Sie den Computer alle Primzahlen bis zu dieser Grenze berechnen.

if

m

s_5 m

s_4 l

m

s_6 s

Gegeben sind die beiden alignierten DNA-Sequenzen.$S1= TTTGTTCCCTAAATAGGGACTTGTATGAACGGCCACAAGAGGGCTTTACTGTCTCTTACTTCCAATCCGTGAAATTGACCTTCCCGTG AAGAGGCGGGAATATAATAATAAGACGAGAAGACCCTATGGAGCTTTAATTAACCGACCCAAAGAGACCATATGAACCAACCGACAGGAACAACAAACCTCTATATGGGCCGGCAATTTAGGTTGGGGTGACCTCGGAGAATAAAACAACCTCCGAGTGATTTAAA TCTAGACTAACCAGTCGAAAGTACTACATCACTTATTGATCCAAAAACCTTGATCAACGGAACAAGTTACCCTAGGGATAACAGCGCAA TCCTATTTCAGAGTCCATATCGACAATGAGG $S2 = TTTGTTCCCTAAATAGGGACTTGTATGAATGGCCACACGAGGGCTTTACTGTCTCTTACTTCCAATCCGTGAAATTGACCTTCCCGTG AAGAGGCGGGAATACAACAATAAGACGAGAAGACCCTATGGAGCTTTAATTAACCGACCCAAAGAGACCCATCAATTTCAACCGACAGG AACAACAAACCTCTGTATGGGCCGACAATTTAGGTTGGGGTGACCTCGGAGAACAGAACAACCTCCGAGTGATTTAAATCAAGACTAAC CAGTCGAAAGTATTACATCACTTATTGATCCAAAAGTTTGATCAACGGAACAAGTTACCCTAGGGATAACAGCGCAATCCTATTTCAGA GTCCATATCGACAAT-AGG

Berechnen Sie den Score des Alignments. Match = 1, Mismatsch = 0, Gap = -4. s_7 s Die werte fr Match, Mismatch und Gap sollen im Skript eingegeben sein. Gegeben ist eine Nukleotidsequenz. $S = TAAATCTAGCCCTACCAACCCTACACTCAATTCTCATATTATATTAAATCAA AACATTCACTTACCAAAAAGTATAGGAGATAGAAATTTCACTAAGGCGCAA19.10.2011 Seite 22/25

Dr. Harald Bobeth

MERIAN-SCHULE FREIBURG Bioinformatik

TAGAGATAGTACCGCAAGGGAATGATGAAAGATAGTTTAATAGTAAAAAAT AGCAAGGATTAACCCCTTTACCTTTTGCATAATGAATTAACTAGAAAAATCT GACAAAGAGAACTATAGCCAGAAACCCCGAAATCAGACGAGCTATCTGATA GTAATCCCCAGGATCAATTCATCTATGTGGCAAAATAGTGAAGAAACTTACA GATAGAGGTGAAATACCAATCGAGCCTGATGATAGCTGGTTGTCCAGAAAT AGAATTTTAGTTCTACCTAAAACTTACCACAAAAACAAAATAATTCCAATGT AAGTTTTAGAGATATTCAAAAGGGGTACAGCTCTTTTGACCAAGGATACAAC CTTGATTAGCGAGTAAATTCACCATTAATTTCATAGTTGGCTTAGAAGCAGC CATCAATTAAGAAAGCGTTAAAGCTCAACAACCAACCAAACTAAAAAGATT CCAAAATTAATTAATGATCTCCTAAACATAATACTGGACTAATCTATATAAA TAGAAGAAATAATGTTAGTATAAGTAATAAGAAGTATTTCTCCCTGCATAAG CTTATATCAGGTCGGATGCCCGCTGATAGTTAACAACCGAATAATTAAATAC AAAAATAGAACCTTTATTATACCAATTGTTAACCCAACACAGGCATGCTTAA GGGAAAGATTAAAAGAAGGAAAAGGAACTCGGCAAA. Berechnen Sie die prozentuale Hufigkeit der Nukleotide und stellen Sie dies bersichtlich dar. s_8 m Fehlerhaftes Skript analysieren und verbessern Das Skript fehler.pl soll zhlen, wie oft das Wort ein in jeder Zeile einer Textdatei vorkommt. Es findet zwar die gesuchten Wrter, zhlt aber falsch. Verbessern Sie das Programm. s_9 m Zufallszahlen Lassen Sie den Computer mindestens 1000 mal wrfeln und prfen Sie, ob die gewrfelten Zahlen gleich verteilt sind. s_10 s Die Variablen $sequenz beinhalte eine Nukleotidsequenz im FASTA-Format. Diese Sequenz soll auf dem Bildschirm in 10er-Blcken dargestellt werden. Jede Zeile soll 3 bzw. 4 Blcke enthalten. Dies soll ber eine Abfrage entschieden werden. Zu Beginn jeder Zeile sollen ber Ziffern die Positionen von..bis notiert sein

Variablen v_1 m In einner Liste (z.B. einer Zeugnisliste sollen die Ziffern durch das entsprechende Zahlwort ersetzt werden. Beispiel: Deutsch: Chemie: Sport: 2 1 3 in Deutsch: Chemie: Sport: gut sehr gut befriedigend

Dr. Harald Bobeth

19.10.2011

Seite 23/25

MERIAN-SCHULE FREIBURG Bioinformatik

v_2 m

Zufallszahlen Sie spielen gegen den Computer das Spiel Schere, Stein, Papier. Schreiben Sie ein entsprechendes Skript.

v_3 m

Ein Benutzer gibt seinen Geburtstag in folgendem Format ein: 21.10.67. Unter der Voraussetzung, dass der Benutzer im 20. Jahrhundert geboren wurde soll das Datum in folgender Form ausgegeben werden: 31. Oktober 1967.

Datei-Handling d_1 m In der Datei text1.txt ist ein kurzes Gedicht abgespeichert. Der Text soll zeilenweise auf dem Bildschirm ausgegeben werden. Anschlieend sollen die einzelnen Zeilen des Gedichtes durchnummeriert werden, alles auf dem Bildschirm ausgegeben und unter einem neuen Dateinamen abgespeichert werden. Die Datei test1.fasta ist im FASTA-Format abgespeichert. ffnen Sie die Datei, entfernen Sie die erste Zeile und speichern Sie die reine Sequenz als test1a.fata ab. Hinweis: arrays.pl

d_2 m

Pattern Matching p_1 m im Text, den Sie gerade lesen, beginnt jeder Satz mit einem kleinen Buchstaben. verbessern sie den Text. das Perl-Programm soll fr jeden Text geeignet sein. den vorliegenden Text knnen Sie ber Copy Paste einer Variablen zuordnen. ursprnglicher Text und verbesserter Text sollen auf dem Bildschirm zu lesen sein.

p_2 Inhalt

Dr. Harald Bobeth

19.10.2011

Seite 24/25

MERIAN-SCHULE FREIBURG Bioinformatik

E: Internetadressen zu PerlZu Perl: http://perl-seiten.bei.t-online.de/perl/perl_main.html http://www.mathe2.uni-bayreuth.de/perl/inhalt.htm http://www.ssw.uni-linz.ac.at/Teaching/Lectures/Sem/2000/Katzmayr/index.html http://www.uni-kiel.de/rz/lehr/doku/perlkurs/ http://www.clug.de/vortraege/perl/perl-14-nov-1997.html http://www.tekromancer.com/ http://www0.id.ethz.ch/Publikationen/Dokumentation/perl/index.html http://www.cip.physik.uni-muenchen.de/~tf/perl/ http://www.uni-mainz.de/~pommeren/WWW-Kurs/Teil_III.html http://de.wikipedia.org/wiki/Perl http://userpage.fu-berlin.de/~corff/perl/perlkurs-1.html http://www.inf.hs-zigr.de/~maetti01/?page=Studium/Perl http://www.shadoware.de/computer/perl/ http://www.page-workshop.de/CGI-Perl/Tutorial/Start.htm http://www.perlboard.de/perlguide/Inhalt.html http://www.bergt.de/workshop/wolfdesign/html/cgi.htm

Zu Programmstrukturen http://www.fh-meschede.de/public/willms/infoSkript/02/02_kontroll.pdf http://hukla.prakinf.tu-ilmenau.de/Lehre/EP/Ws2000-01/Vor/vor.html

Inhalt

Dr. Harald Bobeth

19.10.2011

Seite 25/25