python - Fakultät für Physik

Vorlesung
(Einführung in die)
Computergestützte Datenauswertung
Günter Quast, Andreas Poenicke
Fakultät für Physik
Institut für Experimentelle Kernphysik
KIT – Die Forschungsuniversität in der Helmholtz-Gemeinschaft
SS 2016
www.kit.edu
Rechnernutzung in der Wissenschaft
Datenerfassung
Einzelplatz­Rechner
als Schnittstelle zum
Anwender (=Physiker)
Moderne
ModerneWissenschaft
Wissenschaftohne
ohneComputer
Computernicht
nichtdenkbar
denkbar
CERN Computer Centre
Server­Rack Worldwide LHC computing Grid
Weltumspannende Netzwerke: Grid(s) und Cloud
Rechnerhardware
Rechner in der Physik heute meist auf PC-Architektur (PC=Personal Computer)
d.h. Mikrocomputersysteme bestehend aus:
- Mikroprozessor(en)
- (flüchtigem) Halbleiter-Speicher
- permanentem Magnet-Festplattenspeicher
oder „SolidStateDisk“ (SSD)
- Ein-Ausgabeschnittstellen
-Tastatur, Bildschirm, Maus, Wechsellaufwerke, Drucker, Netzwerk, ...
Verfügbar als
- Einzelplatz-Desktop-PC /
Notebook
- vernetzter Cluster aus
Desktop-PCs
- PC-Farm mit Fileservern
- Multi-Prozessor-Installationen
für „High-Performance-Computing“
- vernetzte Rechenzentren
(„GRID“ & „Cloud“)
Für diesen Kurs (und praktisch Ihr gesamtes
Studium) ist ein Notebook ideal:
●
●
●
≥2 GB Speicher
≥25 GB freier
Plattenplatz
≥ core i3
andernfalls: PCs im CIP-Pool
dieser Kurs läuft
sogar auf einem
Raspberry pi
Betriebssystem
Anwendungsprogramme
Direkter Zugriff von
Anwenderprogrammen
auf Hardware
nur in Ausnahmefällen
sinnvoll / möglich:
- ein-Prozess-Betrieb
(z.B. Spiele!)
- Echtzeit-Anwendungen
Betriebssystem
Treiber
Windows,
BIOS
MacOSX,
Linux,
Android,
Hardware
...
Ansonsten:
Zugriff auf Hardware
nur über Betriebssystem
Verschiedene Anforderungen ...
Mobiltelefon, Windows ….
App_1
App_2
Arbeit an Projekten
App_1
App_3
App1Data
GUI 1
GUI 2
GUI 3
AppData 1
AppData 2
AppData 3
App_4
App_4
GUI 4
App4Data
Gemeinsame
Daten
App_2
App2Data
App3Data
ProjektDaten
Projektziel
AppData 4
z.B. Foto-App,
E-Mail-Programm
Telefon-App
….
App_3
Android
Windows
Projektziel: Produkt (Dokument,App ...)
Daten: Grafiken, Tabellen, Textbausteine,
Meßdaten, Ergebnisse von Auswertungen ...
Mac OS X
Linux
… erfordern unterschiedliche Arbeitsumgebungen !
Interaktion mit dem Computer ...
Es gibt viele Wege:
grafisch mit Finger und Gesten
grafisch klicki-bunti mit Maus
Shell auf der Textkonsole
Grafik & Textkonsole
Arbeitsumgebung für diesen Kurs
Steuerung von Arbeitsabläufen
Arbeitsabläufe sind meist mehrschrittig und komplex
Beispiel: Vergleich von (Mess-)Daten mit Modell
- Berechnung der Modellvorhersage(n)
- Datenaufnahme und Korrekturen
- Statistische Datenanalyse und Cross-Checks,
Systematische Fehler
- Dokumentation und Sicherstellung der
Reproduzierbarkeit der Ergebnisse
versus
Script
interaktiv / Maus
++ sehr intuitiv
+ leicht erlernbar
- kaum Reproduzierbarkeit bei
komplexen „Workflows“
- - spezielle Menü-Optionen nicht
im Ergebnis dokumentiert
- - keine permanente Dokumentation
der Vorgehensweise
- - in der Regel auf eine Anwendung
und deren Tools festgelegt
0
erfordert Einarbeitung
+
relativ leicht erlernbar
++ Skript enthält alle relevanten
Schritte: vollständige Dokumentation des Arbeitsablaufs
++ vollständig reproduzierbar
++ einfache Nutzung verschiedener
Programm-Pakete und Tools
Interaktion mit dem Betriebssystem
Wir empfehlen:
& friends:
- numpy
- scipy
- matplotlib
python ist eine
– moderne
– objektorientierte
– interpretierte
– intuitive
– leicht zu erlernende
– effiziente
Programmier- und Skript-Sprache
mit
– Unterstützung praktisch aller Funktionen des Betriebssystems,
– eigenen Modulen insb. auch für wissenschaftliches Rechnen
– Anbindung von Bibliotheken wichtiger Programmpakete
– Einbindung von selbst-programmierter Funktionalität
python ist verfügbar für Windows, MaxOSX und Linux: Platform-übergreifend !
Betriebssystem für Wissenschaftliches Arbeiten
Spezielle Empfehlung: Nutzen Sie Linux für wissenschaftliches Arbeiten !
Linux ist eine Re-Implementierung (Open Source) von Unix
(begonnen Anfang der 90er von Linus Torvalds)
LINUX ist (wie UNIX) ein portables (in C programmiertes), recht einfach
aufgebautes Betriebssystem, mit folgenden wesentlichen Eigenschaften:
-Multitasking (Prozess-Scheduling, Prozess-Kommunikation)
- Multiuser (Zugangskontrolle und Abrechnung)
- dialogorientiert
- ein Werkzeugkasten mit viele hundert Dienstprogrammen
- (mehrere) Shell(s) mit mächtiger Script-Sprache;
Scripte laufen als Unterprozesse des startenden Prozesses
- Dateisystem mit Baum-artiger Struktur, Rechtekontrolle für Datei-Zugriff
- graphische Oberfläche X-Windows (X11)
- volle Netzwerkunterstützung, incl. Netzwerk-Laufwerken, remote shells etc.
Linux bietet viele Vorteile –
der Einstieg über die virtuelle Maschine (s. unten) ist leicht. Probieren Sie es aus !
python „Appetizers“
python appetizer
http://docs.python.org/2/tutorial/
Visualisierung und Auswertung von Daten mit
& friends:
- numpy
- scipy
- matplotlib
numpy:
effizientes und komfortables Arbeiten mit „arrays“ als Datenstruktur
matplotlib: Erstellen von Grafiken in „Publikationsqualität“
http://www.matplotlib.org
matplotlib user guide: „ making plots should be easy!“
Beispiel 1
Darstellung einer
Funktion
x=np.linspace(0.,10, 200)
y=np.sin(np.pi*x)/x
i.w. das Ergebnis dieses plt.plot(x,y,label='example function')
kurzen Programms: plt.legend()
siehe simplePlot.py plt.show()
Beispiel 2
Datenpunkte mit Fehlerbalken
und einer Geraden
ym=[2.31,1.27,4.40,4.98,5.40,6.98,7.53,8.54,9.65,10.15]
xm=range(1,11)
plt.errorbar(xm,ym,yerr=0.5,fmt='ro')
x=np.linspace(0.,11.,100)
y=x+0.5
plt.plot(x,y)
plt.show()
simpleData.py
Beispiel 3
Bestimmung von π mit
Zufallszahlen
pi.py
s. auch
animate_pi.py
Beispiel 4: 3d
Funktionen von
zwei Variablen in 3d
plot3dfunction.py
noch mehr Beispiele
animate_wave.py
animated_Gauss.py
throwCoin.py
Beispiele unter http://matplotlib.org
Lernen von python und matplotlib
Konzept dieses Kurses:
–
–
–
–
–
–
python lernen am Bespiel der Darstellung von Daten mit matplotlib
statistische Einsichten gewinnen durch „Ausprobieren“
(„the python way“)
Aufgeklappte Notebook-Deckel ausdrücklich erwünscht !!!
(direktes Ausprobieren der Vorlesungs-Beispiele)
aktive Teilnahme an den Kleingruppen-Übungen unerlässlich
(Programmieren lernt man durch Programmieren)
Recherche in on-line Dokumentation erforderlich
(Listen mit Befehlen und Optionen in der Vorlesung sind laaangweilig)
Bilden von Lerngruppen, Diskutieren von Lösungsmöglichkeiten
(Programmieren ist ein kreativer Prozess)
Das Ziel: Kreative Nutzung des Computers zur Lösung von Problemen
Der Kurs ist neu, bin auch gespannt ...
Empfohlene Software
nützliche Software-Pakete
Die nachfolgenden Software-Pakete sind quelloffen (Open Source)
und frei unter Linux, MS Windows (10) und Max OSX verfügbar
Textdokumente erstellen mit LaTeX
siehe z.B. http://www.dante.de/
• (Vektor-)Grafik mit INKSCAPE
https://inkscape.org/de/
• Ausführen von virtuellen Maschinen: VirtualBox
https://www.virtualbox.org/
• Programmiersprache python
unter Linux (meist) schon installiert
Windows siehe
http://winpython.sourceforge.net/
• (einfache) Entwicklungsumgebung für pytho IDLE
Integrated Dvelopment and LEarning
• Pyhon Entwicklungsumgebung
PyCharm EDU https://www.jetbrains.com/pycharm-edu/
• interaktives Arbeiten mit python:
IPython
http://ipython.org/notebook.html
• grafische Darstellung mit python:
matplotlib
• python-Bibliotheken für wissenschaftliches Arbeiten:
numpy und scipy
• Funktionsanpassung mit python: kafe
http://www.ekp.kit.edu/~quast
•
•
man braucht noch einen Texteditor ( das ist „Geschmackssache“ ,
etwas komfortabler als MS Notepad darf's schon sein)
In diesem Kurs werden wir hauptsächlich mit python, numpy & matplotlib arbeiten
nach dem Konzept: „Learning by Doing“
Virtuelle Hardware
Software-Emulation von Hardware auf Wirts-System
seit langem bei Großrechnern
alte Rechner auf moderner Hardware/OS, z.B. Atari, V24, Apple
Windows- oder Linux-Betriebssystem auf Linux und/oder Windows
(bisher kommerziell)
aktuell empfohlen:
– VirtualBox, freie Virtualisierungslösung für Linux, Windows, Mac
siehe http://www.virtualbox.org
Virtualisierung
erlaubt Standard-Umgebung auf unterschiedlichster Hardware bzw. OS
Virtuelle Maschine mit aller notwendigen Software zum Kurs
und Dokumentation finden Sie unter:
http://www.ekp.kit.edu/~quast/VM-DaA
Virtuelle Maschine zum Kurs: VMroot
Virtuelle Maschine VM-DaA (Vers. SS16) für
VirtualBox (http://www.virtualbox.org)
auf Basis von kubuntu 16.04 LTS 32 bit
Installationsanleitung: http://www.ekp.kit.edu/~quast/VM-DaA
Enthaltene Software
diverse Editoren zur Erstellung von Text/Programmcode
Libreoffice (Textbearbeitung, Tabellenkalkulation und Präsentation)
inc. texmath-Erweiterung zur Einbindung von Formeln mit LaTeX
Textsatzsystem LaTeX
Vektorgrafik inkscape
C und C++ Compiler gcc / g++
python mit numpy, scipy und matplotlib
gnuplot und qtiplot zur Datenanalyse und Visualisierung
Datenanalyseframework ROOT
RooFiLab zur interaktiven Funktionsanpassung mit Root
python-Paket kafe zur Funktionsanpassung
weitere Pakete problemlos nachladbar
Virtuelles Linux unter Windows
VirtualBox herunterladen und installieren
→ https://www.virtualbox.org/
für Windows (alle Versionen), Mac OSX und Linux
virtuelle Maschine herunterladen
Virtuelle Maschine
über das Menü von
VirtualBox starten
→
Arbeiten in
kompletten
Linux-Umgebung
ideal zum
Ausprobieren
und
Gewöhnen
→ htttp://www.ekp.kit.edu/~quast/VMroot/
Software unter Windows
Um ein Windows-System (getestet unter Windows10)
zu nutzen, muss einiges an zusätzlicher Software installiert werden:
Hier die getesteten (und empfohlenen) Pakete mit Download-Links:
– WinPython (32 bit Version):
WinPython-32bit-2.7.10.3.exe
eine komplette Python-Umgebung mit diversen IDEs
– DANTE LaTeX „texlive“:
install-tl-windows.exe
– iminuit (vers. 1.1.1) zur Funktionsanpassung
iminuit für Windows
wird in der python-shell mit Hilfe von „pip“ installiert:
>>> pip install future >>> pip install iminuit.1.1.1.whl
– putty und filezilla zum Datei-Transfer von / zu anderen Systemen
– ein Ent- / Packprogramm, z.B. 7zip zum Packen und Entpacken von Archiven
in Standard-Formaten (.zip oder auch .tar.gz oder .tgz)
– Paket kafe zur Funktionsanpassung
kafe vers. 1.0.x
>>> pip install kafe
– evlt. das mächtige Datenanalyse-Framework root vom CERN: root_v5.34.34.win32.vc12.exe
Software unter Windows (2)
Damit alles reibungslos zusammen spielt, müssen noch Pfade
über die Systemsteuerung gesetzt werden:
über das Menü (rechte Maustaste in Windows 10)
Systemsteuerung > System und Sicherheit > System > Erweiterte Systemeinstellungen
im sich dann öffnenden Fenster
Doppelklick auf Path
im sich darauf öffnenden Fenster folgende Pfade hinzufügen:
X:\DAsoft\texlive\2015\bin\win32
X:\DAsoft\WinPython2.7.10.3\python-2.7.10 X:\DAsoft bezeichet den
Pfad zur Zusatzsoftware
Evtl. einen Wert für root anlegen (falls es installiert ist)
X:\DAsoft\root_v5.34.34\bin
und eine neue Umgebungsvariable anlegen:
PYTHONPATH mit dem Wert X:\DAsoft\root_v5.34.34\bin
damit kann root unter python verwendet werden
Der Beqeumlichkeit halber noch Dateien vom Typ .py mit python.exe verknüpfen:
Rechtsklick auf Datei.py → Öffnen mit → andere App auswählen
X:\DAsoft\WinPython2.7.10.3\python-2.7.10\python.exe
Vorbereitete Software für Windows
Um das Herunterladen der Pakete zu vereinfachen, gibt es eine
nützliche Sammlung unter:
http://www.ekp.kit.edu/~quast/vorlesung/CgDA/Software
●
●
Das Verzeichnis Win10/Downloads enthält die Installierbaren Dateien
die Datei Win10/Dasoft.7z ist ein gepacktes Verzeichnis mit allen Dateien
für LaTeX, WinPython (mit kafe), PyCharm und Root
(„portable“ Versionen)
Ohne Installation nach Setzen der Umgebungsvariablen lauffähig
(z.B. auch von einem (schnellen) USB-Stick)
Software unter Linux/Mac OSx
Viele Pakete sind unter Linux standardmäßig schon vorhanden,
fehlende werden einfach über die Paketverwaltung zusätzlich installiert:
LaTeX: texlive, texlive-science, texlive-extra-utils
Python, python-numpy, python-matplotlib, python-scipy
(Achtung: wir arbeiten (noch) mit Version 2.7)
idle-python2.7
Pycharm Edu von Web-Seite des Herstellers https://www.jetbrains.com/pycharm-edu/
Evtl. Datenanylsye-Paket root (Vers. 5.34) über die Paketverwaltung von Ubuntu
oder vom CERN: https://root.cern.ch/downloading-root
Software zur Funktionsanpassung kafe: http://www.ekp.kit.edu/~quast/kafe
Ich wünsche Ihnen Erfolg beim Installieren, viel Spaß beim Ausprobieren
und uns allen ein gutes Gelingen des Kurses !