Siehe Skript und Aufgabenstellung in [moodle](https://moodle.tu-darmstadt.de/course/view.php?id=36368§ion=4#tabs-tree-start).
Siehe Skript und Aufgabenstellung in [moodle](https://moodle.tu-darmstadt.de/course/view.php?id=36368§ion=5#tabs-tree-start).
## Materialien
In diesem GitLab Repo finden Sie:
...
...
@@ -19,90 +19,19 @@ In diesem GitLab Repo finden Sie:
- Requirements (`requirements.txt`): Beschreibt die pip-Umgebung, nicht relevant für die Ausarbeitung
- Matplotlib Style (`FST.mplstyle`): Einstellung für Matplotlib nach der FST-Institut-Vorschrift
### H5py Quick Start Guide
https://docs.h5py.org/en/stable/quick.html
### Links
Mehr Infomationen über die Datenstruktur sind in der [README.md](https://git.rwth-aachen.de/fst-tuda/public/lehre/calorimetry_home/-/blob/main/README.md) des Küchentischversuches zu finden.
### Datenstruktur
Messdaten und Metadaten existieren nicht nur in der Festplatte, sondern auch während der Durchführung des Programms im Arbeitsspeicher. Die Daten, die während der Durchführung des Programms eingelesen aus erstellt werden, bezeichnet man als `Runtime Daten`. Die Funktionen, die Sie bei der Bearbeitung implementieren werden, wurden unter Berücksichtigung der spziellen Datenstrukturen implementiert.
#### Runtime Metadaten
Die Datenstruktur basiert auf Python-Dictionary `dict`. `all` bezieht sich auf alle Komponenten des Prüfstandes. Das Value davon ist ein Python-Dictionary, das hat 2 Keys `values` und `names`. Die beinhalten jeweils eine Liste mit den UUIDs und Namen.
Weitere Keys entsprechen die Namen der Typen der Komponenten. Das Vaule ist jeweils ein Python-Dictionary mit gleich Key-Value-Paar wie das Vaule von `all` Key. `sensor` Typ ist einer Sonderfall. Das Value-Dictionary kann noch `serials` als Key mit einer Serials-Liste als Value enthalten.
Die Messdaten aller Sensoren werden während des Versuches in ein Python-Dictionary bzw. Liste abgespeichert. Das Dictionary hat UUIDs der Sensoren als Keys. Die entsprechenden Values sind Liste, die zwei Listen enthalten. Die erste Liste enthält die Tempraturdaten, während die zweite die Zeitpunten behalten.
```python
{
'uuid1':[
[listoftemprature],
[listoftimestep]
],
'uuid2':[
[listoftemprature],
[listoftimestep]
],
'uuid3':[
[listoftemprature],
[listoftimestep]
],
...
}
```
#### HDF5 structure
Die Messdaten werden am Ende der Versuche in HDF5-Daten abgespeichert. Die Daten müssen eine bestimmte Struktur aufweisen. In jeder HDF5-Datei existiert eine Sub-Gruppe `RawData`, die die weiteren als UUID benennten Sub-Gruppen enthält. Die Sub-Gruppen in `RawData` beinhalten zwei Datensätze mit den Namen `temperature` und `time`.
Die Metadaten `authors`, `created`, `experiment` und `group_number` sollten als Attribute der HDF5-Datei gespeichert werden. Die Attribute der Sub-Gruppen in `RawData` sind der Name und die Serial-Nummer des ensprechenden Sensores. Die Datasätze `time` beinhalten die Attribute über die verwendete Zeitkonvention. In diesem Fall sind folgende Attribute zu verwenden.
``` python
{
"time_convention":"Unixzeit",
"the_epoch":"Donnerstag, der 1. Januar 1970, 00:00 Uhr UTC",
"time_explanation":"Die Unixzeit zaehlt die vergangenen Sekunden seit The Epoch"
Die Ausarbeitung erfolgt in den Modul `m_labor` und Notebook. In diesen ist bereits eine Gliederung vorgegeben.
Die Ausarbeitung erfolgt in den Modul `m_labor` und Notebook`ausarbeitung_laborversuch.ipynb`. In diesen ist bereits eine Gliederung vorgegeben.
## Abgabe
Die Abgabe erfolgt über [moodle](https://moodle.tu-darmstadt.de/mod/assign/view.php?id=1249200). Committen und pushen Sie zunächst Ihre Änderungen auf GitLab und laden Sie von dort Ihr gesamtes Repo als .zip-Datei herunter (ein direkter Download vom JupyterHub ist leider nicht möglich). Benennen Sie die .zip-Datei nach dem folgenden Schema: