Übersicht:
- Was wird in diesem Projekt gemacht?
- Übersicht der Features und Funktionen
- Installieren des Pakets
Hier wird ein Python-Paket pap entwickelt, das repetitive Aufgaben der Physikexperiment-Auswertungen im Studium schneller, einfacher und schöner löst als es manuell möglich wäre.
Im Zuge der Entwicklung wird das Paket um neue Funktionen ergänzt und alte Funktionen flexibler/kraftvoller gemacht.
Ideen, Feedback und Beiträge sind höchst willkommen.
Aktuell lassen sich die Features in 5 Bereiche aufteilen:
- Fehlerrechnung
- Einfache Statistik
- Resultat-Darstellung und -Vergleich
- Fits und Chi^2-Tests
- Grundlegende Fitfunktionen
- pap.summen_fehler()und- pap.produkt_fehler()vereinfachen einem die gauß'sche Fehlerfortpflanzung.
 Zur Berechnung muss man nur die benötigten Werte und Fehler einsetzen.
- pap.std()berechnet den Experimentellen Fehler des Einzelwertes.
 - np.std()tut dies nämlich nicht, näheres dazu auf der- pap.std()-Seite
- pap.mittel()und- pap.mittel_fehler()entsprechen jeweils- np.mean()und dem Experimentellen Fehler des Mittelwertes
- pap.fwhm()wandelt σ in FWHM bzw. Halbwertsbreite um
- 
pap.resultat()printet ein schön formatiertes Ergebnis mit Titel, definierter Präzision, evt. +/- Fehler, Einheit und evt. relativen Fehler.Beispiel: >>> pap.resultat('Arbeit', np.array([3.3520e6, 0.4684e6]), 'MJ', faktor = 1e-6) Arbeit: 3.4 +/- 0.5 MJ
- 
pap.vergleichstabelle()printet einen wissenschaftlichen Vergleich von fehlerbehafteten experimentellen und theoretischen Werten in Tabellenform.- Absolute, relative und sigma-Abweichung werden berechnet.
- Die Werte sind nach Größenordnung ausgerichtet und wissenschaftlich gerundet.
- Darstellung der Vergleiche als Blöcke oder als Liste möglich.
- Robust gegen Extremfälle und fehlende Werte.
 Beispiel: >>> titel = 'Literaturvergleich Fallbeschleunigung' >>> werte = np.array([[3.446, 0.00204], [0.105, 0.00045], [3.69, 0], [5e-3, 0]]) >>> größen = ['Boden', 'Orbit'] >>> vergleichstabelle(werte, titel, einheit = 'm/s^2', größen = größen, beschreibung = 'knapp') Literaturvergleich Fallbeschleunigung [m/s^2] Boden Orbit -------- -------------- --------------- Wert exp 3.45 ± 0.10 0.0020 ± 0.0004 the 3.690 ± 0.005 0.0 ± 0.0 Abw. abs -0.24 ± 0.11 0.0020 ± 0.0004 rel -6.6 % - sig 2.3 σ 4.5 σ
- 
pap.odr_fit()fittet Funktionen ähnlich wie SciPyscurve_fit()nur mit Berücksichtigung des x-Fehlers, was wichtig wird, wenn dieser der dominante Fehler ist. Diese Funktion benutzt direkt SciPysodr-Paket, ist aber wesentlich einfacher zu bedienen.
- 
pap.chi_quadrat_test()undpap.chi_quadrat_odr()führen einen χ^2-Test zu Bestimmung der Güte des Fits durch. Erstere nimmt die Ergebnisse von SciPyscurve_fit()auf, während zweitere die vonpap.odr_fit()benutzt und damit auch den x-Fehler berücksichtigt.Beispiel: (für Orignal-Werte, siehe die pap.chi_quadrat_test()-Seite)>>> pap.chi_quadrat_test(pap.func.quad(x_werte, *fitparameter), y_werte, y_fehler, 3) Ergebnisse des χ^2-Tests: χ^2_reduziert = 2.79 Fitwahrscheinlichkeit = 2.5%
(mehr Infos in der Modulübersicht von pap.func)
- pap.func.konst()- Konstante Funktion
- pap.func.prop()- Proportionale Funktion
- pap.func.lin()- pap.func.quad()- Quadratische Funktion
- pap.func.poly()- allgemeines Polynom
- pap.func.exp()- pap.func.gauss()- Gaußverteilung
Dieses Paket ist noch kein allgemeinzugängliches Python-Paket, deshalb muss es manuell von GitHub (https://github.com/Fjallripa/pap) heruntergeladen werden (nur der Ordner pap ist notwendig).
Wenn du es direkt benutzen willst, kannst du es in den gleichen Ordner wie dein Jupyter-Notebook bzw. Python-Skript speichern.
Wenn du aber nicht für jede neue Datei den pap-Ordner dorthin kopieren willst, damit import pap klappt, dann gibt es für Jupyter-Notebook-Benutzer eine detaillierte Anleitung unter Installationsanleitung. Skript-Benutzer (.py) können ihren Dateipfad für pap PYTHONPATH hinzufügen (wie, kann leicht gegoogelt werden).
Danach sollte pap problemlos zu benutzen sein:
import pap
# Infos zum Paket/Modul. Gibt eine Übersicht der Funktionen. Auch alle deren Docstrings sind aufgelistet.
help(pap)
help(pap.func)
# Aufrufen der pap-Funktionen
pap.blabla(...)
pap.func.blablubb(...)