Epilepsie-Planungstool

  • Python
  • C++
  • Unreal Engine 5
  • Docker
  • Visualization
Meine Bachelorarbeit optimiert ein interaktives Simulations- und Visualisierungstool, das die Positionierung von EASEE-Elektroden zur Epilepsietherapie plant. Die Ausgangsversion litt unter Instabilitäten, fehlerhafter Farbcodierung, Plattformabhängigkeit und fehlender Dokumentation. Durch tiefgreifendes Refactoring, eine Docker-basierte, plattformunabhängige Architektur und den Wechsel auf einen robusten Direktsolver stieg die Erfolgsquote der FEM-Simulationen von ~80% auf rund 94%. Gleichzeitig wurden perceptual-uniforme Colormaps, Histogramme und eine komfortable Server-Steuerung im Unreal-Frontend ergänzt. Das Ergebnis ist ein stabiles, dokumentiertes Werkzeug, das Forschenden und Kliniker:innen den Weg in die praktische Anwendung ebnet.

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