- Python
- C++
- Unreal Engine 5
- Docker
- Visualization
Aufgabe
Zu Beginn der Arbeit stand ein zwar funktionsreicher, aber nur auf dem Entwicklerrechner lauffähiger Prototyp. Seine Hauptprobleme waren eine ≥ 20 %-ige Fehlerrate der SimNIBS-Simulationen, die jedoch nicht reproduzierbar war und die Fehlerrate nach Übergabe des Projekts bei 100% lag, falsche Jet-Farbzuordnung, harte Systempfade, manuell anzustoßende Berechnungen und kaum vorhandene Dokumentation.
Die Kernaufgabe bestand darin, diese Schwachstellen systematisch zu analysieren und ein resilientes, portables Gesamtsystem zu schaffen. Dazu wurden sieben funktionale Ziele definiert: (1) Fehlerquellen aufspüren und die Erfolgsrate gegen 100 % treiben, (2) absolute Pfade entfernen und Containerisierung einführen, (3) die Farbdarstellung korrigieren, (4) neue Visualisierungsmittel – insbesondere Histogramme – integrieren, (5) Simulationen direkt aus dem Frontend starten, (6) Laufzeiten optimieren und (7) eine ausführliche Entwickler- und Nutzerdokumentation bereitstellen.
Darüber hinaus galt es, nicht-funktionale Anforderungen wie Parallelisierung, sauberes Logging, Wartbarkeit und Skalierbarkeit zu erfüllen. Das übergeordnete Ziel war, eine verlässliche Grundlage für weitere Forschung und eine mögliche klinische Nutzung zu legen.
Umsetzung
Backend & Simulation:
Umfassendes Refactoring ersetzte hard-codierte Windows-Pfade durch pathlib und lagerte Konstanten in config.ini aus.
Docker-Images mit definierter Conda-Umgebung sorgen nun für reproduzierbare Builds und parallele Containerläufe.
Mesh-Operationen wurden von externen Gmsh-Prozessen auf die performante Python-API umgestellt, inklusive Entfernung selbstschneidender Flächen und automatischem ROI-Check via Delaunay-Triangulation.
Der instabile PETSc-Iterativsolver wurde durch den MKL-PARDISO-Direktsolver ersetzt; zusammen mit den Mesh-Verbesserungen erhöhte das die Erfolgsrate auf ~94%.
Frontend (Unreal Engine 5):
Neue Server-Management-Maske erlaubt die Eingabe beliebiger IP/Port-Kombinationen und prüft die Erreichbarkeit des REST-Backends live.
Ein Run-Button startet Simulationen direkt aus der Konfigurationsansicht, Navigation (Esc) bringt Nutzer:innen jederzeit zurück ins Hauptmenü.
Die Jet-Colormap wurde durch Plasma- und Graustufen-LUTs ersetzt, falsch skalierte baryzentrische Gewichte wurden korrigiert, und ein Python-basierter Histogramm-Dialog ergänzt die Datenexploration.
Dokumentation & Dev-Ops:
Sphinx-Docs für das Python-Backend und Doxygen für die C++-Klassen erzeugen durchsuchbare HTML-Nachschlagewerke; ausführliche README-Leitfäden erleichtern den Einstieg.
Ein zentralisiertes Logging-Setup schreibt Laufzeit- und Fehlermeldungen chronologisch konsistent in Log-Dateien, was Debugging und Wartung vereinfacht.
Gallerie





