301 - Workflows mit Daten im PAP

Teilt Daten mit eurem Partner

Da ihr im PAP mit eurem Partner zusammen arbeitet benötigt ihr ein System, um eure Daten miteinander zu teilen. Achtet darauf, dass eure Daten dabei konsistent bleiben und nicht verloren gehen - schickt sie also bspw. nicht per Email hin und her und tragt sie nicht auf verschiedenen USB-Sticks umher.

  • Eine einfache Option ist ein Cloud Storage Dienst wie die Uni-interne HeiBox, mit der ihr einen Ordner mit Kommilitonen teilen könnt.
  • Noch robuster ist, eure Dateien in einem Git Repository zu verwalten. Das ist ein Ordner, in dem Git regelmäßig alle Änderungen der Dateien darin speichert, sodass ein konsistenter Versions-Verlauf entsteht. Über einen Dienst wie GitHub könnt ihr das Repository jederzeit mit eurem Partner abgleichen, ohne dass Synchronisierungs-Konflikte entstehen können.

Auch die Fakultät Physik bietet Studierenden einen solchen Dienst in Form eines GitLab Servers:

Im Werkraum-Wiki findet ihr weitere Informationen dazu. Falls ihr Hilfe mit Git benötigt könnt ihr euch auch an das Werkraum-Team wenden.

Git ist die Grundlage weltweiter Softwareentwicklung und wird in der Wissenschaft bereits ebenso viel verwendet. Nutzt also die Gelegenheit, im PAP mit Git und Python zwei der grundlegenden Technologien moderner Wissenschaft zu lernen. Eine Einführung in Git bietet euch try.github.io. Wenn ihr lieber ohne Kommandozeile arbeitet könnt ihr Git mit der GitHub Desktop App auch mit einer graphischen Oberfläche verwenden.

Speichert Daten getrennt von eurer Analyse

In eurem Verzeichnis für das PAP, das ihr mit eurem Partner teilt, legt ihr nun einen Ordner für jeden Versuch an und speichert darin das Jupyter Notebook für diesen Versuch. Schon während der Versuchsdurchführung könnt ihr darin Berechnungen durchführen und Notizen machen.

Im PAP nehmt ihr während eines Versuchs häufig selbst Daten oder verwendet Messgeräte, die Daten in verschiedenen Formaten speichern. Diese Daten repräsentieren alles, was euer Experiment über die Natur herausfindet und bilden damit die objektive Grundlage eurer Analyse. Wir trennen daher die Daten strikt von der Versuchsauswertung, die diese Daten interpretiert.

Erstellt für manuell genommene Daten demnach eine .txt Datei und tragt die Daten in einem konsistenten Format ein, sodass es anschließend leicht eingelesen werden kann.

Formatiert eure Daten konsistent

Sinnvoll ist, Spalten durch Tabulatoren zu trennen und in einer Titelzeile die Messgröße und ihre Einheit zu notieren:

t [s] <TAB> x [mm]
0 <TAB> 5.1
1 <TAB> 12.25
2 <TAB> 19.5
3 <TAB> 31.13

In den meisten Fällen lesen wir Daten mit numpy.loadtxt ein. Ein Format wie dieses kann die Funktion ohne Schwierigkeiten lesen, wenn wir mit skiprows=1 die Titelzeile überspringen:

In [ ]:
import numpy as np
In [ ]:
np.loadtxt('data/formatted_data.txt', skiprows=1)

Lest beliebige Datensätze ein

Die numpy.loadtxt Funktion ist flexibel genug, um Daten jeglicher Form einlesen zu können. Schaut euch einfach die Struktur eurer Daten an, indem ihr bspw. die !head Funktionalität im Jupyter Notebook verwendet:

In [ ]:
!head data/comma_separated_data.txt

Diese Daten verwenden bspw. ein Komma statt eines Punktes als Dezimaltrennzeichen. Zieht die Dokumentation der numpy.loadtxt Funktion zu Rate, um eine Option zu finden, die Daten einzulesen:

In [ ]:
#np.loadtxt?

Dem Argument converters der Funktion numpy.loadtxt können wir in einem Dictionary für jede Spalte eine Funktion angeben, die einen Wert des Datensatzes beliebig verändern kann. Wir ersetzen also das Komma durch einen Punkt und konvertieren den String zu einem Float:

In [ ]:
def comma_decimal_to_float(valstr):
    return float(valstr.decode("utf-8").replace(',','.'))

np.loadtxt('data/comma_separated_data.txt', skiprows=1, converters={ 1: comma_decimal_to_float })

Wenn ihr Daten in einem Format vorliegen habt, das numpy.loadtxt nicht direkt einlesen kann, erinnert euch daran, dass euch mit Python die Möglichkeiten einer vollwertigen Programmiersprache zur Verfügung stehen. Durch String-Manipulationen könnt ihr die Daten häufig so weit verändern, dass ihr die Daten weiterverarbeiten könnt.