- Python
- NumPy
- SciPy
- SymPy
- TkInter
Aufgabe
Im medizinischen Alltag ist der Zugang zu vollständigen, durchgängigen Patientendaten häufig stark eingeschränkt. Besonders bei seltenen Krankheitsverläufen oder spezifischen Therapien fehlen oft ausreichende Fallzahlen oder kontinuierlich erfasste Daten über den gesamten Krankheitsverlauf hinweg. Diese Lücken erschweren es, zuverlässige Aussagen über den Erfolg medizinischer Maßnahmen zu treffen – insbesondere im Kontext evidenzbasierter Studien, die auf aussagekräftigen Vergleichsgruppen beruhen.
Ausgangspunkt des Projekts war daher die Idee, ein flexibles Framework zur Generierung sogenannter virtueller Patienten zu entwickeln. Virtuelle Patienten dienen als simulierte Modelle realer Krankheitsverläufe und ermöglichen es, medizinische Hypothesen auch dann zu überprüfen, wenn reale Daten fragmentiert oder unzureichend sind.
Geplant war, aus fragmentierten Datensätzen – sei es real oder synthetisch generiert – ein parametrisches Modell zu erzeugen, das die zeitliche Entwicklung relevanter klinischer Größen abbildet. Dieses Modell sollte unterschiedliche Modelltypen unterstützen (z.B. Funktionen oder Differentialgleichungen), automatisch Parameter fitting durchführen und Vorhersagen für beliebige Zeitpunkte ermöglichen. Zusätzlich war eine Methode vorgesehen, um die Unsicherheit der geschätzten Modellparameter zu quantifizieren.
Im Verlauf des Projekts lag der Fokus schließlich auf der Entwicklung einer modularen Fitting-App mit grafischer Benutzeroberfläche, die zentrale Komponenten des ursprünglichen Ziels umsetzt – insbesondere im Hinblick auf Modellanpassung, Erweiterbarkeit und Benutzerfreundlichkeit. Damit wurde ein solides Fundament geschaffen, auf dem zukünftige Erweiterungen – etwa zur Simulation virtueller Patientendaten – aufbauen können.
Umsetzung
Die technische Umsetzung unseres Projekts bestand im Kern darin, eine interaktive und benutzerfreundliche Anwendung zu entwickeln, mit der sich beliebige mathematische Modelle an reale oder synthetische Daten anpassen lassen. Dabei lag der Fokus auf einem modularen Aufbau und einer klar strukturierten grafischen Oberfläche, die auch Nutzer ohne tiefere Programmierkenntnisse befähigen sollte, Modellanpassungen durchzuführen.
Zu Beginn des Projekts standen grundlegende Fragen im Raum, wie etwa: Wie lässt sich eine vom Nutzer eingegebene mathematische Funktion als ausführbarer Code verarbeiten? Um dies zu ermöglichen, setzten wir auf die Library SymPy, mit der sich symbolische Ausdrücke in ausführbare Python-Funktionen umwandeln lassen. Diese Funktionen wurden anschließend mit Hilfe von SciPy an bereitgestellte Daten gefittet. Für die Datenverarbeitung kam Pandas zum Einsatz, die grafische Oberfläche wurde mit customTkinter realisiert.
Eine besondere Herausforderung war die Validierung und Interpretation der Benutzereingaben: Unser Programm prüft automatisch, ob die Eingaben sinnvoll und vollständig sind, bevor eine Berechnung gestartet wird. Auch komplexere Fehler, etwa unvollständige Datenformate oder unpassende Modellvariablen, werden abgefangen und mit verständlichen Fehlermeldungen kommuniziert. Ziel war es, ein robustes Verhalten zu ermöglichen – unser Programm reagiert also nicht mit Abstürzen, sondern bietet nachvollziehbare Hinweise.
Ein weiteres zentrales Feature war die Visualisierung: Die Qualität des Fits wird über Residuen grafisch dargestellt, was dem Nutzer eine intuitive Einschätzung der Modellgüte erlaubt.
Ein Aspekt, auf den wir stolz waren, ist die durchdachte Logging-Architektur. Wir haben benutzerdefinierte Handler und Formatter implementiert, die es ermöglichen, systematisch an allen relevanten Punkten im Programmverlauf Informationen zu protokollieren. Diese Logs werden in strukturierter Form gespeichert und sind optional auch im Debug-Modus direkt über die Kommandozeile sichtbar. Im Fehlerfall lässt sich so schnell nachvollziehen, an welcher Stelle der Prozess scheiterte – eine enorme Hilfe für spätere Wartung oder Erweiterung.
Auch wenn wir unser ursprünglich formuliertes Ziel – die vollständige Generierung virtueller Patientenkohorten – nicht erreicht haben, bildet das entwickelte Tool ein starkes Fundament dafür. Es ermöglicht die flexible Anpassung mathematischer Modelle an Daten und kann mit relativ geringem Aufwand um Komponenten zur Datensynthese und Simulation erweitert werden.
Unser besonderer Fokus auf Modularität, Benutzerfreundlichkeit und sowohl Erweiterbarkeit als auch Wartbarkeit macht das Projekt damit nicht nur funktional überzeugend, sondern auch langfristig anschlussfähig für komplexere medizinische Anwendungen.