Vorlesung 9

Werbung
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
VORLESUNG 9:
MODULE
MATTHIAS BIEG
1 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
MODULE: INTRO
2 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
WAS SIND MODULE
Module bieten die Möglichkeit Python Code logisch zu
organisieren
Wenn Code zu einem grossen Programm wächst, sollte
man diesen in organisierte Stücke unterteilen und in
einzelne Module speichern
Module können dann über die import Anweisung in
andere Module, bzw. Skripte eingefügt werden
Üblicherweise werden Funktionen, die eine bestimmte
Art von Problemen lösen, jedoch unabhängig
voneinander operieren in ein Modul gespeichert und
dieses Modul in ein Python Skript mit der Anweisung
import eingebunden, falls dessen Funktionen gebraucht
werden
3 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
WAS SIND MODULE
Module sind also eine Art Python Code zu organisieren
Diese Art der Organisation macht das Teilen von Code
sehr einfach
Es gibt unzählige Module, die in der Python
Standardbibliothek enthalten sind
Ein Beispiel ist das Modul sys, das Schnittstellen
(Funktionen, Attribute, etc) zur Interaktion mit dem
Python Interpreter zur Verfügung stellt
import sys # Importieren des Moduls sys
input1 = sys.argv[1] # Zugriff auf die Liste argv
4 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
MODULE UND
DATEIEN
5 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
MODULE UND DATEIEN
Während Module eine Möglichkeit darstellen Python
Code logisch zu organisieren, so stellen Dateien eine
Möglichkeit dar Module physikalisch zu organisieren
Das heisst: Jede Datei kann als ein Modul angesehen
werden und umgekehrt
Der Dateiname eines Moduls ist der Modulname mit
dem Anhängsel .py, das heisst also, dass jedes Python
Skript als Modul angesehen werden kann und über die
Anweisung import in andere Pythonskripte eingebunden
werden kann
Beispiel: Angenommen ich schreibe ein Modul mit dem
Namen mymodule, so heisst die Datei in dem der Code
für dieses Modul gespeichert wird mymodule.py
6 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
SUCHPFAD UND PFADSUCHE
Der Prozess des Importierens eines Moduls verlangt
vom Python Interpreter ein Prozess namens Pfadsuche
Die Pfadsuche durchsucht vordefinierte Bereiche im
Dateisystem nach der Datei mymodule.py, wenn das
Modul mymodule eingebunden werden soll
Diese vordefinierten Bereiche nennt man Suchpfad
Es gibt Fälle in denen das Importieren eines Moduls
fehlschlägt:
>>> import xxx
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'xxx'
Hierbei kann der Interpreter auf das engeforderte Modul
nicht zugreifen. Der sehr wahrscheinlich Grund hierfür
ist, dass das Modul nicht im Suchpfad enthalten ist,
weshalb die Pfadsuche fehlschlägt
7 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
STANDARD SUCHPFADE
Standard Suchpfade werden während der Installation
des Python Interpreters definiert
Es gibt zwei Möglichkeiten Standard Suchpfade
einzusehen, bzw. zu modifizieren
Die Linux Systemvariable PYTHONPATH enthält eine
durch : getrennte Liste an Pfaden in denen der Python
Interpreter nach Modulen sucht:
Innerhalb von Python Skripten kann man über die
Variable sys.path auf Suchpfade zugreifen
>>> import sys
>>> sys.path
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-i386-linux-gnu']
Wichtig: Der Pfad in dem ein Pythonskript ausgeführt
wird ist immer im Suchpfad enthalten
8 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
MODULE UND NAMENSRÄUME
(NAMESPACES)
Um Konflikte in der Namensgebung von Variablen,
Funktionen, etc. zwischen unterschiedlichen Modulen zu
vermeiden, besitzt jedes Modul seinen eigenen
Namensraum (namespace)
Funktionen, Variablen, etc. die innerhalb eines Moduls
definitert wurden nennt man Attribute des Moduls
Auf Attribute eines Moduls greift man über den Namen
des Attributs mit vorangestelltem Namen des Moduls,
verknüpft durch einen Punkt "." zu
Wichtig: Um auf Attribute (Variablen, Funktionen, etc.)
des lokalen Namensraums zuzugreifen muss kein
Modulname vorangestellt werden!
9 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
MODULE UND NAMENSRÄUME: BEISPIEL
Wir definieren ein Modul mymodule und speichern
dieses in der Datei mymodule.py
# mymodule.py
def listSum(l):
sum = 0
for element in l:
sum += element
return sum
tripletMap = {"AUG": "Start", "UAA": "Stop"}
>>> import mymodule # Importiere Modul mymodule
>>> l = [1,2,3]
>>> print mymodule.listSum(l) # Benutze Funktion listSum aus mymodule
6
>>> tripletMap = {"ATG": "Start", "TAA": "Stop"} # Definiere tripletMap lokal
>>> print tripletMap # greife auf lokale tripletMap zu
{"ATG": "Start", "TAA": "Stop"}
>>> print mymodule.tripletMap # greife auf tripletMap aus mymodule zu
{"AUG": "Start", "UAA": "Stop"}
10 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
MODULE
IMPORTIEREN
11 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
DIE IMPORT ANWEISUNG
Um Module in ein Pythonskript, bzw. ein eigenes Modul
einzubinden benötigt man die Anweisung import
Schema
import modul1
import modul2
.
.
import moduln
Ausserdem ist es möglich mehrere Module innerhalb
einer Zeile einzubinden
Schema
import modul1, modul2, ... , moduln
12 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
DIE FROM-IMPORT ANWEISUNG
Es ist möglich bestimmte Attribute eines Moduls in sein
eigenes Modul zu importieren
D.h. die Namen der Attribute eines fremden Moduls in
den lokalen Namensraum des eigenen Moduls
einzubinden
Hierfür genügt folgende Anweisung
Schema
from module import attribute1, attribute2, ..., attributen
13 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
DIE FROM-IMPORT ANWEISUNG:
BEISPIEL
# mymodule.py
def listSum(l):
sum = 0
for element in l:
sum += element
return sum
tripletMap = {"AUG": "Start", "UAA": "Stop"}
>>> from mymodule import listSum, tripletMap
>>> l = [1,2,3]
>>> print(listSum(l))
6
>>> print(tripletMap)
{"AUG": "Start", "UAA": "Stop"}
Wenn man Attribute eines fremden Moduls mit der
from-import Anweisung in sein eigenes Modul
einbindet, so kann man auf diese ohne vorangestellten
Modulnamen zugreifen!
14 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
ERWEITERTE IMPORT ANWEISUNG (AS)
Manchmal kann es sinnvoll sein für ein Modul, das man
importiert ein Alias zu verwenden
Gründe hierfür können sein: Man hat schon ein Modul
oder ein Modulattribut importiert, das den gleichen
Namen besitzt; Der Name des zu importierenden Moduls
ist zu lang, oder vielleicht mag man den Namen des
Moduls schlichtweg nicht, ...
Um ein Modul mit einem Alias zu importieren genügt
folgende Anweisung
Schema
import module as module_alias
15 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
ERWEITERTE IMPORT ANWEISUNG (AS):
BEISPIEL
# mymodule.py
def listSum(l):
sum = 0
for element in l:
sum += element
return sum
tripletMap = {"AUG": "Start", "UAA": "Stop"}
>>> import mymodule as mm # Importiere Modul mit Alias mm
>>> print(mm.tripletMap) # Zugriff auf Attribut tripletMap über mm.tripletMap
{"AUG": "Start", "UAA": "Stop"}
Will man nicht über den langen Modulnamen mymodule
auf Attribute dieses Moduls zugreifen, so kann man das
Modul mit einem Alias mm in das lokale Modul einfügen
16 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
PLOTTING: DAS
MODUL
MATPLOTLIB.
PYPLOT
17 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
MATPLOTLIB.PYPLOT: INTRO
Das Modul matplotlib.pyplot kann zum Plotten von
Daten benutzt werden
Es bietet eine Sammlung von Funktionen: Zum Erstellen
von Figures und Plotting Bereichen innerhalb der
Figures; zum Plotten von Linien, Punkten innerhalb der
Plotting Bereiche; zum Dekorieren des Plots mit Labels;
etc.
In matplotlib.pyplot werden die Zustände zwischen
Funktionsaufrufen erhalten. D.h. das Modul merkt sich
die momentane Figure und den momentanen Plotting
Bereich. Plotting Funktionen plotten immer in den
momentanen Plotting Bereich
18 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
MATPLOTLIB.PYPLOT: PLOT()
Die Funktion plot(*args, **kwargs) wir dazu benutzt
Linien und Punkte in definierten Plottingbereichen (Axes)
zu Plotten
args ist ein Argument variabler Länge, das mehrere x
und y Listenpaare erlaubt, gefolgt von einem optionalen
String, der das Format der zu plottenden Punkte/ Linien
angibt
Folgende Beispielaufrufe der Funktion plot() sind
zulässig
plot(x,
plot(x,
plot(y)
plot(y,
y) # Plotte x und y mit dem Standard Lininienformat
y, 'bo') # Plotte x und y als blaue Kreise
# Plotte y mit x als Indexliste 0..N
'r+') # Gleich wie plot(y) mit roten Plussen
Hierbei sind x und y numerische Listen gleicher Länge.
Es werden die Werte von x (x-Achsen Werte) gegen die
Werte von y (y-Achsen Werte) geplottet
19 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
MATPLOTLIB.PYPLOT: PLOT()
Folgende Liste gibt eine Übersicht über die
Linienformate
20 of 35
Zeichen
Beschreibung
'-'
Solide Linie
'--'
Gestrichelte Linie
'-.'
Gestrichelt/ gepunktete Linie
':'
Gepunktete Linie
'.'
Punkt Marker
'o'
Kreis Marker
'v'
Dreiecks Marker (Spitze nach unten)
'<'
Dreiecks Marker (Spitze nach links)
'>'
Dreiecks Marker (Spitze nach rechts)
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
MATPLOTLIB.PYPLOT: PLOT()
Folgende Liste gibt eine Übersicht über die Farben
21 of 35
Zeichen
Farbe
'b'
Blau
'g'
Grün
'r'
Rot
'c'
Cyan
'm'
Magenta
'y'
Gelb
'k'
Schwarz
'w'
Weiss
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
MATPLOTLIB.PYPLOT: PLOT()
Beispiele
>>>
>>>
>>>
>>>
22 of 35
import matplotlib.pyplot as plt # Importiere matplotlib.pyplot als Alias plt
x = [float(i)/10. for i in range(100)]
plt.plot(x, [i*i for i in x]) # Plotte x gegen x*x mit Standardlinienformat
plt.show() # Zeige Bild in Fenster an
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
MATPLOTLIB.PYPLOT: PLOT()
Beispiele
>>>
>>>
>>>
>>>
23 of 35
import matplotlib.pyplot as plt # Importiere matplotlib.pyplot als Alias plt
x = [float(i)/10. for i in range(100)]
plt.plot(x, [i*i for i in x], "ro") # Plotte x gegen x*x als rote Punkte
plt.show() # Zeige Bild in Fenster an
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
MATPLOTLIB.PYPLOT: ANZEIGEN VON
PLOTS
Plots können auf zwei Arten angezeigt werden:
Direktes Anzeigen in einem Fenster: Um Plots direkt in
einem neuen Fenster anzuzeigen kann die Funktion
plt.show() benutzt werden
Speichern in Datei: Um Plots in eine Datei zu speichern
wird die Funktion plt.savefig(dateiname) benutzt
24 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
MATPLOTLIB.PYPLOT: DEKORIEREN
VON PLOTS MIT TEXT
Um Plot mit beschreibendem Text (x-Achsen
Beschriftung, y-Achsen Beschriftung, Titel des Plots) zu
versehen können folgende Funktionen verwendet
werden:
plt.xlabel(string): Fügt den String string als x-Achsen
Beschriftung dem Plot hinzu
plt.ylabel(string): Fügt den String string als y-Achsen
Beschriftung dem Plot hinzu
plt.title(string): Fügt den String string als Überschrift
des Plots hinzu
25 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
MATPLOTLIB.PYPLOT: DEKORIEREN
VON PLOTS MIT TEXT
>>>
>>>
>>>
>>>
>>>
>>>
>>>
26 of 35
import matplotlib.pyplot as plt # Importiere matplotlib.pyplot als Alias plt
x = [float(i)/10. for i in range(100)]
plt.plot(x, [i*i for i in x], "ro") # Plotte x gegen x*x als rote Punkte
plt.xlabel("x-Werte")
plt.ylabel("y-Werte")
plt.title("Parabel f(x)=x*x")
plt.show() # Zeige Bild in Fenster an
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
MATPLOTLIB.PYPLOT: FIGURES UND
PLOTTING BEREICHE (AXES)
Figure und Axes Schema
27 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
MATPLOTLIB.PYPLOT: DEFINIEREN VON
FIGURES
Mit Hilfe der Funktion plt.figure(num=None,
figsize=None, dpi=None, facecolor=None,
edgecolor=None, frameon=True) erstellt man eine
neue Figure
Die Parameter haben folgende bedeutung
Parameter Bedeutung
28 of 35
num
Integer Wert. Wenn der Wert nicht
angegeben wird, wird eine neue Figure
erstellt. Wird der Wert angegeben und es
existiert schon eine Figure mit diesem
Wert, so wird dies Figure aktiviert
figsize
Tuple aus Integer Werten. Weite und Höhe
der Figure in Zoll
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
MATPLOTLIB.PYPLOT: DEFINIEREN VON
FIGURES
Parameter
Bedeutung
dpi
Integer Wert. Auflösung des Plots in Anzahl
der Punkte pro Zoll
facecolor
Hintergrund Farbe
edgecolor Farbe des Rahmens
Wichtig: Wird nicht explizit eine neue Figure erstellt, so
wird automatisch in eine Figure mit den Standardwerten
geplottet
29 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
MATPLOTLIB.PYPLOT: DEFINIEREN VON
PLOTTING BEREICHEN
Die funktion plt.subplot(numrows, numcols,
numaxes) wird dazu benutzt Plottingbereiche zu
erstellen und den momentanen Plotting Bereich zu
setzen
Die Parameter haben folgende Bedeutung
Parameter Bedeutung
numrows
Anzahl der Zeilen in die die Figure unterteilt
werden soll
numcols
Anzahl der Spalten in die die Figure
unterteilt werden soll
numaxes
Die Nummer des Plottingbereichs, der als
momentaner Bereich gesetzt werden soll
Wichtig: Wird kein Plottingbereich definiert, so wird der
gesamte Figure Bereich als Plottingbereich benutzt
30 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
MATPLOTLIB.PYPLOT: FIGURES UND
PLOTTING BEREICHE
Beispiel
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
31 of 35
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 10), dpi=80)
x = [float(i)/10. for i in range(100)]
plt.subplot(2,2,1)
plt.plot(x, [i*i for i in x])
plt.subplot(2, 2, 2)
plt.plot(x, [i*i for i in x], 'ro')
plt.subplot(2, 2, 3)
plt.plot(x, [i*i for i in x], 'gv')
plt.subplot(2, 2, 4)
plt.plot(x, [i*i for i in x], 'm<')
plt.show()
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
MATPLOTLIB.PYPLOT: FIGURES UND
PLOTTING BEREICHE
Beispiel
32 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
MATPLOTLIB.PYPLOT: EINIGE PLOTTING
FUNKTIONEN
Das Modul matplotlib.pyplot stellt neben der Funktion
plt.plot() unzählige Funktionen zum Plotten
verschiedenster Daten zur Verfügung
Beispiele hierfür sind:
Funktion
Beschreibung
plt.bar()
Erstellt Bar Charts
plt.boxplot()
Erstellt Boxplots
plt.histogram() Erstellt Histogrammplots
33 of 35
plt.contour()
Erstell Contourplots
.
.
.
.
.
.
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
SUMMARY
34 of 35
24.11.2015 12:27
Vorlesung 9: Module
file:///home/fran/tmp/matze/dkfz/projects/python-lecture_tmp/lecture09/lecture09.html?print-pdf
SUMMARY
Module werden dazu benutzt Code logisch zu
organisieren
Jedes Modul wird einer Datei mit der Endung .py
gespeichert
Jedes Modul beinhaltet Attribute (wie z.B. Funktionen,
Variablen, etc.), auf die man nach dem importieren
Zugreifen kann
Das Modul matplotlib.pyplot stellt Funktionen zum
Darstellen von Daten zur Verfügung
Es gibt unzählige funktionen zum Plotten
verschiedenster Daten (siehe http://matplotlib.org für
eine detaillierte Beschreibung des Moduls)
35 of 35
24.11.2015 12:27
Herunterladen