# POOSE 23 ## OrgaDinge ## Todo ### Phase Alpha: - [x] Bestehende REST Schnittstellen dokumentieren und vervollständigen - [x] Service Unit Tests 2/3 - [x] **Stage 1** (im wesentlichen keine REST API Tests) - [x] Projekt bauen - [x] Unittests für Komponenten des Subservice *Pipeline* definieren und implementieren; **Hinweis:** **für einzelne Komponenten existieren bereits einige - [x] Docker Image pro Subdienst baut - [x] **Stage 2** (viele REST API Tests für Subservices) - [x] Subdienstspeziefische Unittests definieren und implementieren; **Hinweis:** für Subservice *Pipeline* existieren bereits einige - [ ] Ensemblemodul vervollständigen (Teil des Subservice *Pipeline*) ### Phase Beta: - [x] Subdienst Interaktive Webpipeline hinzufügen (Planung hier, Implementierung evtl mit in Phase Gamma) - [ ] Erste Schritte der interaktiven Webpipeline sollen (nichtinteraktive) Statistiken erzeugen. - [ ] Daten laden: Deskriptive Statistiken (mind. Min, Max, Median, Varianz, Boxplot, Violinplot, Dichtefunktion (geglättet)) - [ ] Feature Extraction: 2D Plot von Feature1/Feature2 (inkl. korrekter Beschriftung) - [ ] Eventuell: - [ ] Scatterplot nach Feature Extraktion (PCA, TSNE, NCA) ([3D Plot](https://plotly.com/python/3d-scatter-plots/)) - [ ] Weitere Schritte sollen mind. geplant werden - [ ] Subdienst Statistik hinzufügen - [ ] Auswahl von zu betrachtenden Daten - Auf Basis von Generator - Optimal: Auf Basis von mehreren Filtern (s. ["Dataset Filters"](https://shapash-demo.ossbymaif.fr/) in diesem Beispiel) - [ ] [Scatterplot](https://plotly.com/python/line-and-scatter/) x: Nutzerdefinierte Statistik a, y: Nutzerdefinierte Statistik b, Farbe: Nutzerdefinierte Statistik/Kategorie c (z.b. MCC oder Label), Shape: Nutzerdefinierte Kategorie d (z.B. welcher Filter wurde verwendet) - [ ] Optimal: Klassenhistogram auf Basis von vom Nutzer gewählten Bereichen im Scatterplot - [ ] [Parallel Coordinates Plot](https://plotly.com/python/parallel-coordinates-plot/) welcher MCC in Abhängigkeit von gewählten Pipeline Parametern darstellt (z.b. gewähltes Filterverfahren, Epochenzahl + Lernrate vom MLP) - [ ] Korrelation gewählter Hyperparameter und MCC, Precision, Recall - [ ] Wir speichern unter anderem die Laufzeit, die sinnvoll visualisiert werden sollte - [ ] Eventuell: Für Machine Learning Verfahren für welche wir schrittweise Statistiken während des Trainings berechnen: Lineplot mit Schritt auf der x-Achse und nutzergewählte Statistik (z.b. Genauigkeit auf der y-Achse) - [ ] Confusion Matrix für nutzergewählten Job - [ ] Service Unit Tests 3/3 - [ ] Stage 3 (Zusammenspiel der Subservices unittesten, d.h. FATDATA als Dienst unittesten) ## Fragen - Ist es gewollt, dass man im ingest Projekt keine Issues erstellen kann? - Nein, und sollte inzwischen behoben sein ## Probleme - [x] **Behoben** || **Mac (Doch nicht nur Mac) spezifischer Fehler mit dem Ingest Server:** Das Problem sind die **.DS_Store** Dateien, die von MacOS automatisch erstellt werden. In ingest.py->build_session_registry wird diese beim Start des Services automatisch in eine Session-Datei umbenannt. Nach dem Einfügen dieser paar Zeilen funktioniert alles :) ```python if file.startswith("."): print("Deleting hidden file: " + file) os.remove(file_path) continue ``` ```bash ERROR: Traceback (most recent call last): general-ingest-1 | File "/ingest/./ingest.py", line 656, in init general-ingest-1 | build_session_registry(settings.session_directory) general-ingest-1 | File "/ingest/./ingest.py", line 377, in build_session_registry general-ingest-1 | if file_name in g_uuid_registry else None, 'session': json.load(open(os.path.join(settings.session_directory, file_name), 'r'))}) general-ingest-1 | File "/usr/lib/python3.10/json/__init__.py", line 293, in load general-ingest-1 | return loads(fp.read(), general-ingest-1 | File "/usr/lib/python3.10/codecs.py", line 322, in decode general-ingest-1 | (result, consumed) = self._buffer_decode(data, self.errors, final) general-ingest-1 | UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 3131: invalid start byte ```