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 22 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

3 33

4 44 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:

5 55 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!

6 66 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!

7 77 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]http://www.python.org/download/ SciPy und NumPy: (siehe auch Linux unofficial releases)http://www.scipy.org/Download Matplotlib: (download link rechts unter News)http://matplotlib.sourceforge.net/ Basemap toolkit: Netcdf API: – netCDF4: (netcdf3, 4, HDF5: read/write; Linux and Windows)http://code.google.com/p/netcdf4-python/ Enthought Python Distribution: freie Version unter (Windows, auch erhältlich für Linux und Mac); enthält die wichtigsten numerischen Bibliotheken inkl. Matplotlib

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 (http://eric-ide.python-projects.org/) 8

9 99 (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:

10 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.

11 11 Mehr Informationen unter: und Mehr Informationen unter: und 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:

12 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) Beispiele: a=9; help(a) import sys; help(sys) help(open)

13 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.

14 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:

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

16 16 Los gehts! 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)

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

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

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

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

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

22 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 23 Python-Power Aufgabe: Laden Sie die Klimadaten der Station Arkona aus dem Internet und plotten Sie die Zeitreihe der Tagesmitteltemperatur zwischen 1947 und 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?

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

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

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

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

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

29 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

30 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.

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

32 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. 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).http://docs.python.org/tutorial/classes.html

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

34 34 Aufgaben 1.Schreibe eine Funktion, die die Summe 2*a+b zurückgibt, wenn a und b zwei Argumente sind. 2.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? 3.Wie ruft man eine Funktion auf, die keinen Rückgabewert hat (in anderen Programmiersprachen Prozeduren genannt)? 4.Lese (mindestens) eines der Tutorials auf oder

35 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.dewiki.python.de Python FAQ: Climate Data Analysis Tools Other software: … und immer wieder einfach suchen!

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


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

Ähnliche Präsentationen


Google-Anzeigen