ZMBP

Wissenschaftlich Arbeiten mit Computer und Internet

Uni Tuebingen

Kursübersicht

English

Bioinformatik


Python

Tag 1
1. Einführung
2. Strings
3. Dateien

Tag 2
4. Listen,Schleifen
5. Funktionen

Tag 3
6. Verzweigung
7. Reg.Exp.

Tag 4
8. Dictionaries
9. System/Input

Tag 5 (Expert)
OOP
Webinterface
GUI
NumPy
Pandas
Data Visualisation

Index


Impressum

Bioinformatik

Python für Biologen - In 4 Tagen

English Version

Nach einer Idee und mit Beispielen von Dr. Martin Jones -
pythonforbiologists.com

Einstiegsbeispiel,
python philipp09.py
zum Beispiel Zeile 1 und Spalte 12
Die Daten wurden von einem Plattenleser (Bild Bild) generiert.


Nächste Kurse

Deutsch:

19.9. - 23.9.2022
9:00 - 16:00
Raum 152 (früher 168), Morgenstelle 3

20.2. - 24.2.2023
9:00 - 16:00
Raum 152 (früher 168), Morgenstelle 3


Englisch:
-.-.-

Online 9:00 - 16:00

max. 12 Teilnehmer
Alma Uni-Tuebingen
3 CP, aber keine Benotung!



Die gesamte Vorlesungsreihe steht auch als jupyter Notebook zur Verfügung.

jupyter Notebook.zip



Tag 1 - Einführung

Müssen Biologen programmieren lernen?

  • Nein!

Programmieren gehört nicht zur Grundausbildung der Biologen.
Aber in manchen Bereichen ist Programmieren sehr hilfreich und sogar unabdingbar.

  • Das Verständnis für Bioinformatik steigt.

Zu der wissenschaftlichen Arbeit in der Biologie gehört die Ermittlung und Auswertung von Daten.
Spezialisierte Programme helfen dabei (Übersicht Programme Molekularbiologie).
Oft wird ein "Bioinformatiker" um Rat gefragt. Wenn die Grundlagen für Programmieren erlernt wurden, steigt das Verständnis, um die Probleme zu diskutieren.
Die Kommunikation mit den Informatikern verbessert sich.
Viele Programme sind ähnlich strukturiert,
kennt man sich in einer Programmiersprache aus, kann leicht eine andere erlernt werden.

  • Kleine Programme können selbst geschrieben werden.

Mit kostenlosen Programmen, wie Python, R und Perl, können einfache Lösungen zu schwierigen Problemen gefunden werden.
Siehe Einstiegsbeispiel oben. Hier wird mit Python eine komplexe Tabelle zur Auswertung umgeschrieben.

  • Programmieren ist ein kreativer Prozess und macht Spass.

Statt Software am Computer zu konsumieren, kann nach eigenen Bedürfnissen ein Programm angelegt werden.
Das ist ein kreativer Prozess. Die Arbeit macht Spaß.




Einsteigerprogrammiersprachen für Biologen

Es gibt eine Vielzahl von Programmiersprachen
Liste der Programmiersprachen

Welche Programmiersprachen kommen für Biologen in Frage?

  • Excel Funktionen Kurs Excel
    Excels Erfolg und Beliebtheit besteht darin, dass man keine Programmiersprache braucht.
    Das leisten vor allem Excel Funktionen.
    Darüber hinaus können komplexere Probleme mit Excel Makros und der Programmiersprache VBA Kurs Excel bewältigt werden.

  • R für Statistik, Datenanalyse, Microarrays, Bildauswertung Mikroskopie - Imaging

  • Skriptsprachen Python und Perl
    Dieser Kurs und Kurse ZDV Dr. Eberle Zentrum
    Es gibt noch weitere wichtige Skripsprachen wie JavaScript, PHP, Ruby, die aber in der Biologie nicht verbreitet sind.
  • PHP, JavaScript werden in der Webprogrammierung eingesetzt. Also Programmierung von Internetseiten.
    Kurse ZDV

  • MatLab
    Webseite
    Datenauswertung, Plots
    Kostenlos für Tübinger Studenten (Campus Uni Tübingen Software)
    Kurse WS 21 siehe ALMA 1 2

  • Java, Einsatz auf verschiedenen Plattformen (Windows, MacOSX, Linux) möglich.
    Entwicklung von einer Firma (Oracle) abhängig.
    Kurse ZDV

  • Die anderen höheren Programmiersprachen wie C++ C# usw. werden von Biologen selten gelernt und eingesetzt.
    Kurse ZDV



Warum Python und nicht Perl und nicht R?

Die Aminosäuresequenzen der Proteine und die Basensequenzen der DNA sind ausgezeichnete Daten, um Abläufe zu programmieren.

Die Skriptsprache Perl wird und wurde dafür häufig eingesetzt
(Humangenomprojekt Lincoln D. Stein: How Perl Saved the Human Genome Project).
Perl war sehr erfolgreich und weit verbreitet. Warum jetzt eine andere Programmiersprache wie Python, die ähnlich ist?

Perl hat eigentlich eine klare Struktur, lässt aber zu, dass unverständlicher Code produziert wird.
Perl wird daher mangelnde Lesbarkeit vorgeworfen (Wikipedia).

Perl lässt viele Freiheiten zu und ist daher weniger konsistent.
Viel hassen dafür Perl (zum Beispiel Perl Most Disliked Programming Language 2017), andere liebe sie wegen den Freiheiten (Perl poetry).



Python dagegen bevorzugt eindeutige Lösungen.
"There should be one-- and preferably only one --obvious way to do it."

Python bietet eine bessere Lesbarkeit, daher hat sich vor allem für Anfänger Python etabliert (Wikipedia).
"Python ist die verbreitetste Einsteiger-Programmiersprache an US-Top-Universitäten", Heise Online 8.7.14
Python ist inzwischen an 1. Stelle im Programmiersprachen Ranking 2021 - https://www.tiobe.com/tiobe-index/ Heise online 13.10.21
Python ist die "most wanted" Programmiersprache - Heise online 9.4.19
Python wird "geliebt".

Eine ernste Konkurrenz zu Python ist R.
R ist wie Python eine Skriptsprache und leicht zu lernen.
In der Meinung vieler, ist aber Python umfassender anzuwenden.
R hat den Schwerpunkt in der Statistik und Datenauswertung.
Hier stehen für Python die leistungsfähige Pakete NumPy und pandas zur Verfügung.

