echnischet universität dresdenknoll/python/material/2008...wissenschaftliches arbeiten mit python...
TRANSCRIPT
Wissenschaftliches Arbeiten mit Python
Carsten Knoll
Technische Universität Dresden
08. November 2008
Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 1 / 53
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
... 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
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
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
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
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
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
Danke
Vielen [email protected]
http://code.google.com/p/wiapy/ (bisher kein Inhalt)
Carsten Knoll (TUD) Python + Wissenschaft 08. November 2008 42 / 53
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
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
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
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
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
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
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
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
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
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
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