echnischet universität dresdenknoll/python/material/2008...wissenschaftliches arbeiten mit python...

46

Upload: others

Post on 22-Jun-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Wissenschaftliches Arbeiten mit Python

Carsten Knoll

Technische Universität Dresden

08. November 2008

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 1 / 53

Page 2: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Gliederung

1 Einführung

2 Merkmale und Eigenschaften von Python

3 Python interaktiv

4 Wichtige Pakete

5 Visualisierung

6 Anwendungsbeispiele

7 Tipps zum effizienten Arbeiten

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 2 / 53

Page 3: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Python?!

en.wikipedia:

Python is a general-purpose, high-level programming language. Its designphilosophy emphasizes programmer productivity and code readability.Python's core syntax and semantics are minimalist, while the standardlibrary is large and comprehensive. ...

Relativ junge Programmiersprache(Erste Verö�entlichung: 1991, Guido van Rossum;

Seitdem enorme Zunahme in Popularität und Entwickleraktivität)

Schwerpunkte: Produktivität und Lesbarkeit

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 4 / 53

Page 4: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Warum Python in Wissenschaft nutzen? I

Python selbst ist quello�en und frei.

∃ sehr viele quello�ene und freie Erweiterungen.

→ Sehr gute Vorausetzung für Forschung und Lehre(Nachvollziebar- und Verfügbarkeit, Kosten)Weitere Gründe:

LesbarkeitProduktivitätGeneralität und MächtigkeitPlattformunabhängigkeitVerbreitung (Erfahrungsaustausch, Speziallösungen)

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 5 / 53

Page 5: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Warum Python in Wissenschaft nutzen? II

Eignung für Lehre bestätigt durch Verö�entlichungen undErfahrungsberichte

�A Comparison of C, MATLAB, and Python as Teaching Languages inEngineering� [7]:>>A corresponding solution in MATLAB is far less elegant, and itrequires signi�cant e�ort to achieve this in C.<<

�Exploiting Real-Time 3d Visualisation to Enthuse Students: A CaseStudy of Using Visual Python in Engineering�[8]

�Python Scripting for Computational Science�[12]

...

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 6 / 53

Page 6: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Persönliche Motivation

Pythons Möglichkeiten stückweise entdecktBeginn: Workshops von.. Thomas Güttler [1] und Arnd Bäcker [2]Von da ab Python zunehmend selbst genutzt → immer mehrMöglichkeiten entdeckt

Bedürfnis Wissen weiterzugeben (und eigene Erkenntnisse zu ordnen)

Heimliche Ho�nung: Vergröÿerte Nutzer-Gemeinschaft leistetpotentiell gröÿeren Beitrag und ermöglicht besserenErfahrungsaustausch

→ Vernetzung → Website [42]

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 7 / 53

Page 7: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Merkmale I

Überschaubare und zum Teil selbsterklärende Syntax.�Python liest sich fast wie Pseudo-code.�

Einrückungen haben semantische Bedeutung.→ Lesbarkeit erzwungen.

Mächtige eingebaute Datentypen. (list, dict, ...)

Docstrings (Vom Programm aus zugängliche Kurzdokumentation desProgrammteils)

Konzept: �Batterien inklusive�.→ Sehr umfangreiche Standard-Bibliothek(> 280 Module: ... anydb, ... zipfile, ...).

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 9 / 53

Page 8: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Merkmale II

Konzept: Alles ist ein Objekt!

Trotzdem: Nutzung von verschiedenen Paradigmen (prozedural,objektorientiert, funktional)

Organisation von umfangreicheren Projekten durch Module, Paketeund Namensräume

Weitreichende Möglichkeiten zur Fehlervermeidung und -suche:Exceptions, Tracebacks, integrierter Debugger, Log-Modul

Möglichkeit von interaktiven Sitzungen →IPython

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 10 / 53

Page 9: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Python als �Taschenrechner�

python startet den Interpreter im interaktiven Modus

selbstverständlich: +, -, *, /! Unterscheidung zwischen Gleitkomma- u. Ganzzahlen bei Division

Potenzieren: z=5**2 | 25**0.5