Python, Einrückungen machen Python übersichtlich
Python weist eine klare Struktur auf,
Einrückungen machen Python übersichtlich -
Foto Python Software Foundation - Fibonacci Reihe
GNU General Public License. Wikimedia Commons





Kennzeichen von Python

  • Einfach und übersichtlich

Python ist einfach und übersichtlich durch die Verwendung von wenigen Schlüsselwörtern.
Python besticht mit einer übersichtlicher Syntax.
Lesbarkeit steht in den Bemühungen für einen guten Code an erster Stelle.
Es gibt die Erkenntnis, das ein Code nur einmal geschrieben, aber sehr oft gelesen wird.

Wie wird die Übersichtlichkeit erreicht?

- Übersichtlichkeit durch Einrückungen (Indentation)

- Ein Grundsatz von Python ist, dass es nur einen offensichtlichen Weg geben sollten, um ein Problem zu lösen.
Die Entwickler von Python achten darauf, dass es nur wenige Elemente für den Code gibt.
(PEP20 Zen of Python "There should be one-- and preferably only one --obvious way to do it."
"import this" gibt "Zen of Python" in der Eingabeaufforderung von Python aus - Geschichte ).

In der Python Eingabeaufforderung "import this"  eingeben:
In der Python Eingabeaufforderung "import this" eingeben:
Zen of Python wird ausgegeben.


In dem Beitrag von Al Sweigart 2018 wird Zen of Python erklärt und kommentiert.

- Python wird als Skriptsprache eingesetzt.
Die Textdatei wird als Code direkt zur Ausführung gebracht (Intepreter).

- Variablen müssen nicht deklariert werden.

- Viele Schreibweisen sind zwingend vorgeschrieben, die zu einer Übersichtlichkeit beitragen.
Darüber hinaus gibt es stilistische Konventionen, Programmierer sollen sich daran halten, damit der Code leicht zu lesen und verständlich bleibt.
Diese sind in der Python Enhancement Proposal 8 - PEP8 Style Guide for Python Code aufgelistet.
Alle PEPs sind in www.python.org/dev/peps/ zudammengefasst.
Das Programm pycodestyle, überprüft den Code im Hinblick auf PEP8.
Mit autopep8 können die Änderungen sogar automatisch durchgeführt werden.
autopep8 --in-place <pythondatei>


  • Arbeitet mit Funktionen

Immer wiederkehrende Codeabschnitte werden in Funktionen festgehalten.
Dadurch werden Arbeitsabläufe einfacher.

  • Objektorientierte Programmierung

Python ist wie die "höheren" Programmiersprachen (C, C++) eine komplexe Programmiersprache.
In diesem Kurs wird objektorientierte Programmierung an einem zusätzlichen Termin behandelt.

  • Offenes, gemeinschaftsbasiertes Entwicklungsmodell (Python Software Foundation)

Auf der ganzen Erde arbeiten Entwickler kostenlos an der Fortführung von Python.
Diese Arbeit ist gut organisiert. Zuständig ist die gemeinnützige (non-profit corporation) Python Software Foundation.
Dadurch bleibt Python immer auf dem neuesten Stand.
Sicherheitslücken und Fehler werden schnell beseitigt.

  • Große Standardbibliothek, plattformunabhängig

Die erstellten Programme laufen in Linux, MacOS und Windows gleichermaßen.

  • Einbinden weiterer Module möglich.

Für Python gibt es spezielle Erweiterungen (packages). Diese werden zu sogenannten Modulen zusammengefasst.
Nur benötigte Module werden in das Programm eingebunden. Es gibt über 250 Standardmodule (Link)
Über Anaconda können über 7.500 Module für Python installiert werden.

  • Entwicklungsumgebungen vorhanden

Entwicklungsumgebungen (IDE) für Python erleichtern das Programmieren.
Schreiben des Codes wird erleichtert. Beim Eingeben des Codes werden Vorschläge gemacht. Hilfe zu Funktionen und Modulen.
Der Code kann überprüft werden.

  • Für Python gibt es auf der ganzen Welt biologische Anwendungen, Dokumentationen und Tutorials

Spezielle Module und Bibliotheken, die in der Biologie eingesetzt werden, werden zusammengefasst.
Die bekanntesten Pakete für Biologen sind Biopython , PyCogen und PythonXY (nur Python 2, 2015 leider eingeschlafen).

Immer mehr Programme können mit Python programmiert werden.
Beispiele aus dem Grafikbereich sind Plugins für GIMP und ImageJ.
Die freie 3D-Grafiksoftware Blender (Wikipedia) kann mit Python programmiert werden.
In LibreOffice und OpenOffice können Makros mit Python programmiert werden.
Das macht LibreOffice allerdings auch unsicher: Heise online 5.2.19 "Sicherheitsupdates: Gefährliche Makros für LibreOffice"

Python wird von Internetfirmen wie Google und YouTube eingesetzt (Quotes)

Es ist leicht im Internet entsprechende Dokumentationen und Tutorials zu finden.


  • Geschichte

Entwickelt wurde Python Anfang der 1990er Jahre von Guido van Rossum
(Wikipedia), Centrum Wiskunde & Informatica in Amsterdam.

Der Name geht auf die englische Komikergruppe Monty Python zurück.
Hat also eigentlich mit einer Schlange nichts zu tun - oder doch ? " John Cleese suggesting 'Python' as something slimy and slithery".

Monty Python
Monty Python - Silly Walk -
Wegmann, Street art silly walk, Verändert von Steinmetz, CC BY-SA 3.0






Wie wird Python ausgeführt?

Bei den meisten Linux Distributionen (Debian, OpenSuse, Ubuntu,...) ist Python bereits installiert.
Auch auf Apple Mac Rechnern war Python bis MacOS 12.3 (2/2022) vorinstalliert.
Allerdings ist diese Installation auf Apple und Linux Rechnern nur die Standardversion von Python.
Auf den meisten Linux und Apple Rechnern werden stattdessen sehr oft Python Distributionen installiert (Anaconda)
Python muss auf Windows Rechnern installiert werden.

Download und Installation von Python

