Grundlagen und Links¶
Den „nackten“ Interpreter für die Programmiersprache Python können Sie auf der Python-Webseite herunterladen.
Ein einfacher Python-Interpreter ist jedoch nur für den Anfang ausreichend. Nicht enthalten sind hier nämlich die Zusatzpakete für die wissenschaftlichen Anwendungen, diese müssten später noch nachinstalliert werden. Die Verwendung einer der nachfolgend genannten vorkonfigurierten Distributionen bietet sich daher an.
Die freie Python-Distribution „Anaconda“ wird von der Firma Anaconda Inc. (ehem. Continuum Analytics) kostenlos bereitgestellt (für Windows, Linux, Mac). Die Anaconda-Distribution ist die Basis für den Kurs. Sie enthält:
natürlich den Python-Interpreter selbst
viele weitere Programmpakete für wissenschaftliche Anwendungen (u.a. NumPy/SciPy, Matplotlib, IPython)
eine Entwicklungsumgebung namens Spyder, also eine Art spezialisierter Editor mit vielen Komfort-Funktionen für das Schreiben von Programmen
ein Paketmanagementsystem namens conda, das es sehr einfacht macht, die installierten Pakete aktuell zu halten oder fehlende Pakete nachträglich zu installieren
Python(x,y) ist eine freie Python-Distribution (nur für Windows), die zusätzlich zur Grundausstattung auch viele wichtige Pakete speziell für wissenschaftliche Fragestellungen mitbringt (NumPy, SciPy, Matplotlib). Auch hier kommt Spyder als IDE zum Einsatz.
Bücher und Dokumentationen zu Python¶
Ein gutes, kostenloses Einsteiger-Lehrbuch ist Think Python. Dieses Buch ist die Grundlage für den ersten Kursteil
Ein sehr gutes und online auch kostenlos verfügbares Buch mit vielen direkt als Skript nachvollziehbaren Beispielen ist das Python Data Science Handbook.
Und noch eins mit ähnlicher Zielsetzung in Form einer „Rezeptsammlung“: IPython Cookbook
From Python to NumPy behandelt die Besonderheiten bei der Anwendung von NumPy auf numerische Probleme, um diese Bibliothek bestmöglich auszunutzen und Programme maximal effizient zu machen.
Von Herrn Rougier gibt es ein weiteres Buch über die Möglichkeiten von Matplotlib (die Standardbibliothek zur grafischen Darstellung von Diagrammen): Scientific Visualization: Python + Matplotlib
Ein gutes Buch, das nicht nur Python selbst, sondern viele nützliche Themen rund um Scientific Computing behandelt, ist Effective Computation in Physics von A. Scopatz und K. D. Huff.
Elegant SciPy richtig sich an den fortgeschrittenen Anwenden von SciPy und zeigt an Beispielen besonders schöne Problemlösungen.
The SciPy Cookbook ist eine Sammlung von Rezepten für häufig auftretende Fragestellung mit SciPy.
Problem Solving with Algorithms and Data Structures using Python
ein weiteres Lehrbuch: Dive into Python (auch als stark überarbeitete Version für Python 3: Dive into Python 3)
und noch eins: A Byte of Python
(eine Übersicht der Unterschiede zwischen Python 2 und Python 3.)
weitere Bücher:
Steven Haddock, Casey Dunn: Practical Computing for Biologists
Wesley Chun: Core Python Programming
Mark Lutz: Learning Python
Alex Martelli, Anna Martelli Ravenscroft, David Ascher (Hrsg.): The Python Cookbook
David Beazley: Python Essential Reference
Hans Petter Langtangen: A Primer on Scientific Programming with Python
Wes McKinney: Python for Data Analysis
Sandro Tosi: Matplotlib for Python Developers
(Mark Summerfield: Programming in Python 3)
offizielle Dokumentation von Python, die auch ein gutes Tutorial enthält
der Python Style Guide beschreibt die bevorzugte Formatierung von Python-Code (z.B. Einrückungen, Leerzeilen und -zeichen, Kommentare, Groß/Kleinschreibung von Bezeichners und viele andere Kleinigkeiten), die zugehörigen Docstring Conventions regeln die einheitliche Formatierung der Docstrings
ein Überblick über die Standardbibliothek, d.h. alle mit Python mitgelieferten Standardfunktionen.
Die Webseite Python Module of the Week stellt die Bestandteile der Standardbibliothek an vielen Beispielen vor. Auch eine PDF-Version des gesamten Materials kann heruntergeladen werden.
das Dokumentationssystem für Python-Projekte Sphinx kann aus denselben Quellen z.B. HTML-Files und LaTeX-Dokumente erzeugen und eignet sich auch gut für die Erstellung kleiner statischer Webseiten (z.B. dieser)
Python für wissenschaftliche Anwendungen¶
Die folgenden drei Pakete sind in der frei verfügbaren Python-Distribution Anaconda bereits vorkonfiguriert enthalten:
grundlegendes Paket für numerische Anwendungen: NumPy/SciPy (dazu sehr ausführliches Tutorial-Material)
eine Übungssammlung zur Anwendung von NumPy
das Standardpaket für das Plotten von Daten: Matplotlib (Tutorialvideo und dazugehöriges Arbeitsmaterial)
eine Online-Galerie von Plots, die mit verschiedenen Python-Tools erzeugt wurden. Der Quelltext für jeden Plot kann kopiert und den eigenen Zwecken angepasst werden.
eine interaktive Python-Kommandozeile, die ein Arbeiten ähnlich wie in MatLab erlaubt: IPython (Tutorialvideos)
Darüber hinaus gibt es viele weitere Pakete und ganze Anwendungen, beispielsweise:
ein Paket für die Verarbeitung von biologischen Daten (Nukleinsäure- und Proteinsequenzen, Alignments, Datenbankabfragen, Analyse von PDB-Strukturdateien): Biopython
ein Paket für symbolische Mathematik: SymPy
ein sehr umfangreiches freies Mathematik-Paket mit Funktionalitäten wie Mathematica und Maple, das auch ohne Installation online verwendet werden kann: SAGE
ein Paket für die interaktive 3D-Visualisierung von Daten: MayaVi
eine Webseite, die für Windows vorkompilierte Versionen von Python-Erweiterungspaketen bereit hält (z.B. von solchen Modulen, die in anderen Sprachen als Python selbst geschrieben sind)
Geeignete Editoren für die Bearbeitung von Python-Skripten¶
In der Anaconda-Distribution bereits enthalten ist SPYDER. Spyder ist eine integrierte Python-Entwicklungsumgebung für Windows, Linux und MacOS X, die sich durch MATLAB-ähnliche Features auszeichnet.
IDLE ist eine sehr schlichte Entwicklungsumgebung, die dafür aber Bestandteil von Python selbst ist und zusammen mit dem Python-Interpreter ausgeliefert und daher überall verfügbar ist.
Eine mächtige und kostenlose Entwicklungsumgebung ist Visual Studio Code (VSCode) . Diese ist weitgehend mit Plugins konfigurierbar und sehr gut auch für große Python-Projekte geeignet.
Eine professionelle, sehr mächtige und spezifisch auf Python zugeschnittene Entwicklungsumgebung ist PyCharm . Davon gibt es auch eine freie Version, die von den Funktionen ein bisschen eingeschränkt ist.
Notepad++ (für Windows)
Geany (mehr als ein Editor, eigentlich schon eine kleine Entwicklungsumgebung für Windows und Linux)
Andere interessante Links¶
Die Seite Software Carpentry vermittelt speziell für Wissenschaftler die Grundlagen der Software-Entwicklung. Dabei geht es um mehr als nur die reine Programmierung, z.B. um das Versionsmanagement, Programm-Dokumentation, automatisierte Tests, Datenbanken, Regular Expressions und vieles mehr.
Project Euler ist ein Programmierwettbewerb, bei dem Aufgaben (hauptsächlich aus der numerischen Mathematik) mit cleveren Algorithmen gelöst werden müssen.
Rosalind ist eine Art Project Euler, aber mit bioinformatischen Aufgabenstellungen
Es gibt einige auf Python spezialisierte Podcasts (auf Englisch). Die Moderatoren unterhalten sich mit Leuten aus der Python-Community, z. B. den Entwicklern von viel verwendeten Software-Paketen, Buchautoren oder Wissenschaftlern. Das sind meist sehr interessante Gespräche mit klugen Leuten, und Englisch übt es auch noch:
The Real Python Podcast, RSS Feed Für den Einstieg vermutlich am besten geeignet. Die Webseite Realpython enthält auch viele Lektionen zu Python-Themen auf allen Niveaustufen.
Aufgaben bis zum nächsten Mal¶
Installieren Sie die Anaconda-Python-Distribution. Wir benutzen den darin enthaltenen Code-Editor „Spyder“. Den können Sie entweder direkt im Startmenü aufrufen (empfohlen) oder über den Anaconda-Navigator.
Lesen Sie Kapitel 1 im Buch
Im Buch wird beschrieben, dass man den Python-Interpreter auf verschiedene Weise benutzen kann:
um Programme laufen zu lassen: in Spyder entspricht das der Eingabe des Programms im linken Fenster. Das ist ein ganz „normaler“ Texteditor, das Programm können Sie als Datei mit der Endung .py abspeichern. Diese Datei verarbeitet der Python-Interpreter dann, wenn man oben auf den Knopf mit dem Dreieck/Play-Symbol („Run File“) drückt. Ausgaben, die das Programm erzeugt, erscheinen auf der rechten Seite unter dem Reiter „Console“.
im interaktiven Modus: Sie geben eine Zeile Code direkt in den Python-Interpreter ein (in Spyder im „Console“-Fenster), und dieser verarbeitet die Eingabe sofort, wenn sie die Zeile mit „Enter“ abschließen.
Bearbeiten Sie Exercises 1.1, 1.2 aus dem Kapitel
Was wird angezeigt, wenn Sie das folgende „Programm“ laufen lassen (oder die Zeilen einzeln auf der interaktiven Python-Kommandozeile eingeben)? Warum?:
print(6 ** 8) print(10 / 7) print(10 // 7) print(10 / 7.0) print(10 // 7.0 ) print(10 % 7)