Für diejenigen unter Ihnen, die sich in der Verwendung der Programmiersprache [Python](https://www.python.org/) nicht sicher fühlen, aber dennoch nicht auf die korrekte Anwendung statistischer Methoden zur Parameterschätzung in den P1 und P2 Praktika verzichten wollen hat Prof. Günter Quast am Institut für Experimentelle Teilchenphysik (ETP) die Python Modulsammlung [PhyPraKit](https://etpwww.etp.kit.edu/~quast/PhyPraKit/htmldoc/) entwickelt.
Aus dieser Modulsammlung werden Sie voraussichtlich nur die Skripte *run_phyFit.py* und ggf. *plotData.py* benötigen. Auf dem Jupyter-server können Sie beide Skripte sowohl aus einem Terminal, als auch direkt aus einer Code-Zelle eines Juypter-notebooks aufrufen. Der Aufruf des Skripts *run_phyFit.py* aus einem Terminal Ihrer Jupyter-notebook Umgebung sieht z.B. so aus:
Aus dieser Modulsammlung werden Sie voraussichtlich nur die Skripte *run_phyFit.py* und ggf. *plotData.py* benötigen. Auf dem Jupyter-server können Sie beide Skripte sowohl aus einem Terminal, als auch direkt aus einer Code-Zelle eines Juypter-notebooks aufrufen. Der Aufruf des Skripts *run_phyFit.py* aus einem Terminal Ihrer Jupyter-Umgebung sieht z.B. so aus:
`./tools/run_PhyFit.py –-help`
...
...
@@ -12,15 +12,15 @@ Der Aufruf des gleichen Skripts direkt aus einer Code-Zelle eines Jupyter-notebo
Mit der Option `–-help` in diesen Beispielen, rufen Sie lediglich den "Hilfe"-Text mit Erklärungen zur Anwendung des Skripts auf. Wenn Sie eine richtige Parameteranpassung an Daten durchführen wollen müssen Sie dem Skript *run_phyFit.py* sowohl die Daten, als auch das anzupassende Modell mit den entsprechenden Parametern bekannt machen. Dies erreichen Sie mit Hilfe einer Konfigurationsdatei, die im [yaml](https://de.wikipedia.org/wiki/YAML)-Format abgefasst ist. Wir werden Ihnen im Folgenden die wichtigsten Eigenschaften einer solchen Konfgurationsdatei anhand der Verwendung mit dem Skript *run_phyFit.py* erklären.
Alle in diesem Text verwendeten Code-Beispiele beziehen sich auf dem [Vorversuch Datenverarbeitung](https://git.scc.kit.edu/etp-lehre/p1-for-students/-/tree/main/Vorversuch) des P1. Wenn Sie diesen aus dem entsprechenden SCC-gitlab Repository in Ihre Umgebung auf dem Jupyter-server der Fakultät laden, sollten Sie alle Beispiele dort direkt anwenden können. Im Dokument Arbeiten auf dem Jupyter-server erhalten Sie weitere Hinweise, wie Sie dies erreichen können.
Alle in diesem Text verwendeten Code-Beispiele beziehen sich auf dem [Vorversuch Datenverarbeitung](https://git.scc.kit.edu/etp-lehre/p1-for-students/-/tree/main/Vorversuch) des P1. Wenn Sie diesen aus dem entsprechenden SCC-gitlab Repository in Ihre Umgebung auf dem Jupyter-server der Fakultät laden, sollten Sie alle Code-Beispiele dort direkt ausführen können. Im Dokument [Arbeiten auf dem Jupyter-server](https://git.scc.kit.edu/etp-lehre/p1-for-students/-/blob/main/Jupyter-server.md) erhalten Sie weitere Hinweise, wie Sie dies erreichen können.
[^1]:Beachten Sie die Verwendung des [Magic commands](https://ipython.readthedocs.io/en/stable/interactive/magics.html)**%run** zur Ausführung des Skripts aus eine Code-Zelle des Jupyter-notebooks. Weitere Hinweise hierzu erhalten Sie in der Beschreibung [Arbeiten auf dem Jupyter-server](to be filled).
[^1]:Beachten Sie die Verwendung des [Magic commands](https://ipython.readthedocs.io/en/stable/interactive/magics.html)**%run** zur Ausführung des Skripts aus eine Code-Zelle des Jupyter-notebooks. Weitere Hinweise hierzu erhalten Sie in der Beschreibung [Arbeiten auf dem Jupyter-server](https://git.scc.kit.edu/etp-lehre/p1-for-students/-/blob/main/Jupyter-server.md).
## Parameteranpassung mit dem Skript *run_phyFit.py*
## Parameteranpassung mit dem Skript *run_phyFit.py*
Wenn Sie sich für die Verwendung der Modulsammlung PhyPraKit entschieden haben empfiehlt es sich, sich mit der Nutzung des Skripts *run_phyFit.py* und der Struktur der notwendigen *yaml*-Datei zu dessen Steuerung vertraut zu machen. Im Folgenden ist die Durchführung einer Parameteranpassung an einen Beispieldatensatz, bestehend aus 14 freigewählten Datenpunkten, mit Hilfe der Datei [*yaml/data.yml*](https://git.scc.kit.edu/etp-lehre/p1-for-students/-/blob/main/Vorversuch/yaml/data.yaml)(hier verlinkt aus dem [Vorversuch Datenverarbeitung](https://git.scc.kit.edu/etp-lehre/p1-for-students/-/tree/main/Vorversuch) des P1) gezeigt:
Die wichtigsten Strukturelemente der *yaml*-Datei sind in den folgenden Kommentarzeilen kurz erklärt:
Die wichtigsten Strukturelemente der *yaml*-Datei sind in den folgenden Kommentarzeilen in dieser Datei kurz erklärt:
```yaml
# Das ist eine Kommentarzeile schreiben Sie so viele Kommentare in Ihre yaml-Dateien, wie sie möchten!
...
...
@@ -66,7 +66,7 @@ Sie sollten die angepassten Parameter $A$ und $x_{0}$ der Modellfunktion, das Da
-*yaml* ist ein Strukturformat, das aus Paaren von beliebigen "Schlüsselworten" und "Werten" (*key-value* Paaren) besteht. Diese sind grundsätzlich durch einen Doppelpunkt voneinander getrennt.
- Die Schlüsselworte, die wir in der oben gezeigten Datei verwenden, haben nichts mit dem *yaml*-Format an sich zu tun. Das Format ist nur das Medium, das wir verwenden um das Skript *run_phyFit.py* zu konfigurieren. Es handelt sich um **Schlüsselworte, die das Skript erwartet**.
- Innerhalb des Skripts gibt es Code-Stellen in denen solche Schlüsselworte gesucht und die dazugehörigen Parameter ausgelesen werden. Wenn für die Anwendung essentielle Schlüsselworte nicht gefunden werden können, oder es mit den übergebenen Parametern nichts anfangen kann, gibt das ausgeführte Skript einen Fehler aus.
- Innerhalb des Skripts gibt es Code-Stellen in denen solche Schlüsselworte gesucht und die dazugehörigen Parameter ausgelesen werden. Wenn für die Anwendung essentielle Schlüsselworte nicht gefunden werden können, oder wenn das ausgeführte Skript mit den übergebenen Parametern nichts anfangen kann, wird ein Fehler ausgegeben.
- Sie können keine Anpassung einer Funktion an Daten durchführen, wenn Sie dem Skript die Daten nicht als Werte, hier zu den Schlüsselworten *x_data* und *y_data*, bekannt machen. Ebenso erwartet das Skript Werte für die Unsicherheiten auf die Datenpunkte, die man mit den Schlüsselworten *x_errors* und *y_errors* übergibt, und eine anzupassende Modellfunktion. Diese einfachen Anforderungen erklären die Schlüsselworte, für die Sie in der *yaml*-Datei Werte **zur Verfügung stellen müssen**.
- Halten Sie sich exakt an die Syntax der Schlüsselworte. Die Worte *x-data*, *x_Data* oder *x_data* sind **nicht identisch**. Beachten Sie Groß- und Kleinschreibung!
- Wenn Sie für einen Wert (einfache oder doppelte) Anführungsstriche öffnen, müssen Sie diese auch mit gleichartigen Anführungsstrichen wieder schließen. Das sind klassische Tippfehler bei Programmieranfänger:innen.