Python kann von folgender Seite heruntergeladen werden.
www.python.org/
Bis 2020 gab es 2 Versionen Python 2 und 3 (siehe unten).
Python 2 wird nicht mehr unterstützt, daher sollte Python 3 herunterladen werden (Python2 or Python3).

Im Kurs wird ein "Python Paket" Anaconda eingesetzt, das zusammen mit vielen auch für Biologen brauchbaren Modulen und Programmen installiert wird.
Die kostenlose Version von Anaconda (Download) ist auf den Kurscomputern installiert.
Das Anaconda Python-Paket ist zum Beispiel mit Modulen ausgestattet um Diagramme zu erstellen und aufwändige Datenanalysen zu erstellen (NumPy, pandas).
Außerdem wird die Entwicklungsumgebung Spyder installiert.

Mehrere verschiedene Python Pakete (Anaconda, Python(x,y) etc.) zu installieren ist keine gute Strategie.
Sie kämpfen dann um die Vorherschaft auf dem Rechner und am Ende geht kein Python mehr.
Möchte man trotzdem ein zusätzliches Python einsetzen, bietet sich auf Windowsrechnern das "portable" WinPython (WinPython) an.
WinPython bringt auch viele wichtige Module und die Entwicklungsumgebung Spyder mit
und braucht nicht installiert zu werden.
Es kann in einen beliebigen Ordner oder USB-Stick laufen, daher wird es "portable" bezeichnet.
Mehrere Version können so auf dem Rechner abgelegt werden.
WinPython kann, wenn man will, auch auf dem Rechner registriert werden, also normal installiert werden. Die Systemvariablen von Windows weisen dann auf das WinPython.

Das früher in der Biologie viel benutzte freie Python(x,y) (Download) besteht nur für Python 2.7 (s.u.). Das Projekt ist leider 2015 eingeschlafen.
Ich warte immer noch, dass es vielleicht von einem Prinzen wachgeküsst wird.

Ist Python installiert kann es sehr unterschiedlich ausgeführt werden. Es werden verschiedene Ansätze vorgestellt.

Python Konsole

Die einfachste Möglichkeit ist Python in einer Konsole, einem Terminal ("Eingabeaufforderung" unter Windows) auszuführen.

Dazu wird im Terminal (Linux oder MacOSX) oder in der Eingabeaufforderung (Windows) der Text python eingeben.

Eingabeaufforderung Beispiel in Windows

  • Windows-Taste + r
  • "cmd" eintippen
  • "python"

Python in der interaktiven Konsole ausführen - hier Windows 7
Python in der interaktiven Konsole ausführen - hier Windows 7

Es meldet sich Python mit der installierten Version*. Anschließend wird der Prompt >>> gezeigt.
Verlassen wird die Python Konsole wird mit exit().

Die Python Konsole ist nur für kleine Programme geeignet.

* Möglicherweise meldet Windows:
"Der Befehl 'python' ist entweder falsch geschrieben oder konnte nicht gefunden werden."
Bei der Installation wurde python dem Windows Systempfad (path) nicht bekannt gemacht.
Der Systempfad wird in der Systemsteuerung : System : Erweiterte Systemeinstellungen : Erweitert : Umgebungsvariablen : Systemvariabllen : path eingestellt.

Wenn der Systempfad nicht geändert werden soll, gehe auf der Konsole mit cd in den Python Ordner.
Zum Beispiel cd c:\Anaconda3\
oder cd C:\Program Files\Python
Und rufe dann python auf.

Bei Anaconda ist es besser statt die Windows Eingabeaufforderung den Anaconda Prompt zu verwenden:
Windows Start -> Anaconda3 (64bit) -> Anaconda Prompt
Der Anacona Prompt kennt alle Python Programme und Skripte und die Eingabe von Python funktioniert.


IPython

Dokumentation
IPython ist eine interaktive Konsole mit noch mehr Funktionen.
IPython muss zusätzlich installiert werden. Bei Anaconda ist IPython bereits enthalten.
IPython kann in der Konsole mit dem Befehl "ipython" aufgerufen werden.
In Windows C:\<Pythonordner>\Scripts\ipython

Zur Installation von IPython werden am besten die Pakete Anaconda oder WinPython eingesetzt.
Installation und für weitere Informationen:
ipython.org

In der Entwicklungsumgebung (IDE) Spyder und JupyterLab gibt es für IPhyton ein eigenes Fenster.

IPython in der Konsole ausgeführt
Abb: Python in der Konsole ausgeführt


Welche Vorteile hat IPython im Vegleich zur Konsole?

- Ausgabe: Die Ein- und Ausgabe ist lesbarer durch farbige Schrift, z.B. werden Dictionaries bei der Ausgabe sinnvoll umgebrochen.

- Mit Zellen arbeiten
Mit Strg + Eingabe kann in einer 'Zelle' gearbeitet werden. Der Code wird erst mit Umschalten + Eingabe an den Intepreter geschickt.
Dadurch kann strukturierter Code umgesetzt werden.
Unter Windows in der Eingabeaufforderung Strg + O verwenden.
iPython mit Zellen arbeiten

- Tab Completion: Mit der Taste Tab kann nach einer bekannten Variablen, Funktionen oder Methoden mit den entsprechenden Anfangsbuchstaben gesucht werden.
Ähnliches funktioniert auch mit Dateipfaden. Wenn irgendwas wie der Anfang eines Dateipfad eingegeben wird (enthält "/" bei Linux und Mac), wird eine Liste der passenden Dateinamen ausgegeben.
pPython Tab Completion

- Introspection: Fragezeichen nach einer Variablen oder Funktion gibt Informationen aus.
Es kann auch mit Wildcard * gearbeitet werden.

- %run: Ein Python-Code in einer Datei kann innerhalb von IPython mit %run ausgeführt werden.
Beispiel, mit "%run test.py" wird die Datei test.py ausgeführt.

Ein beliebiger Konsolenbefehl wird mit ein vorangestellten "!" ausgeführt.
Beispiel
!ping 134.2.200.1

- Strg + Shift + V: Code kann mit Strg + Shift + V eingefügt werden.
Siehe auch die magic functions %paste und %cpaste.

- Tastaturkürzel: Es sind viel spezielle Tastenkürzel wirksam.
Am einfachsten wird das mit "%quickref" und "h" für die Hilfe aufgelistet.