Komplexe Zahlen: z=1+2j | x=z.real | abs(z.conjugate)

Für weitere Bedürfnisse: from math import *

→ sin, atan2, exp,...

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 12 / 53

Page 10: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Python als �Taschenrechner� II

... bzw. gleich ipyton -pylab nutzen

Unterstützung für Arrays und Matritzen dot, cross, eigenvalues

Visualisierung über matplotlib

t=arange(0,20,0.1)

z=t*exp(1j*t)

plot(z.real, z.imag)

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 13 / 53

Page 11: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

IPython - Verbesserte Python Shell

Zwischenschicht zwischen Benutzer und Python-Interpreter,selbst in Python implementiertZahlreiche Vorteile gegenüber ursprünglicher Shell:

Auto-Vervollständigung (auch auf Objektebene)Farbige Ausgabe, ausführliche Ausgabe�Magische Kommandos� für schnellen Zugri� auf Docstrings, aufQuellcode, auf Betriebssystembefehle ...... log-Funktion, timing-Funktionenintelligente Ein/Ausgabe-Historie

Kurzer Überblick über Möglichkeiten: Befehl: ?

Weiterer Einsatzmöglichkeit: als eingebettete Shell in eingenemPython Skript

Sehr geeignet, um Fehler zu �nden, Verhalten von Objekten zu testen,usw.

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 14 / 53

Page 12: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Module und Pakete

Modularisierung: immer wichtiger mit zunehmender Komplexität

Hauptgründe: Quellcode-Wartung und -Wiederverwertung,Gruppierung von Funktionalität (z. Bsp. für Verö�entlichung)

In einem Modul können de�niert sein: Funktionen, Klassen, VariablenHierarchische Paketstruktur:

{Modul1, Modul2,... } = Paket1{Paket1, Modul3,... } = Paket2Modul: Datei mit Endung .py

Paket: Verzeichnis welches mindestens __init__.py enthält

Einbinden mittels import

Einbinden des kompletten Moduls, oder Teile davon

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 16 / 53

Page 13: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

import von Modulen

komplett, in eigenen Namensraum

import math

x=math.cos(3.0/2*math.pi)

partiell, in globalen Namensraum

from math import cos, pi

x=cos(3.0/2*pi)

komplett, in globalen Namensraum

from math import *

x=cos(3.0/2*pi)

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 17 / 53

Page 14: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

numpy

Basispaket für numerische Berechnungen: numpy, [18]

Herzstück: Klasse für n-dimensionale Datenfelder (Arrays)

dazu: umfangreiche Unterstützungs-Funktionalität (fft, linalg,random, ...)

Ziel: Performanz

Bietet gute Schnittstellen zu kompiliertem Code (C und Fortran)

Vorgänger Numeric und numarray sind in numpy aufgegangen;werden nicht weiter entwickelt

Aktuell: numpy ∈ scipy-Projekt

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 18 / 53

Page 15: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

scipy

Aufsatz auf numpy: scipy, [36]Bietet sehr viel Funktionalität aus dem Bereich wissenschaftlichesRechnen:

OptimierungStatistikSignalverarbeitungDGL-Integratoren (ODE-Solver)...

Vorde�nierte spezielle Funktionen (Besselfktn., ellipt. Integrale, ...)

Schnittstellen zum Daten-In/-Export (bspw. aus Bildern,Datenbanken)

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 19 / 53

Page 16: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

ScientificPython

Weitere Bibliothek für Berechnungen: Scienti�cPython, [35]

Ähnliche Zielstellung zu scipy, trotzdem UnterschiedeBietet:

Geometrie (Vektoren, Quaternionen, Tensoren,...)E/A-Schnittstellen: (PDB, NetCDF,...)Parallelisierung (Threading, MPI, BSP)Visualisierungsschnittstellen (VRML, ...)Automatisches Di�erenzieren...

ScientificPython verwendet Numerical statt numpy→ evtl. Kon�ikte/Inkonsistenzen mit scipy

Mit etwas Vorsicht (Namensräume) parallele Nutzung gut möglich

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 20 / 53

Page 17: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

sympy

Symbolisches Rechnen in Python: sympy [39]Bietet:

