Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Wissenschaftliche Programmierung mit Python - für Meteorologie und Atmosphärenforschung Martin G. Schultz Teil 1: Einführung.

Ähnliche Präsentationen


Präsentation zum Thema: "Wissenschaftliche Programmierung mit Python - für Meteorologie und Atmosphärenforschung Martin G. Schultz Teil 1: Einführung."—  Präsentation transkript:

1 Wissenschaftliche Programmierung mit Python - für Meteorologie und Atmosphärenforschung
Martin G. Schultz Teil 1: Einführung

2 Was bedeutet „Wissenschaftliche Programmierung“?
Umsetzung naturwissenschaftlicher Gleichungen in numerische Algorithmen Numerische Methoden zum Lösen von Gleichungssystemen Numerische Modellierung Visualisierung und statistische Analyse von Beobachtungs- und Modelldatensätzen 2

3 3

4 Was ist Python? Moderne Skriptsprache (d.h. keine Kompilierung nötig)
High-level Funktionalität Objektorientierter Ansatz, einfach mit prozeduraler Programmierung zu verbinden Erweiterbar (jede Menge Bibliotheken verfügbar) Python ist frei erhältlich und läuft auf den verschiedensten Plattformen (Linux, Windows, Mac OS, Smartphone, …) Oder: 4

5 Warum Python? Syntax ist klar, leicht zu lesen & lernen (fast Pseudocode) intuitive Objektorientierung volle Modularität, hierarchische Pakete Fehlerbehandlung mittels Ausnahmen dynamische, “ High Level”-Datentypen umfangreiche Standard-Bibliothek für viele Aufgaben einfache Erweiterbarkeit durch C/C++, Wrappen von C/C++-Bibliotheken Schwerpunkt: Programmiergeschwindigkeit! 5

6 Ist Python schnell genug?
für rechenintensive Algorithmen: evtl. besser Fortran, C, C++ für Anwenderprogramme: Python ist schnell genug! Großteil der Python-Funktionen sind in C geschrieben Performance-kritische Teile können jederzeit in C/C++ ausgelagert werden erst analysieren, dann optimieren! 6

7 Wo bekomme ich Python und was brauche ich?
Python: (2 Versionen: 3.2.x, 2.7.x); numerische Bibliotheken (SciPy, numpy, Matplotlib) oft nur für Python 2.7.x verfügbar [Okt. 2011] SciPy und NumPy: (siehe auch „Linux unofficial releases“) Matplotlib: (download link rechts unter „News“) Basemap toolkit: Netcdf API: netCDF4: (netcdf3, 4, HDF5: read/write; Linux and Windows) Enthought Python Distribution: freie Version unter (Windows, auch erhältlich für Linux und Mac); enthält die wichtigsten numerischen Bibliotheken inkl. Matplotlib 7