- magic commands: Mit vorangestelltem "%" und "%%" können spezielle IPython-Befehle, die magic commands ausgeführt werde. Hier eine Übersicht
Mehr Informationen über einen Befehl kann mit "?" am Ende des Befehls erhalten werden.
%quickref listet alle magic commands auf.

- Suche in der Command History: Mit Strg + P (oder Pfeil nach unten), Strg + N (oder Pfeil nach oben) und Strg + R (reverse Suche) kann in bereits eingegbener Code erneut ausgeführt werden oder darin gesucht werden.
%hist listet die History auf

- Session aufzeichnen: mit %logstart, logstop und %logoff sowie %logstate kann die Eingabe und die Ausgabe aufgezeichnet werden.


Das nächste Eingabeaufforderung stellt ein Bindeglied ("Missing link") IPython zu Jupyter dar.
GUI Console: Es gibt noch eine weitere Variante von IPython.
Dazu in der Windows Eingabeaufforderung jupyter qtconsole eingeben(früher: ipython qtconsole --pylab=inline)
Es wird eine eigene grafische Oberfläche aufgemacht.
Wenn Windows Eingabeaufforderung nicht geht, am besten Anaconda Prompt dafür verwenden.

QtConsole

Abb: QtConsole


Jupyter Notebook - JupyterLab



jupyter logo

Das alte IPython Notebook wurde als Jupyter Notebook weiterentwickelt und ist in dem aktuellen Anaconda Paket enthalten.
jupyter.org
Wikipedia
Übersicht.
Der Name Jupyter leitet sich von den 3 Programmiersprachen Julia, Python und R ab.
Inzwischen ist noch Haskell und Ruby hinzugekommen, die mit Jupyter behandelt werden können.
Das bedeutet, dass in dem Notebook außer mit Python auch mit Julia, Haskell, Ruby oder R gearbeitet werden kann.
Im Menü Kernel wird das umgestellt, natürlich müssen die entsprechenden Programme installiert werden.

JupyterLab ist das Nachfolgeprodukt und wird im Moment parallel zu Jupyter Notebook entwickelt.

Jupyter Notebook ist eine geniale Methode um mit IPython zu arbeiten.
Das Notebook führt die IPython Console noch weiter. Es wird in einem Browser gearbeitet.
Das bietet die Möglichkeit mit einer übersichtlichen Oberfläche, mit Menüs und Tastenkürzel zu arbeiten.
ipython.org/notebook.html

Menü Help : Keyboard Shortcuts oder Taste H (Standard Tastaturkürzel)
Mac Tastenkürzel


jupyter Notebook - Text und Code
Jupyter Notebook - Text und Code.


Nachdem Jupyter Notebook installiert wurde, wird das Programm in der Windows Konsole / Terminal mit
jupyter notebook
aufgerufen.
Wenn Windows einen Fehler meldet, dann sind die Umgebungsvariablen nicht gesetzt.
Dann in den Ordner wechseln in dem Python Jupyter installiert ist (zum Beispiel unter Windows mit cd C:\Anaconda3\Scripts).
Alternativ kann Anaconda Prompt verwendet werden. Dann klappt der Aufruf mit jupyter notebook

Jupyter kann unter Windows über Anaconda Programme gestartet werden.
Anaconda legt auch bei der Installation in Windows einen Link in Start - Programme - Anaconda ab.
Windows Start -> Anaconda3 (64bit) -> Jupyter Notebook

Nach dem Start von Jupyter öffnet sich im Standard-Browser (Edge, Firefox, Chrome,...) ein Fenster, in dem die Ordner und Dateien auf dem lokalen PC gezeigt werden.
Ausgangspunkt für Ordner ist der Profilordner des Benutzers.

Ein Arbeitsverzeichnis kann beim Aufruf eingestellt werden, indem vor dem Start des Jupyter Notebooks, mit cd in der Konsole der Ort eingestellt wird.
Das Verzeichnis kann auch beim Aufruf eingestellt werden (Beispiel Desktop für Windows).
jupyter notebook --notebook-dir=c:\Users\Benutzername\Desktop

Ein neues "Notebook" kann angelegt werden. Es ist in "Cells" gegliedert, die einzeln ausgeführt werden können (Umschalten + Enter)
Das "Notebook" wird mit der Dateiendung .ipynb gespeichert

Der Clou ist, dass die Sitzung in der .ipynb-Datei gespeichert wird und später wieder ausgeführt werden kann.
Jupyter Notebook ist sehr gut geeignet, um die Beispiele im Kurs nachzuvollziehen.
Es kann außer Code auch normaler Text als Erklärung, Überschriften etc. eingegeben werden.


JupyterLab

JupyterLab soll das Notebook ablösen und wird parallel zu Jupyter Notebook entwickelt.
Für beide Versionen können die gleichen Dateien verwendet werden.

Bei JupyterLab handelt es sich um eine effektivere Benutzeroberfläche.

In der Windows Eingabeaufforderung oder im Anaconda Prompt wird JupyterLab mit jupyter lab aufgerufen.

Zwischen Jupyter Lab und Jupyter Notebook kann leicht gewechselt werden, indemm die Adressleiste
http://localhost:8888/tree für Notebook in http://localhost:8888/lab geändert wird.

Im Browser (Firefox, Chrome,..) öffnet sich ein neuer Tab.

jupyter Lab - Text und Code
JupyterLab - Text und Code.




Jupyter Notebook online

Mit Google Colaboratory ("Colab") können Python Programme im Browser (Chrome, Firefox, ...) ausgeführt werden

Hier ein Link zu einer kleinen Einführung.
colab.research.google.com/notebooks/intro.ipynb

Vorteil ist es muss Python mit allen benötigten Programmpaketen nicht auf dem lokalen Computer installiert werden. Ist online, daher von allen Computern zugänglich.
Colab ist frei für Studenten und Wissenschaftler.



Microsoft Azure Notebooks von Microsoft bietet die Möglichkeit auf ihren Servern mit dem Jupyter Notebook zu arbeiten
notebooks.azure.com/
Vorteil ist auf einem Rechner muss Python gar nicht installiert sein. Es ist Python (2.7 und 3.x Anaconda 4.x) R und F# installiert.
Alles findet auf dem Server statt.
Nachteil ist, man muss sich mit einem Microsoft Konto anmelden. Nach 60 Tagen Inaktivität wird alles gelöscht.
Für Schulen und Forschung gedacht. Im Moment ist alles frei, evtl. müssen in Zukunft entsprechende Dienste bezahlt werden.
Beispiel, öffentlicher Zugang, zum Testen, die Notebooks clonen.
lucassay01-dietersteinmetz.notebooks.azure.com
(Wenn der Link nicht mehr geht, habe ich das in den letzten 60 Tagen nicht mehr aktualisiert)