Grundlegende RechnenoperationenTermmanipulation (Zusammenfassen und Ausmultiplizieren)Symbolisches Di�erenzieren und IntegrierenGrenzwertberechnungMatritzen-Rechnung (symbolische Determinante, Inverse, ...)Lösen von Gleichungen und GleichungssystemenPretty-Printing und LATEX-Ausgabe2D und 3D Visualisierung...

Komplett in Python geschrieben→ mögliches Anschauungsobjekt→ relativ einfach anpassbar

Ein Grund, diesen Vortrag zu halten (ich hätte es selbst gerne schoneher gekannt)

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 21 / 53

Page 18: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

weitere Pakete

Schnittstelle zur GNU Scienti�c Library: pyGSL, [21]

Swiginac, Paket für symbolische Berechnungen [38]

Schnittstelle zu Matlab: pyMat [25]

Schnittstelle zu R (freie Statistik-Programmiersprache): rpy [33]

Python Aufsatz auf viele Mathe-Tools (Maple, Maxima, Octave,...):SAGE [34]

Klimamodellierung: CliMT [5]

Paket für Molekularbiologie: biopython [4]

Geographie-Paket (Geospatial Data Abstraction Layer): GDAL [9]

∃ noch viel mehr Pakete, mit teilweise sehr speziellen Zielgruppen

Anlaufpunkte für Recherche: PyPI [27] und Web-Site zu diesemVortrag [42]

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 22 / 53

Page 19: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

matplotlib

matplotlib [14]: Paket zur 2D-VisualisierungOrientiert sich stark an Matlabs Plot-FunktionenInteraktive Anzeige, mit innovativer stufenloser Skalierungs-FunktionLATEX-Beschriftung an Achsen und in LegendeAusgabeformate: <GUI>, PNG, JPEG, PDF, SVG, PS, EPSBeispiel:

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 24 / 53

Page 20: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

pyx

pyx [30]: weiteres Visualisierungspaket (2D, 3D)Eigenes Zeichenmodell mit Zugri� auf alle PostScript-Fähigkeiten→ sehr weitreichende Funktionalität (stark objektorientiert)LATEX-Beschriftungen überallAusgabeformate: PDF und EPS → nicht interaktivBeispiel:

t0

t1

t2t3

t4

(x(t),

y(t))

t0

t1

t2t3

t4

t∗

−2

−1

0

1

2

y

−2 −1 0 1 2x

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 25 / 53

Page 21: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

mayavi

Umfangreiche 3D-Visualisierung: mayavi [15]Basierend auf �Visualisation Toolkit� (C++-Visualisierungs-Bibliothekmit Python-Schnittstelle)Kann als eigenes Visualisierungsprogramm (wie gnuplot) gestartetwerden...... oder aus python-Skript heraus:import mayavi

...

Beispiel:

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 26 / 53

Page 22: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

pygame

Eigentlich Paket für Spieleentwicklung: pygame [22]

Elementare Gra�kausgabe vía SDL

Gut geeignet für Simulationen mit Echtzeit-Visualisierung

Kommunikation mit Benutzer einfach zu implementieren

Interessantes Konzept der Online-Dokumentation:Kommentarmöglichkeit zu jeder einzelnen Methode, Link zurCode-Suche

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 27 / 53

Page 23: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Weitere Visualisierungstools

PyNGL [29]: 2D Visualisierung

VPython [41] Echtzeit 3D Visualisierung von Objekten

Gnuplot.py [10]: Schnittstelle zu dem bekannten und bewährtenPlotting-Tool Gnuplot

scipy.gplt: Gnuplot Schnittstelle von scipy veraltet

pygraphviz [20]: Visualisierung von Graphen (im Sinne derGraphentheorie)

Mehr im Python-Package-Index [28]

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 28 / 53

Page 24: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Korananalyse

Python als Werkzeug für Geisteswissenschaften? Für islamischeTheologie??

In einem Beitrag [11] auf dem Python-Forum ging es wirklich darum!

bestimmte Text-Repräsentationsform in eine andere überführen

Häu�gkeiten von Wörtern und Wortformen bestimmen