8 Programmierumgebungen
Editor + „python“ (geht immer) idle: Programmierumgebung mit Syntax-Highlighting und einfachem Debugger (in Standard Python Paket enthalten) eric: leistungsfähige Programmierumgebung, gut für Entwicklung größerer Projekte geeignet (

9 (Aller)erste Schritte
Aufrufen der interaktiven Umgebung idle (Linux: > idle &) oder > python oder > ipython Python 2.x: Python 3.x: Das ist auch schon fast der bedeutendste Unterschied zwischen Python 2.x und Python 3.x (soweit es diese Vorlesung angeht). Im Folgenden werden wir uns auf Python 2.7 fokussieren. Python version differences: 9

10 Python Versionen Derzeit gebräuchlich sind python 2.5, 2.6 oder 2.7 bzw. python 3.x Die Pythonversion kann mit Hilfe des sys Moduls (Module kommen später) herausgefunden werden: sys.version dient dem menschlichen Leser sys.version_info fasst das Wesentliche in einem Tupel zusammen, so dass die Information in eigenen Programmen verwendet werden kann. 10

11 Einige nützliche Hilfen
Wo findet Python seine Module? Umgebungsvariablen PYTHONHOME: Ort der Python-Installation PYTHONPATH: Suchpfad für Bibliotheken Windows 7: Suche „Umgebungsvariablen“, Neuer Eintrag …; Windows XP: Systemsteuerung, System, Erweitert…; Linux: in .bashrc, .ksh, .csh oder .profile mit Editor einfügen In Python Zugriff auf den Suchpfad über sys.path: Mehr Informationen unter: und 11

12 Nützliche Hilfen (2) help([object]): „object“ kann eine Zeichenkette sein oder eine Variable, ein Modul, ein Objekt, … dir([object]): Liste der Objekt-Attribute (Variablen, Methoden, Funktionen) object.__doc__: Zeigt den „doc string“ (eine Art Online-Hilfe) eines Objektes an Das Internet – Suche nach „python [frage]“ führt meistens schnell zu einer Lösung Beispiele: a=9; help(a) import sys; help(sys) help(‘open‘) 12

13 Module Funktionen, Klassen und Objekte, die thematisch zusammengehören, werden in Modulen gebündelt. Beispiel: math Enthält: acos(X), acosh(X), asin(X), asinh(X), atan(X), atanh(X), atan2(X), ceil(X), copysign(X,Y), cos(X), cosh(X), degrees(X), e, erf(X), erfc(X), exp(X), expm1(X), fabs(X), factorial(X), floor(X), fmod(X,Y), frexp(X), fsum(iter), gamma(X), hypot(X,Y), isinf(X), isnan(X), ldexp(X,i), lgamma(X), log(X,base), log1p(X), log10(X), modf(X), pow(X,Y), radians(X), pi, sin(X), sinh(X), sqrt(X), tan(X), tanh(X), trunc(X) Anmerkung: Mit help(modules‘) kann man eine Liste aller installierter Module bekommen. 13

14 Module importieren Einfache import Anweisung
Importieren einzelner Funktionen Importieren mit Aliasnamen Mehrere Module können mit einem Befehl importiert werden Alle Modulkomponenten in den Namensraum integrieren: Von dieser Variante ist dringend abzuraten, weil dadurch das Verstehen von Programmen deutlich erschwert wird. Beispiel: from os import * überschreibt die ursprüngliche open() Funktion. Und hier noch eine Variante für Experten: 14

15 Eigene Module Schreibe eine Textdatei mit folgendem Inhalt und speichere sie unter my_module.py ab: In der Python Shell gib folgendes ein: 15

16 Los geht‘s! Python als Taschenrechner:
Grundrechenarten: +, -, *, /, **, //, % ** : Exponent (kann auch nicht-ganzzahlig sein) // : Ganzzahl-Divison % : Modulo Division zwischen Ganzzahlen führt u.U. zum falschen Ergebnis (Python 2.x):  Schreibe immer 8./3. oder (bei Variablen) a/float(b) 16

17 Python Standardbibliotheken
Genaue Dezimalrechnungen: Trigonometrische (und andere) Funktionen: Mehr: siehe Mehr: siehe Anmerkung: diese Funktionen werden auch im numpy Modul definiert. 17

18 Python Standardbibliotheken
Exakte Brüche: fractions gcd: greatest common denominator Mehr: siehe

19 Python Standardbibliotheken
Datum und Zeit: datetime Zeit- und Datumsangaben: Mit Zeit und Datum rechnen: date time datetime timedelta

20 Python Standardbibliotheken
Zufall: random Operationen auf Verzeichnisnamen: os.path Dateien und Verzeichnisse: os Verzeichnislisting: glob Systemfunktionen: sys Mehr: (insgesamt 235 Bibliotheken!)

21 NumPy + SciPy + Matplotlib = Pylab
NumPy - N-dimensional Array manipulations SciPy - Scientific tools for Python: Interpolation Optimization and fitting techniques (linear regression, fit statistics, ..) More:

22 Matplotlib - Plotting library
Plots, histograms, power spectra, bar charts, errorcharts, scatterplots, etc. More: You can find your plot with python-script on the gallery of the typical plots:

23 Python-Power Aufgabe: Laden Sie die Klimadaten der Station Arkona aus dem Internet und plotten Sie die Zeitreihe der Tagesmitteltemperatur zwischen 1947 und 1999. Die Daten finden Sie auf den Webseiten des DWD: Das Datenformat ist „KL-90“, d.h. Datum und Tagesmitteltemperatur sind in bestimmten Spalten kodiert. Benötigt werden: Internetzugriff Einlesen einer Datei bzw. eines Datenstroms Analyse („parsen“) einer Textzeile Datumsarithmetik Grafische Darstellung einer Zeitreihe Wie lang ist wohl das Python-Programm, das dies alles kann? 23

24 Klimadaten Arkona 15 „echte“ Programmzeilen! Hier das Ergebnis: 24

25 Elemente des Arkona-Programms (1)
Doc-string: Zeichenketten mit drei Anführungsstrichen werden automatisch zur Dokumentation von Programmen oder Programmteilen verwendet (s. help()) 25

26 Elemente des Arkona-Programms (2)
Kommentare beginnen immer mit # Importieren von Modulen: wird meist am Programmanfang gemacht. 26

27 Elemente des Arkona-Programms (3)
Variablenzuweisung: Variablenname muss mit einem Buchstaben beginnen. Einfaches = Zeichen. Groß- und Kleinschreibung werden unterschieden! Lange Zeilen können mit \ umgebrochen werden. 27

28 Elemente des Arkona-Programms (4)
Fehler abfangen: erst einmal probieren (try), wenn‘s nicht klappt, dann eben eine Fehlermeldung ausgeben (except). Das ist alles, was zum Lesen der Daten benötigt wird! Einrückungen definieren die Programmstruktur (Blöcke). Ende der Einrückung = Ende des Blocks. Standard-Einrückung ist 4 Zeichen. 28

29 Elemente des Arkona-Programms (5)
Initialisierung der x- und y-Werte als zwei leere Listen. Anmerkung: im Allgemeinen wäre es besser, hier ein numpy array zu verwenden 29

30 Elemente des Arkona-Programms (6)
Schleife („loop“) über alle eingelesenen Datenzeilen. Sicherheitsabfrage: ignoriere leere (oder unvollständige) Datenzeilen. Füge das Datum der aktuellen Zeile der Liste hinzu. Füge die Temperatur der Liste hinzu. 30

31 Elemente des Arkona-Programms (7)
Erstelle die Grafik. … und zeige sie (auf dem Bildschirm) an. 31

32 Python Programme Programmtext kann in IDLE oder jedem Editor erstellt werden Speichern mit der Endung .py Aufruf: aus IDLE mit F5 (Run – Run Module) von der Kommandozeile mit python programm.py Unix: erste Zeile #!/usr/bin/python, dann kann das Skript direkt ausführbar gemacht werden. Exec: exec „print ‚Hello World!‘“ exec mit inline Text: „““ code „““ exec akzeptiert auch eine geöffnete Datei (laut Doku) andere Möglichkeiten: exec_file und diverse Varianten in verschiedenen Modulen … Exec birgt ein gewisses Sicherheitsrisiko! Programme (Programmbestandteile) aus anderen Dateien können mit import verfügbar gemacht werden oder mit exec direkt ausgeführt werden. Das Hauptprogramm hat immer den Namen „__main__“. Für Interessierte: (sections 9.1 und 9.2). 32

33 Programm-Elemente Funktion Objekt Bedingte Verzweigung
Schleife mit Abbruchbedingung Zählschleife Fehlerbehandlung 33

34 Aufgaben Schreibe eine Funktion, die die Summe 2*a+b zurückgibt, wenn a und b zwei Argumente sind. Teste diese Funktion mit verschiedenen Eingabewerten. Was passiert, wenn man z.B. eine Zeichenkette statt einer Zahl übergibt? Was passiert, wenn nur eine Zahl übergeben wird? Wie ruft man eine Funktion auf, die keinen Rückgabewert hat (in anderen Programmiersprachen „Prozeduren“ genannt)? Lese (mindestens) eines der Tutorials auf oder 34

35 Literatur und Weblinks
Python Anfänger-Tutorials: Python Tutorials für Leute mit Programmiererfahrung: Das „offizielle“ Python Tutorial: Python Referenz: Dive into Python: Deutsches Python-Forum: Deutsches Python Wiki: wiki.python.de Python FAQ: Climate Data Analysis Tools Other software: … und immer wieder „einfach suchen“! 35

36 .. und mehr Donald Ervin Knuth, The Art of Computer Programming: Seminumerical algorithms (vol. 2), Addison-Wesley Pub. Co., 19812 Vorlesung: Python Tipps&Tricks: Python version differences:


Herunterladen ppt "Wissenschaftliche Programmierung mit Python - für Meteorologie und Atmosphärenforschung Martin G. Schultz Teil 1: Einführung."

Ähnliche Präsentationen


Google-Anzeigen