BIOINF 1910 Bioinforma1k für Lebenswissenscha;ler Oliver Kohlbacher und Jens Krüger Sommersemester 2013 2. Unix Übersicht • Wich5ge Unix-­‐Kommandos! • Dateisysteme • Hierarchische Struktur • Kommandos zum Umgang mit Dateisystemen • Dateien • • • • Umbenennen, Kopieren, Löschen Edi5eren Durchsuchen Zählen von Zeichen/Wörtern/Zeilen • Archive 2 Unix-­‐Kommando: history! • history zeigt die letzten ausgeführten Kommandos an • Cursortasten in der Shell: • „↑”, „↓” vorhergehende Kommandos aufrufen • „←”, „→” Bearbeiten von Kommandos [user@bio:~/bilw] history! 1 mkdir bilw 2 cd bilw/ 3 touch Readme.txt 4 gedit Readme.txt & 5 tar xvfz 02_unix.tar.gz 6 history! Dateisysteme unter Unix • Benutzer haben ein Zuhause, das so genannte Home-­‐ Verzeichnis oder kurz Home! • Entspricht dem Verzeichnis „Eigene Dateien“ der neueren Windows-­‐Versionen • Nach dem Öffnen einer Shell befinden Sie sich in Ihrem Home! • Dort legen Sie Ihre Dateien und Unterverzeichnisse an Hierarchisches Dateisystem • Gängige Betriebssysteme verwenden hierarchische Dateisysteme zur Speicherung ihrer Daten • Ablage der Dateien erfolgt in hierarchisch ineinander geschachtelten Ordnern (Verzeichnissen) • Bekannt vom Windows-­‐Explorer • Einrückung entspricht 5eferer Hierarchiestufe • Ein Verzeichnis enthält die jeweils eine Hierarchiestufe 5efer liegenden Verzeichnisse und Dateien Hierarchische Dateisysteme Wechseln zwischen Verzeichnissen • Was ist denn eigentlich das „aktuelle“ Verzeichnis? • Im Explorer: Das grau hinterlegte • In der Shell: Das mit pwd angezeigte • Verzeichnis wechseln • Explorer: Mausklick • Shell: cd Rela1ve Pfade • Dateien oder Verzeichnisse, die nicht im aktuellen Verzeichnis liegen, kann man über Pfade erreichen • Befinden wir uns im Verzeichnis Bioinfo, so kann man auf die Datei seq.fasta, die sich in Uebung befindet, über Uebung/seq.fasta zugreifen • Uebung/ ist dabei der Pfad zur Datei, also die Abfolge der Ordner, die durchlaufen werden müssen, um zur Datei zu gelangen • Diese können beliebig verschachtelt sein, z.B.: Bioinfo/Uebung • Pfade die nicht mit „/“ (slash) beginnen, sind so genannte rela1ve Pfade: sie sind rela5v zum aktuellen Verzeichnis Unix-­‐Kommands: cd und pwd! • Das Kommando pwd (print working directory) gibt das aktuelle Verzeichnis aus und erlaubt Ihnen eine Standortbes5mmung, falls Sie sich in den Un5efen des Dateisystems verlaufen pwd • Das Kommando cd (change directory) erlaubt es Ihnen, das aktuelle Verzeichnis zu wechseln cd <Pfad> • Das Verzeichnis zu dem Sie wechseln muss natürlich exis5eren • In das übergeordnete Verzeichnis („eins hoch“) wechseln Sie mit cd .. [user@bio:~] pwd! /home/user! [user@bio:~] cd Uebung! [user@bio:~/Uebung] pwd! /home/user/Uebung! [user@bio:~/Uebung] cd ..! [user@bio:~] pwd! /home/user! Wechseln zwischen Verzeichnissen [user@bio:~] pwd! /home/user! [user@bio:~] cd /bilw! [user@bio:/bilw] cd Uebung! [user@bio:data] pwd! /bilw/Uebung/! [user@bio:data] cd Baum! [user@bio:data] pwd! /bilw/Uebung/Baum! [user@bio:Uebung] cd Wurzel/Stamm! [user@bio:Stamm] pwd! /bilw/Uebung/Baum/Wurzel/Stamm! ! / bilw bin lib src data Uebung Baum /bilw/data/Uebung/Baum/Wurzel Wurzel common Spezielle Pfade Unix kennt spezielle Verzeichnisnamen: • . aktuelles Verzeichnis • .. Verzeichnis eine Ebene höher • ~ Home • / „Urverzeichnis“ (auch Wurzel, root). • darunter liegen alle anderen Verzeichnisse (siehe vorhergehende Folie) • absoluter Pfad • ein Verzeichnisname (Pfad) oder Dateiname, der mit „/“ (slash) beginnt • dies ist gibt einen exakt definierten, eindeu5gen Ort an • Pfade oder Dateinamen, die nicht mit „/“ anfangen sind „rela5v“, nämlich rela1v zum aktuellen Verzeichnis! Spezielle Pfade [user@bio ~]$ cd Uebung! [user@bio ~/Uebung]$ pwd! /home/user/Uebung! [user@bio ~/Uebung]$ cd ..! [user@bio ~]$ pwd! /home/user! [user@bio ~]$ cd /home! [user@bio /home]$ pwd! /home! [user@bio /home]$ cd .! [user@bio /home]$ pwd! /home! [user@bio /home]$ cd ~! [user@bio ~]$ pwd! /home/user! [user@bio ~]$ cd /! [user@bio /]$ pwd! /! Verwenden von Verzeichnissen • Verzeichnisse („Ordner“) sind prak5sch, um Ordnung in seinem Heimatverzeichnis zu halten • Man kann beispielsweise Verzeichnisse anlegen für die Ergebnisse einer Übung • Wich5ge Befehle für den Umgang mit Verzeichnissen: • cd <Pfad> – wechselt in ein Verzeichnis • mkdir <Pfad> – legt ein Verzeichnis an • rmdir <Pfad> – löscht ein (leeres!) Verzeichnis Verwenden von Verzeichnissen [user@bio /bilw]$ ls! hev-pre.fasta wga.fasta Tutorial Uebung! [user@bio /bilw]$ mkdir Vorlesungsbeispiel! [user@bio /bilw]$ ls! hev-pre.fasta Tutorial Vorlesungsbeispiel wga.fasta Uebung ! !! [user@bio /bilw]$ cd Vorlesungsbeispiel/! [user@bio /bilw/Vorlesungsbeispiel]$ pwd! /bilw/Vorlesungsbeispiel! [user@bio /bilw/Vorlesungsbeispiel]$ cd ..! [user@bio /bilw]$ ls! hev-pre.fasta Tutorial Vorlesungsbeispiel wga.fasta Uebung ! [user@bio /bilw]$ rmdir Vorlesungsbeispiel! [user@bio /bilw]$ ls! hev-pre.fasta wga.fasta Tutorial Uebung! Umgang mit Dateien • Dateien sind die Behälter für Daten • Kennen Sie alle aus der Windows-­‐Welt • Befehle für den Umgang mit Dateien im Dateisystem: • touch <Name> [<Name2> [..]] legt leere Dateien an • rm <Name1> [<Name2> […]] (ReMove) löscht Dateien • cp <Quelle> [<Quelle2> […]] <Ziel> (CoPy) Kopiert Dateien • mv <Quelle> [Quelle2> […]] <Ziel> (MoVe) Verschiebt Dateien/Benennt Dateien um • Achtung: Löschen kann NICHT rückgängig gemacht werden! • Daher: Erst denken, dann 1ppen! Umgang mit Dateien • cat zeigt die Inhalte von Dateien zwar an, wartet aber bei der Anzeige nicht auf den Benutzer, so dass längere Dateien einfach an Ihnen vorbeirauschen • Sie können sich den Inhalt von Dateien in der Shell auch interak5v anzeigen lassen • Dazu verwenden Sie den Pager, den Sie auch schon von der Manpage kennen • more <Datei1> [<Datei2> […]] zeigt Inhalte in der Shell an • less <Datei1> [<Datei2> […]] ist die neuere (und etwas mäch5gere) Variante von more: kann auch rückwärts scrollen (less – opposite of more) Edi1eren von Dateien • Es gibt eine ganze Reihe von Editoren: gedit, nedit, emacs, vi, joe, ... • Manche Editoren haben ein graphisches Interface, andere sind reine Shell-­‐Editoren und komplep durch die Tastatur zu bedienen • Zwischen den verschiedenen Konzepten herrschen regelrechte Glaubenskriege (GUI/ TUI, vi/emacs, ...) • Wir beschränken uns hier auf gedit Editoren: gedit! [user@bio /bilw]$ gedit &! [user@bio /bilw]$ ! ‘&’ führt zu Ausführung des Kommandos im Hintergrund (Details in der Übung) Editoren: gedit! Editoren: gedit! [user@bio [user@bio [user@bio [user@bio ! /bilw]$ /bilw]$ /bilw]$ /bilw]$ gedit &! ! gedit neue_datei & ! ! Editoren: gedit! Editoren: gedit! Zählen von Zeichen/Zeilenw • wc (word count) erlaubt das Zählen von Zeichen und Zeilen • Hiermit kann man zum Beispiel sehr einfach bes5mmen, wie viele Datensätze man hat oder eine Reihe anderer nützlicher Dinge, die Sie in den Übungen näher kennenlernen werden • Syntax: • wc <Dateiname> Gibt die Anzahl der Zeichen in der Datei aus • wc -l <Dateiname> Gibt die Anzahl der Zeilen in der Datei aus • wc -w <Dateiname> Gibt die Anzahle der Wörter in der Datei aus • Beispiel: Zählen der PDF-­‐Dateien im aktuellen Verzeichnis: ls *.pdf| wc -l Suchen nach Text • grep (global search for a regular expression and print out matched lines) • Erlaubt das Suchen nach Texten in Dateien • grep sucht nach dem angegebenen Text in einer oder mehreren Dateien und kann angeben wo der Text (nicht) gefunden wurde • Syntax • grep <Text> <Dateiname> [<weitere Dateinamen>...] Gibt alle Zeilen aus, in denen <Text> vorkommt • grep -v <Text> <Dateiname> [<weitere Dateinamen>...] Gibt alle Zeilen aus, in denen der Text nicht vorkommt • grep -l <Text> <Dateiname> [<weitere Dateinamen>...] Gibt nur die Namen der Dateien aus, in denen <Text> vorkommt • grep -n <Text> <Dateiname> [<weitere Dateinamen>...] Gibt die Zeilennummern mit aus Suchen nach Text airosol:A kohlbach$ grep die *txt text2.txt:hape in seiner Baumschule die schönste airosol:A kohlbach$ grep ich *txt text1.txt:Wie froh bin ich, dass ich weg bin! text1.txt:Menschen! Dich zu verlassen, den text1.txt:ich so liebe, von dem ich unzertrennlich text2.txt:Eduard -­‐ so nennen wir einen reichen airosol:A kohlbach$ grep -­‐v ich text1.txt Bester Freund, was ist das Herz des war, und froh zu sein! Ich weiss, du verzeihst mir's. airosol:A kohlbach$ grep -­‐n Eduard *txt text2.txt:1:Eduard -­‐ so nennen wir einen reichen text2.txt:2:Baron im besten Mannesalter -­‐ Eduard airosol:A kohlbach$ grep -­‐l Eduard *txt text2.txt Datei test1.txt Wie froh bin ich, dass ich weg bin! Bester Freund, was ist das Herz des Menschen! Dich zu verlassen, den ich so liebe, von dem ich unzertrennlich war, und froh zu sein! Ich weiss, du verzeihst mir's. Datei test2.txt Eduard – so nennen wir einen reichen Baron im besten Mannesalter – Eduard hape in seiner Baumschule die schönste Stunde eines Aprilnachmipags zugebracht, um frisch erhaltene Pfropfreiser auf junge Stämme zu bringen. Archive (ZIP und TAR) • ZIP-­‐Dateien sind sog. Archive (=Dateien, in die andere Dateien gepackt worden sind) • Weitverbreitetes Format, prak5sch um ein „Bündel“ von Dateien zu schnüren • Platz sparend durch Komprimierung • tar ist ebenfalls ein Archiv-­‐Format • Weit verbreitet in der Unix-­‐Welt Verwendung von Archiven • Das Kommando tar dient zum Erzeugen und Auspacken von Archiven • tar akzep5ert sehr, sehr viele Op5onen, die Sie der Manpage entnehmen können • Für den Hausgebrauch reichen meist die folgenden Kommandos: tar zxf <Archivname> Packt ein komprimiertes Archiv (meist erkennbar an der Endung .tar.gz oder .tgz) im aktuellen Verzeichnis aus. tar zcf <Archivname> <Datei1> [<Datei2> […]] Erzeugt ein komprimiertes Archiv mit dem Namen Archivname und fügt dort die Dateien Datei1, 2, … ein. Anstelle von Dateinamen können auch ganze Verzeichnisse angegeben werden, die dann – inklusive der Unterverzeichnisse – eingepackt werden. tar ztf <Archivname> Zeigt die Inhalte des Archivs an, ohne es auszupacken. UNIX-­‐Kommando: tar! [user@bio /bilw]$ ls! hev-pre.fasta wga.fasta Tutorial Uebung! [user@bio /bilw]$ tar zcf all.fasta.tar.gz *.fasta! [user@bio /bilw]$ ls! all.fasta.tar.gz wga.fasta Uebung hev-pre.fasta Tutorial! [user@bio /bilw]$ mkdir test! [user@bio /bilw]$ cd test! [user@bio test]$ tar zxf ../all.fasta.tar.gz! [user@bio test]$ ls! hev-pre.fasta wga.fasta! ! gzip/gunzip • gzip/gunzip komprimieren/dekomprimieren Dateien verlusvrei • Bei Textdateien (insbesondere auch Sequenzdaten!) können so sehr große Mengen an Speicherplatz gespart werden (ox bis zu 80%) • Die entsprechenden Dateien enden meist auf .gz • Syntax: • gzip <Datei> Komprimiert <Datei>; Datei ist danach nicht mehr vorhanden, sondern durch <Datei.gz> ersetzt • gunzip <Datei.gz> Dekomprimiert <Datei.gz> und legt wieder die Ursprungsdatei an Algorithmen • Bevor man ein Programm schreibt, muss man wissen was der Rechner tun soll! • Die Beschreibung einer Methode zur Lösung der gegebenen Aufgabenstellung nennt man Algorithmus • Dementsprechend sind Kochrezepte oder Bedienungsanleitungen nichts anderes als Algorithmen • Ein Programm ist die formale Umsetzung eines Algorithmus in einer Programmiersprache • Da Rechner nur Maschinencode ausführen können, sind Compiler oder Interpreter notwendig, die das Programm aus der Programmiersprache in Maschinencode umsetzen, der dann ausgeführt wird Algorithmen, Code, Rechner Programmcode Eingabedaten Compiler/ Interpreter Maschinencode Algorithmus Ausgabedaten Python • Python ist eine einfach zu erlernende Programmiersprache • Entwickelt wurde Python Anfang der 90er Jahre von Guido van Rossum • Python ist benannt nach der bri5schen Komikertruppe „Monty Python“ Guido van Rossum • Warum Python und nicht Java, C++, Perl, ..? • Python ist sehr einfach zu lernen • Python ist für alle Systeme frei verfügbar • Python und Perl sind in der Bioinforma5k die wich1gsten „Skriptsprachen“ • Python ist ästhe1scher als Perl www.python.org Python-­‐Interpreter • Startet man den Python-­‐Interpreter durch Eingabe des Kommandos python an der Kommandozeile, so meldet der Interpreter sich zur interak5ven Arbeit mit seinem Prompt (>>> ): [user@bio: ~] python Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29) [GCC 4.2.1 (Apple Inc. build 5646)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> • An diesem Prompt erwartet der Interpreter nun eine Eingabe • Im Gegensatz zu Compilersprachen (wie C, C++, Pascal, Fortran,…) kann man mit interpre1erten Sprachen (wie Perl, Python, Ruby, …) direkt in ein laufendes Programm eingreifen, da das Programm erst zur Ausführungszeit in Maschinencode übersetzt wird • Compiler (Übersetzer) hingegen nehmen den vollständigen Programmcode, übersetzen ihn aus der Programmiersprache in Maschinencode und führen diesen dann als Ganzes aus Auswertung von Ausdrücken >>> 1 + (13 * 17) 222 >>> 12.45 / 100 + 7.5e-3 0.132 >>> Auswertung von Ausdrücken >>> a = 4 >>> b = 'ACTG' >>> a + b Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for +: 'int' and 'str' >>> b + a Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: cannot concatenate 'str' and 'int' objects • Python hat verschiedene Typen für Daten die in Variablen gespeichert sind • int / float für numerischen Daten (ganze Zahlen und Fließkommazahlen) • str für Zeichenkepen (Strings) • Operator ist nicht (immer) kompa5bel für Variablen unterschiedlichen Typs (was ist die Summe eines Strings und einer Zahl?) Literatur + Links Bücher • Gibas, Jambeck: Einführung in die prak5sche Bioinforma5k, O‘Reilly, 2002 Internet • Tutorials auf soxware-­‐carpentry.org • Tutorial “Python for Biologists” am Ins5tut Pasteur: www.pasteur.fr/forma5on/infobio/python/ • Tutorial und Doku auf www.python.org