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 ‘17 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, Messdaten, 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, Mac OSX 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 playDice.py Beispiele unter http://matplotlib.org Lernen von python und matplotlib Konzept dieses Kurses: – python lernen am Beispiel 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 online 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 läuft zum zweiten Mal Empfohlene Software nützliche Software-Pakete Die nachfolgenden Software-Pakete sind quelloffen (Open Source) und frei unter Linux, MS Windows (10) und Mac 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 Entwicklungsumgebung für python: IDLE • interaktives Arbeiten mit python: IPython • grafische Darstellung mit python: • python-Bibliotheken für wissenschaftliches Arbeiten: • Funktionsanpassung mit python: kafe • • (einfache) http://winpython.sourceforge.net/ Integrated Dvelopment and LEarning http://ipython.org/notebook.html matplotlib numpy und scipy 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 II Windows- oder Linux-Betriebssystem auf Linux und/oder Windows 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: VM-DaA Virtuelle Maschine VM-DaA (Vers. SS17) für VirtualBox (http://www.virtualbox.org) auf Basis von kubuntu 16.04.2 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 kompletter Linux-Umgebung ideal zum Ausprobieren und Gewöhnen → http://www.ekp.kit.edu/~quast/VM-DaA 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.2) >>> 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 Nutzer: Students Passwort: only ● ● 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) mit idle-python2.7 Evtl. Datenanalyse-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 !