Fernziel: semantische Vernetzung des Textes

einfacher Zugri� auf Strings, Listen und Dictionaries→ Python u. a. deshalb gut geeignet für Sprachverarbeitung

∃ Werkzeugsammlung und Buchverö�entlichung [3] zu diesem Thema(�Natural Language Processing�)

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 30 / 53

Page 25: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

automatisierte Modellbildung

Modellbildung von physikalischen Systemen überLagrange-Formalismus:

d

dt(∂L

∂q̇i

)− ∂L

∂qi

= δi

L ist (ggf. umfangreicher) algebraischer Ausdruck in qi und q̇i

→ Berechung der partiellen Ableitungen �per Hand� aufwendig undfehleranfällig.

sympy kann das schneller und sicherer

Skript: Ausdruck für L u. Randinformationen einlesen und vorverdauen

Symbolische Berechnung ausführen lassen

Ergebnis bei der Gelegenheit auch gleich noch linearisieren

mehr dazu: Workshop

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 31 / 53

Page 26: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Dateisystem durchforsten

Nahezu trivialer Zugri� auf SystemkommandosBsp: os.system('cp datei.txt datei_sicher.txt')

Einfaches Durchwandern des Verzeichnisbaums mit os.walk

Anwendung:Verschiedene Simulationsmodelle in jeweils einem VerzeichnisAlle Modellverzeichnisse haben gemeinsames WurzelverzeichnisIn jedem Modellverzeichnis eine Beschreibungsdatei für das konkreteModellSkript geht durch alle Modellverzeichnisse, sammelt Beschreibungenund fügt sie zu einer groÿen Datei zusammen

Weitere Anwendungen davon: gezieltes Umbenennen von vielenDateien, spezielle Suchmethoden, ...

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 32 / 53

Page 27: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

mögliche Lernmethode

Wie am besten (schnellsten) mit unbekanntem Paket zu Ergebnis kommen?

Zielstellung einigermaÿen präzisieren

Beispiele (Screenshots) nach möglichst ähnlicher Lösung durchsuchen

Konsistenz der API unterstellen und interaktiv �herumprobieren�(IPython)

Dabei leiten lassen von: Objektnamen [TAB], Docstrings [?],Quellcode [??]

Ggf. Referenz oder API-Doku durchsuchen

Bei tieferem Interesse: Tutorials durcharbeiten, dann Referenz undQuellen

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 34 / 53

Page 28: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Fehler vermeiden...

Fallen kennenGanzzahldivision1: 3/2 → 1!Einrückungen (sehr gefährlich: TABs und Leerzeichen gemischt)Erstes Argument von Objektmethoden (immer Objekt selbst: self)Nicht-ASCII Zeichen in Kommentaren oder StringsWeitere: [42]

Fallen umschi�enEntweder Gleitkommadivision nutzen (3.0/2)oder from __future__ import division

Nur Leerzeichen verwenden, 4 pro Stufe, LZ von IDE anzeigen lassenMerken! Oder IDE verwenden, die self automatisch einfügtKodierung vereinbaren: Am Dateianfang: # -- coding: utf8 --

pylint [24] oder ähliches benutzen; Werkzeug zur Überprüfung vonCode.

1Änderung ab Version 2.6Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 35 / 53

Page 29: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

... oder wenigstens schnell finden

Sicherheitsabfragen (Typ von Objekten, Länge von Listen)→ helfen Fehler in der Nähe ihres Ursprungs zu �nden

Logging [43] nutzen ist besser und �exibler als ständiges Aus- und�Einkommentieren� von print-Anweisungen

Unittest (Automatisierte Überprüfung bestimmter Merkmale)siehe z.Bsp. pylib [23], oder doctest [6]

Ausnahmen-Behandlung aktiv nutzen: raise, try, except

Eingebettetes IPython immer importieren ...(→ sorgt für farbige und aussagekräftige tracebacks)... und an zweifelhaften Stellen Shell aufrufen (siehe Workshop)

integrierten Debugger kennenlernen(trotz erstmal umständlicher Text-Bedienung)

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 36 / 53

Page 30: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Probleme