Tipp: Linux mit Windows und Anaconda Python
Es gibt das Problem, dass einige Python Module nur für Linux entwickelt wurden. Wie kann ich damit in Windows arbeiten?
Es ist möglich in Windows eine Virtuelle Umgebung für Linux einzurichten. Zum Beispiel VirtualBox von Oracle.
Die zweite Möglichkeit ist WSL! In den letzten Jahren hat Microsoft eine Linux Umgebung in Windows eingerichtet und immer besser weiterentwickelt.
In Windows 10/11 kann das "Windows Subsystem for Linux" WSL aktiviert werden.
Es wird ein Bash Terminal eingerichtet, das zum Beispiel mit einem Ubuntu, Debian oder CentOS App erweitert wird.
Für Python und Jupyter Notebook kann Anaconda installiert werden.
Dies alles wird in einem schönen Blog von Hugo Ferreira beschrieben.




Code in einer Textdatei

Der Code liegt als Datei vor und soll ausgeführt werden. Wie geht das?


Python Code - Code in Microsoft Editor (engl. Notepad) .

Bei umfangreichen Code ist es übersichtlicher den Code in einer Textdatei mit der Endung .py zu speichern.
Der Code wird mit dem Progammaufruf für Python in der Eingabeaufforderung aufgerufen.
Bei Windows mit python.exe und der Name der Programm-Textdatei.
Der Pfad und die Endung .exe kann entfallen, da bei der geglücketen Installation von Python,
durch Eintragung in die Umgebungsvariablen, das alles klar gemacht wurde.
(Ändern der Umgebungsvariablen für Python)

Eingabeaufforderung öffnen, bei Windows mit Windows-Taste + R und "cmd" eingeben.
In unserem Beispiel gibt es in dem aktuellen Ordner eine Pythondatei mit dem Namen beispiel.py
Nun folgendes in der Eingabeaufforderung eingeben:

python beispiel.py

Das Programm beispiel.py wird aufgerufen. Wenn die Eingabeaufforderung nicht im gleichen Ordner steht wie die Datei,
muss der Pfad angegeben werden.
Zum Beispiel unter Windows, wenn sich die Datei in dem Ordner Temp befindet:
python C:\Temp\beispiel.py

Wenn Programme, die Argumente verwerten können, werden Argumente angegeben (s. u.).
Das sähe dann so aus
python C:\Temp\beispiel.py argument1 argument2

Vorrausgesetzt Python ist installiert, kann unter Windows auch auf eine Python-Datei doppelt geklickt werden.
Ein Fenster zur Eingabeaufforderung öffnet sich automatisch.
Das Programm wird ausgeführt.
In der Konsole wird das Ergebnis gezeigt und Schwupps schliesst sich das Fenster wieder automatisch, ohne dass das Ergebnis gesehen wird.
Daher ist es unter Windows besser die Eingabeaufforderung zuerst zu öffnen und wie oben python beispiel.py einzugeben.
Ein Trick ist am Ende des Programms die Zeile
input()
einzugegeben, dann wartet das Programm auf eine Eingabe und das Fenster wird nicht automatisch geschlossen.
Es kann das Ergebnis gelesen werden und eine beliebige Eingabe schließt das Fenster wieder.

Auch in der Python-Konsole kann eine Pythondatei aufgerufen werden.
>>> execfile("C:/Temp/beispiel.py")

Hinweis: Unter Windows Schrägstriche nicht Backslash für den Pfad benutzen.

In IPython eine Pythondatei mit dem magic command %run aufrufen (IPython)


Texteditoren

Der Code wird mit einem einfachen Texteditor, wie zum Beispiel Windows Editor, Gnu Emacs, Vi, Nano (Linux) geschrieben.
Auf keinen Fall mit Word!

Besser ist es einen guter Texteditor zu verwenden.

Notepad++ (Windows)
notepad-plus-plus.org/

BBedit (MacOS, kostenlose Basisversion)
www.barebones.com/products/bbedit/

Atom(MacOS, Windows, Linux)
atom.io/

gedit (Linux)
Wikipedia

Hier werden die Befehle farbig gekennzeichnet, was eine große Hilfe bedeutet (Progammsprachauszeichnung).



Schließlich benutzen Python Entwickler spezielle Programme um Python zu entwickeln und auszuführen.
Das wird weiter unten unter Entwicklungsumgebungen erläutert.



Python Online und Webinterface

Inzwischen gibt es im Internet Anbieter, die eine Python Plattform online anbieten.

www.pythonanywhere.com/

Python muss auf dem Rechner nicht mehr installiert werden.

Die Dateien können über alle Rechner erreicht werden.

Schließlich kann auch eine Webanwendung mit Python realisiert werden.

Registrierung notwendig. Der grundlegende Dienst ist kostenlos. Für mehr muss bezahlt werden.



tutorialspoint

Es gibt noch eine Plattform in der viele (wirklich viele!) Programmiersprachen online ausgeführt weren können.
www.tutorialspoint.com/
Für Python 3
www.tutorialspoint.com/execute_python3_online.php
Python muss auf dem Rechner nicht installiert sein.
Python2 und Python3 sind möglich.
Um kleine Codes zu testen ganz brauchbar
Auch eine einfache IDE ist vorhanden
www.tutorialspoint.com/online_python_ide.php




Was geschieht wenn ich ein Python Programm starte?

Wie sind die genauen Abläufe, wenn in der Eingabeaufforderung (Konsole, Terminal) das Python Skript mit python beispiel.py gestartet wird?

Das Python Programm beispiel.py liegt als lesbarer Quellcode ("Source code") vor.
Dateiendung ist py. Die Dateiendung ist allerdings keine Voraussetzung um das Programm zu starten.
Es macht die Dateien übersichtlicher und ist daher zu empfehlen. (In Modulen ist die Dateiendung allerdings notwendig).

Wenn das Programm mit Python gestartet wird, wird die Datei in einen Bytecode ("Bytecode") umgewandelt.
Es wird von kompilieren gesprochen.

Dieser Bytecode ist nicht sichtbar, wird aber als Datei mit der Endung pyc gespeichert.

Der Bytecode wird anschließend mit der Python Virtuellen Maschine ("Python virtual machine") ausgeführt.
Python verwendet somit einen Interpreter (Wikipedia), um den Bytecode zu verarbeiten.

Quellcode (m.py) > Bytecode (m.pyc) > Python Virtuelle Maschine (PVM)



Bei anderen Programmiersprachen, wie zum Beispiel C++, muss der Code grundsätzlich zuerst mit einem Compiler übersetzt werden.
Der Compiler erstellt einen für die Plattform (zum Beispiel Windows) lesbaren Bytecode.
Dieser Bytecode auch Maschinencode genannt, wird verbreitet und kann zur Ausführung gebracht werden. Bekannt sind diese Dateien unter Windows als exe-Datei.
Diese Programme sind somit schneller, da der Schritt für die Kompilierung bei der Ausführung des Programms entfällt. Die Kompilierung wurde ja vorher schon gemacht.

Daraus ergeben sich für Python folgende Vor- und Nachteile im Vergleich zu einem kompilierten Programm (C++):

+ Bei Python kann der Quellcode immer gelesen und bearbeitet werden
(für Firmen, die die Software verkaufen wollen, ist das ein Nachteil)
+ Code läuft problemlos auf allen Plattformen (Windows, Mac, Linux)
- Code ist langsamer als C++

In Python gibt es Module, die in C++ geschrieben wurden,
wenn das der geschwindigkeitsbestimmende Schritt ist, sind die Programme genauso schnell.
Ein Beispiel ist das nummerische Python NumPy oder pandas. Dadurch können mit Python Matrizen und Tabellenberechnungen sehr schnell durchgeführt werden.
Es existieren auch verschieden schnelle Interpreter. Siehe auch CPython als Referenzinterpreter und PyPy ein schnellerer Intepreter.

Bei Python entfällt die Kompilierung bei der 2. Ausführung, sofern der Code nicht geändert wurde, da der Bytecode noch versteckt vorhanden ist.

Der Befehl um Python Code in einem Ordner zu kompilieren lautet:
python -m compileall .
Der Punkt . am Ende bedeutet alle Programmdateien werden kompiliert. Sonst statt . einen Dateinamen eingeben.
Die pyc-Datei ist nun im Ordner __pycache__ sichtbar. Wurde der Code nicht geändert, entfällt der Schritt der Compilation beim der nächsten Ausführung.


Weitere Infos:

www.python-kurs.eu/python3_skript_ausfuehren.php

Python Run Time Structure - Neeraj's Blog



Aus Pythonprogrammen Windows exe-Datei erstellen:

Es gibt einige Python Module mit deren Hilfe ausführbare Programme erstellt werden können.
Vorteil ist, dass Python auf dem Rechner nicht installiert werden muss.
Allerdings sind diese exe-Dateien sehr groß, da sie zusätzlich zum Progammcode alle nötigen Pythoncodezeilen und Module enthalten müssen.

Windows, Linux: www.pyinstaller.org/index.html

Windows: www.py2exe.org/

Mac: pypi.python.org/pypi/py2app/




Entwicklungsumgebungen

Mit Editoren (Notepad) ein Python Programm zu entwickeln ist nicht sehr effektiv. Um Python-Code zu schreiben gibt es darauf spezialisierte Programme.
Entwicklungsumgebungen oder IDE ("integrated development environment") bieten eine Erleichterung bei der Eingabe von Code.
Außerdem sind weitere Funktionen, wie Debugger (Code Fehlerüberprüfung) vorhanden.
Eine gute Zusammenfassung gibt es im Hitchhikers Guide to Python.


IDLE

Die einfachste Enticklungsumgebung ist IDLE.

IDLE bedeutet Integrated DeveLopment Environment - der Name deutet auf Eric Idle, der Gründungsmitglied der Monty Python war!
IDLE ist bei der Standardinstallation von Python enthalten.
docs.python.org/3/library/idle.html
Für Anfänger ist IDLE brauchbar.

IDE - IDLE

IDE - IDLE ist in Python Download enthalten

Tipp: Wenn Anaconda unter Windows in C:\Anaconda3 installiert wurde ist IDLE im Ordner C:\Anaconda3\Lib\idlelib versteckt.
Starten mit C:\Anaconda3\Lib\idlelib\idle.bat in der Eingabeaufforderung.




Spyder


Spyder wird unter Windows mit den Paketen Anaconda oder WinPython installiert.
www.spyder-ide.org

Eine kurze Einführung in Spyder gibt es unter
www.southampton.ac.uk/~fangohr/blog/spyder-the-python-ide.html

Spyder ist nicht die beste IDE, aber für Anfänger weniger komplex als zum Beispiel PyCharm.
Da wir uns auf die Python Struktur konzentrieren möchten und andere Arbeitsgruppen in der Biologie an der Uni Tübingen auch Spyder benutzen, setzen wir Spyder in diesem Kurs ein.

Spyder wird in der Windows Eingabeaufforderung oder in dem Mac/Linux Terminal mit spyder gestartet.
Anaconda legt bei der Installation unter Windows Start : Anaconda3 einen Spyder Link an.
Oder im Anaconda Navigator kann Spyder gestartet werden.


IDE - Spyder Version 4


Tipps für Spyder

Menü Help : Shortcuts summary

Strg + Leertaste -> Autovervollständigung, zum Beispiel bei Variablen, Methoden und Funktionen.
Strg + I -> der Hilfesystem Inspector wird für die gesuchte Funktion oder Methode geöffnet
Strg + S -> speichert aktuelle Seite.
Vorlage für eine neue Codeseite, siehe unten.
Dreifacher Klick mit der Maus markiert eine Zeile -> Zeile kann kopiert werden
Strg + Alt + Pfeil-nach-unten -> Dupliziert eine Zeile nach unten
Strg + 1 -> macht aus eine Zeile einen Kommentar und umgekehrt. Ein # wird davor gesetzt


PyCharm

Seit 2013 gibt es eine kostenlose Version von PyCharm der Firma JetBrains.
www.jetbrains.com/pycharm/
Die Community Version ist unter der Lizenz Apache 2 OpenSource frei erhältlich.
Die Software ist in Java geschrieben und daher auch unter Linux, Windows und MacOSX erhältlich.
Für Studenten wird ein interaktives Lernprogramm "PyCharm Education Edition" für Python angeboten:
www.jetbrains.com/pycharm-educational/