Schreibfehler fallen oft erst zur Laufzeit aufGrund: Kein Kompiliervorgang, keine statische Typbindung, keineexplizite Deklaration (es sei denn, man nutzt traits [40])Mehrfachimplementierungen (inkompatibel)z.Bsp. sympy.sin und scipy.sin

Manchmal auftretende Inkonsistenzen in Bezeichnungen und VerhaltenBsp:

einString.upper() gibt eine Kopie des Strings in GroÿbuchstabenzurückeineListe.reverse() gibt nichts zurück, sondern dreht dieReihenfolge der Elemente von eineListe um

Ausführungsgeschwindigkeit bei rechenintensiven reinenPython-Implementierungen verbesserungsfähig

Python 3000 geht einige dieser Probleme anUnd auÿerdem: Freie Software lebt von Partizipation!→ Eigeninitiative

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 37 / 53

Page 31: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Versionskontrolle mit Mercurial

Warum Versionskontrolle (�Revision Control�)?Archivierung und WiederherstellungProtokollierung (wer, wann, was, (warum))Koordinierung von mehreren Bearbeitern

Anwendbar auf alle Typen von Dateien (auch binäre Formate)Besonders geeignet: Programmcode, LATEX-Code, sonstige Textformate

Warum Mercurial [16] benutzen?Verteiltes Versionskontrollsystem ( 6= SVN, CVS)→ Auch gut für lokale (1-Benutzer-) Anwendung geeignetFrei, quello�en, in Python (und C) implementiert, plattformunabhängig

Persönlich bisher nur Mercurial ausprobiert ;)→ Positive Erfahrungen

Anwendung im Workshop

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 38 / 53

Page 32: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

hg und kompare

Mein Lieblings-Merkmal: Ausgabe von hg diff zu graphischemDi�-Programm umlenken, z. Bsp: hg diff | kompare -

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 39 / 53

Page 33: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

sonstige Tipps

Immer (mindestens) eine IPython-Shell o�en haben für schnellesProbieren

Die �richtige� Entwicklungsumgebung (IDE) �nden: Eric, eclipse,Emacs, ...Das Rad nicht (immer) neu er�nden

Frage I: Ist mein Problem so exotisch, dass es noch nicht gelöst wurde?Frage II: Was ist besser (Zeit, Lerne�ekt) Lösung suchen und anpassen,oder selber lösen?

Bei Gelegenheit mal die �o�ziellen� Konventionen für gutenPython-Quellcode (PEP 8) [19] lesen

An geeigneter Stelle: bewusste Emanzipation von Hinweisen,Konventionen, ... auch von meinen ;)

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 40 / 53

Page 34: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Zusammenfassung

1 Einführung

2 Merkmale und Eigenschaften von Python

3 Python interaktiv

4 Wichtige Pakete

5 Visualisierung

6 Anwendungsbeispiele

7 Tipps zum effizienten Arbeiten

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 41 / 53

Page 35: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Danke

Vielen [email protected]

http://code.google.com/p/wiapy/ (bisher kein Inhalt)

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 42 / 53

Page 36: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Referenzen I

[1] Güttler, ThomasPython, Programmieren macht Spaÿ.http://www.thomas-guettler.de/vortraege/python/

einfuehrung.html

[2]Bäcker, ArndWissenschaftliches Rechnen mit Python, Vortrag auf dem LiT 2004.http://www.physik.tu-dresden.de/~baecker/python/

linuxtag2004/linuxtag.html

[3]Natural Language Processing in PythonSteven Bird, Ewan Klein, and Edward Loperhttp://nltk.sourceforge.net/index.php/Book

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 43 / 53

Page 37: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Referenzen II

[4]biopython Websitehttp://www.biopython.org

[5]CliMT Websitehttp://maths.ucd.ie/~rca/climt/index.html

[6]doctest Dokumentations-Websitehttp://www.python.org/doc/2.5.2/lib/module-doctest.html

[7]Fangohr, HansA Comparison of C, MATLAB, and Python as Teaching Languages inEngineering, M. Bubak et al. (Eds.): ICCS 2004, LNCS 3039, pp.1210�1217, 2004.

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 44 / 53

Page 38: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Referenzen III

[8]Fangohr, HansExploiting Real-Time 3d Visualisation to Enthuse Students: A CaseStudy of Using Visual Python in Engineering, V.N. Alexandrov et al.(Eds.): ICCS 2006, Part II, LNCS 3992, pp. 139�146, 2006.

[9]GDAL Website.http://trac.osgeo.org/gdal/wiki/GdalOgrInPython

[10]Gnuplot.py Website.http://gnuplot-py.sourceforge.net/

[11]Der Koran als Topic Map Beitrag im deutschen Python-Forum.http://www.python-forum.de/topic-13946.html

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 45 / 53

Page 39: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Referenzen IV

[12]Langtangen, Hans PetterPython Scripting for Computational Science, Texts in ComputationalScience and Engineering, Third Edition Springer Heidelberg 2008

[13]Langtangen, Hans PetterWebsite zum Buch [12],http://vefur.simula.no/~hpl/scripting/

[14]matplotlib Website.http://matplotlib.sourceforge.net/

[15]mayavi Website.http://mayavi.sourceforge.net/

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 46 / 53

Page 40: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Referenzen V

[16]mercurial Website.http://www.selenic.com/mercurial/wiki/

[17]numpy for Matlab Users.http://www.scipy.org/NumPy_for_Matlab_Users

[18]numpy Website.http://numpy.scipy.org/

[19]PEP 8: Style Guide for Python Code.http://www.python.org/dev/peps/pep-0008/

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 47 / 53

Page 41: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Referenzen VI

[20]pygraphviz Website.https://networkx.lanl.gov/pygraphviz/

[21]pyGSL Website.http://pygsl.sourceforge.net/

[22]pygame Website.http://www.pygame.org/

[23]pylib Website.http://codespeak.net/py/dist/

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 48 / 53

Page 42: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Referenzen VII

[24]pylint Website.http://www.logilab.org/857

[25]pyMat Website.http:

//claymore.engineer.gvsu.edu/~steriana/Python/pymat.html

[26]pyparallel Website.http://pyserial.wiki.sourceforge.net/pyParallel

[27]Python Package Index Kategorie : Scienti�c/Engineering.http://pypi.python.org/pypi?:action=browse&show=all&c=385

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 49 / 53

Page 43: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Referenzen VIII

[28]Python Package Index Kategorie :Scienti�c/Engineering:Visualisierung.http://pypi.python.org/pypi?:action=browse&show=all&c=399

[29]PyNGL Website.http://www.pyngl.ucar.edu/index.shtml

[30]pyx Website.http://pyx.sourceforge.net/

[31]pyxGraph Website.http:

//www.physik.tu-dresden.de/~baecker/python/pyxgraph.html

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 50 / 53

Page 44: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Referenzen IX

[32]pyxPlot Website.http://www.pyxplot.org.uk/

[33]rpy Website.http://rpy.sourceforge.net/index.html

[34]Sage Website.http://www.sagemath.org

[35]Scienti�cPython Website.http:

//dirac.cnrs-orleans.fr/plone/software/scientificpython/

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 51 / 53

Page 45: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Referenzen X

[36]scipy Website.http://www.scipy.org/

[37]simplyDraw Website.http:

//arminstraub.com/browse.php?page=programs_simplydraw

[38]swiginac Website.http://swiginac.berlios.de/

[39]sympy Website.http://code.google.com/p/sympy/

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 52 / 53

Page 46: echnischeT Universität Dresdenknoll/python/material/2008...Wissenschaftliches Arbeiten mit Python Carsten Knoll echnischeT Universität Dresden 08. November 2008 Carsten Knoll (TUD)

Referenzen XI

[40]Traits Website (Expilzite Variablen-Deklaration für Python).http://code.enthought.com/projects/traits/

[41]Vpython Website.http://www.vpython.org/

[42]wiapy Website.http://code.google.com/p/wiapy/

[43]The python logging module is much better than print statements, Blogvon Matt Wilsonhttp://blog.tplus1.com/index.php/2007/09/28/

the-python-logging-module-is-much-better-than-print-statements/

Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 53 / 53