www.heise.de/newsticker/meldung/Python-IDE-JetBrains-veroeffentlicht-PyCharm-Version-fuer-Studenten-2441050.html

Geeignet um größere Projekte zu bearbeiten. Kostenpflichtige Zusatzfunktionen.

Vermutlich zur Zeit die beste Entwicklungsumgebung für Python.


Pyzo

Schnelle und einfache Open Source IDE für wissenschaftliche Python Entwicklung ("design is aimed at simplicity and efficiency").
www.pyzo.org/
Windows, Mac und Linux

Ist bei WinPython enthalten.


Eric

eric-ide.python-projects.org/
Wikipedia
Ein freies IDE für Python. Unterstützt Python 2 und 3. Vermutlich besser als Spyder



SciTe

Nützlich ist auch SciTe, das auch andere Programmiersprachen unterstützt.
www.scintilla.org/SciTE.html



Eclipse

Auch für die umfassende Entwicklerumgebung Eclipse gibt es ein Plugin, das PyDev.
pydev.org/


Microsoft Visual Studio

Wer sowieso in Windows entwickelt (.NET usw.) wird sich freuen, dass es jetzt für Visula Studio das "Python-Tools für Visual Studio" von Microsoft gibt.
Die Tools sind kostenlos und OpenSource.
visualstudio.microsoft.com/vs/features/python/





Python 2 oder Python 3

Lange gab es zwei Python!
Python 2.7.18 und Python 3.10.2 können zurzeit unter www.python.org/downloads/ heruntergeladen werden.
(Stand Feb. 2022). Aus gutem Grund ist 2.7 unter "specific release" versteckt.

Mit Python 3 wurden einige wesentliche Neuerungen durchgeführt. Leider ist Python 3 nicht abwärts kompatibel.
Da es aber noch viel Programmcode in Python 2 gibt und viele Module und Pakete
nur für Python 2 erhältlich sind, muss manchmal noch mit Python 2 gearbeitet werden.

Es gibt ein Python-Skript um Python 2 Code in Python 3 Code zu verwandeln (2to3 - Automated Python 2 to 3 code translation)

Python 2.7 wird als Altlast ("legacy") bezeichnet. wiki.python.org/moin/Python2orPython3.
Allerdings sind viele Entwickler unglücklich mit Python 3 und halten eisern an Python 2 fest.
Die Version 2.7 wird die letzte Version von Python 2 sein, es wird kein Python 2.8 geben.
Sicherheitsupdate für Python 2 sind nur bis 2020 garantiert (siehe python.org).
2.7.18 soll ein code freeze sein. Nur Python3 wird wirklich weiter entwickelt.

Mit Hilfe magischer Befehlszeilen, siehe unten, können auch Python 3 Programme mit Python 2 (> Version 2.6) ausgeführt werden.

Damit Python 3 Skripte auch in Python 2 laufen, folgenden Code am Anfang des Python 2 Programms einsetzen:

from __future__ import division

In Python 2 ist das Ergebnis einer Division von zwei ganzahligen Zahlen (2/3) auch eine ganzzahlige Zahl (integer). Im Beispiel das Ergebnis 0.
Das wird Ganzzahldivision (integer division or truncating division) bezeichnet.
Python 3 hat eine Gleitkommazahl (float) zum Ergebnis. Im Beispiel ist das Ergebnis 0.666666.
In Python 3 kann der Operator // für die Ganzzahldivision verwendet werden.
Hintergründe siehe diesen Artikel.

Eine ähnliche Anweisung gibt es auch für print, damit der Code für Python 3 kompatibel bleibt.

from __future__ import print_function

Erläuterung unter print().


Coding, Sonderzeichen und Umlaute

Python3 soll grundsätzlich mit UTF-8 und alle Identifier mit ASCII und mit englischen Wörtern programmiert werden (PEP8)
Das bedeutet, keine Umlaute und Sonderzeichen im Code. Auch deutsche Bezeichnungen sollen vermieden werden.

Das folgende betrifft Python 2 und 3. Werden Sonderzeichen und Umlaute im Kommentar und Zeichenketten eingesetzt
am Anfang des Codes (1. oder 2. Zeile) folgendes einfügen:

# -*- coding: utf-8 -*-


Sollten die Umlaute (zum Beispiel print('Tübingen') immer noch nicht dargestellt werden, kann folgendes eingesetzt werden:

# -*- coding: iso-8859-1 -*-

und zusätzlich für Python 2 noch
from __future__ import unicode_literals

Damit werden alle Strings automatisch als Unicode-String interpretiert.




Spyder: templare.py - obige Anweisungen automatisch für jede neue Datei ausgeben:
In Spyder gibt es eine Vorlagendatei, die bei der Erstellung neuer Dateien verwendet wird.
Beliebige Anweisungen kann in Spyder automatisch für jede neue Programmdatei eingefügt werden.
Spyder öffnen und mit dem Menü "Tools" die "Preferences" öffnen.
Den Punkt "Editor" Register "Advanced Settings" und die Schaltfläche "Edit templates for new modules " wählen.
Die Anweisungen einfügen und das template.py speichern



Literatur, Tutorials


Spitzweg 1850, Bücherwurm -
Carl Spitzweg artist QS:P170,Q164979, Carl Spitzweg 021,
Verändert von Steinmetz, CC0 1.0



Python Dokumentation

Beste Anlaufstelle ist immer noch die offizielle Pythondokumentation.

Python 3
docs.python.org/3/contents.html

Python 2
docs.python.org/2/contents.html



Literatur, Anfänger

Dr. Martin Jones, Python for Biologists, ISBN 9781492346135, bezug über Amazon.
Auch als eBook erhältlich
pythonforbiologists.com
Martin Jones hat für Biologen ein super Tutorial geschrieben:
pythonforbiologists.com/tutorial.html/
Dieser Kurs folgt dem Konzept von Martin Jones.
Vom gleichen Autor ist ein Anfängerbuch Python erschienen:
Martin Jones. 2015. "Python for complete beginners: A friendly guide to coding, no experience required"


Bernd Klein, 2014, Einführung in Python 3, Carl Hanser Verlag
Das Buch tritt mit dem Anspruch 'In einer Woche Programmieren lernen' an.
Das ist aber nur mit dem 1. Teil (bis S. 189) realisierbar.
Der Rest des Buches bietet viele Informationen für anspruchsvolle Programmierung.
Bernd Klein bietet Python Kurse an und seine Ausführungen sind auch gut verständlich und kompetent.
Einen Online-Kurs findet sich unter
www.python-kurs.eu/

Michael Kofler, 2019, Python Der Grundkurs, Rheinwerk Computing.
Michael Kofler bekannt als (Linux) Computerbuchautor schafft es aus allen wichtigen Bereichen das wichtigste, kurz und systematisch zusammenzutragen.
Preiswertes Buch für Anfänger.



Weiterführende Literatur

Kenneth Reitz & Tanya Schlusser, 2017, Hitchhiker's Guide für Python.
Kein Programmierbuch, sonder das Buch über Python, Zusammenhänge, Installation, Guten Code schreiben, Python Projekte erstellen.
docs.python-guide.org/

Dr. Martin Jones, 2013, Advanced Python for Biologists,
pythonforbiologists.com
Fortsetzung des Klassikers "Python for Biologists".
Didaktisch hohes Niveau.
Vom gleichen Autor
2017 "Effective Python development for Biologists."
pythonforbiologists.com
2020 "Biological data exploration with Python, pandas and seaborn: Clean, filter, reshape and visualize complex biological datasets using the scientific Python stack"
pythonforbiologists.com/biological-data-exploration-book.html



Mitchell L Model, 2010, Bioinformatics Programming Using Python, O'Reilly, 1. Auflage
Für Fortgeschrittene

Allegra Via, Kristian Rother, Anna Tramontano, 2014, Managing Your Biological Data with Python, by Chapman and Hall/CRC.
Sehr viele Beispiele aus der Biologie, gut erklärt. Für völlige Anfänger weniger geeignet.



DataScience mit Numpy und Pandas

Dr. Martin Jones 2022
Biological Data Exploration with Python pandas and seaborn.
pythonforbiologists.com/biological-data-exploration-book.html

Jake VanderPlas, 2017, Data Science mit Python: Das Handbuch für den Einsatz von IPython, Jupyter, NumPy, Pandas, Matplotlib und Scikit-Learn (mitp Professional)
Auf GitHub finden sich viele Beispiele von ihm als Notebook
github.com/jakevdp/PythonDataScienceHandbook/tree/master/notebooks

Wes McKinney, 2012, Python for Data Analysis, O'Reilly.
Datenanalyse mit IPython und den Modulen NumPy und pandas
Sehr gute Einführung mit anschaulichen Beispielen. Leider keine biologische Beispiele


Tutorials, Online Python, Videos

Oliver Kohlbacher, Applied Bioinformatics Group - Online Vorlesung Timms
Vorlesung Bioinformatik für Lebenswissenschaftler, 2. Stunde
Vorlesung Bioinformatik für Lebenswissenschaftler, 3. Stunde
Vorlesung Bioinformatik für Lebenswissenschaftler, 4. Stunde
Vorlesung Bioinformatik für Lebenswissenschaftler, 5. Stunde

Dr. Martin Jones - Python for Biologists
pythonforbiologists.com/tutorial.html/

Programming Course for Biologists at the Pasteur Institute
http://www.pasteur.fr/formation/infobio/python/
Im Moment leider nicht mehr auffindbar.

Bernd Klein - Python Online
www.python-kurs.eu/

Dr. Chuck (Charles Severance) - Python for Everybody - Videos, Audios, Beispiele
www.py4e.com/

Codeacademy Python
Online Kurs, Registrierung notwendig, inzwischen kostenpflichtig
www.codecademy.com

Learnpython.org
Online Kurs, keine Registrierung
www.learnpython.org/

Hitchhiker's Guide für Python
Das ganze Drumherum in Python als Tutorial.
Auch als Buch erschienen (siehe oben)
docs.python-guide.org/


Hilfe im Internet

Wer ein Python Code Problem hat wird im Internet sehr schnell auf stackoverflow stoßen.

https://stackoverflow.com/

Hier treffen sich die Python Experten und können bei einem Problem helfen.
Wenn nicht das Problem vorher schon behandelt wurde.



Python an der Uni Tübingen

EDV-Kurse am ZDV - Einführung in Python
uni-tuebingen.de/einrichtungen/zentrum-fuer-datenverarbeitung/dienstleistungen/sonstiges/schulungen/anmeldung/

Oliver Kohlbacher, Applied Bioinformatics Group - Online Vorlesung Timms
Vorlesung Bioinformatik für Lebenswissenschaftler, 2. Stunde
Vorlesung Bioinformatik für Lebenswissenschaftler, 3. Stunde
Vorlesung Bioinformatik für Lebenswissenschaftler, 4. Stunde
Vorlesung Bioinformatik für Lebenswissenschaftler, 5. Stunde

Dr. Eberle Zentrum für digitale Kompetenzen
Zentrale Einrichtung an der Uni Tübingen
dr-eberle-zentrum-fuer-digitale-kompetenzen/ueber-uns/
uni-tuebingen.de/einrichtungen/zentrale-einrichtungen/dr-eberle-zentrum-fuer-digitale-kompetenzen/lehrangebot/sommersemester-2022/

Wirtschaftswissenschaften
Computergestützte Methodenkompetenzvermittlung für Studienanfänger in den wirtschaftswissenschaftlichen Studiengängen
uni-tuebingen.de/universitaet/aktuelles-und-publikationen/

Modern Issues in Finance | B404 | Veranstaltung

Sprachwissenschaften - Seminar SS2017 Introduction to Python
campus.verwaltung.uni-tuebingen.de

Kenneth Berendsen, ZMBP - Motif Mapper for Python
uni-tuebingen.de/fakultaeten/mathematisch-naturwissenschaftliche-fakultaet/fachbereiche/zentren/zmbp/res/plant-physiology/research-groups/harter/berendzen/motif-mapper-for-python/

Tobias Lachenmaier, Astrophysik Wissenschaftliches Programmieren mit Python SS2018
campus.verwaltung.uni-tuebingen.de





Dieter Steinmetz, Universität Tübingen, ZMBP - Kursübersicht - Im Skript suchen