Dieses Projekt ist im Rahmen einer Masterarbeit zum Thema Herzratenvariabilität bei Narkolepsie entstanden. Ziel ist, eine Analyse der Herzratenvariabilität aus Polysomnografiedaten zu ermöglichen und sie anschließend als Features für verschiedene Machine Learning Algorithmen zu nutzen.
Dieses Projekt beinhaltet insgesamt fünf Notebooks:
Für das Feature Engeneering(abhängig vom System der Ursprungsdaten):
- HRV_analysis-alice5.ipynb
- HRV_analysis-nihon-kohden.ipynb
- HRV_analysis-somnomedics.ipynb
Für das Testing:
- testing.ipynb
Für das ML:
- statistik_ml.ipynb
Zur Auführung des Projekts, muss Jupyter Notebook installiert sein, eine Anleitung findet sich hier.
Darüber hinaus muss Python 3 auf dem System oder in der Virtuellen Umgebung installiert sein, je nach gewählter Ausführungsart von Jupyter Notebook.
Beispieldaten finden sich für die Hypnogramme im Repository:
- Somnomedics = "Schlafprofil.txt"
- Nihon Kohden = "Nihon_hypno_anon.html"
- Alice5 = "STADIUManonym_alice.csv"
Eine Beispiel EDF kann unter zenodo heruntergeladen werden, passend für den Ablauf von Somnomedics. Für die beiden anderen kann leider aus Datenschutzgründen keine Beispieldatei bereitgestellt werden.
Im folgenden soll ein möglicher Abalauf der Analyse und Auswertung der Schlafstadien und des Hypnogramms anhand der somnomedics
Dateien gezeigt werden.
- Die heruntergeldenen Beispieldaten von Zonedo werden in einen Ordner Probanden gespeichert (falls nicht, Pfad im Jupyter Notebook anpassen).
- danach wird die Datei
hrv_analysis-somnomedics.ipynb
aufgerufen - Um das Script durchlaufen zu lassen wird in Jupyter Notebook auf das play Symbol gedrückt.
Um die mit Doctest erstellten Tests auszuführen. ist das Vorgehen ähnlich wie oben beschrieben:
- Für die Tests werden die Beispieldaten benötigt.
- Es wird die Datei
testing.ipynb
geöffnent, die den Aufruf der Doctest beeinhaltet. - Um die Tests zu starten, wird in Jupyter Notebook auf das play Symbol gedrückt.
doctest.testmod(prepedf.FILE_NAME, verbose=False)
Der Auruf der Tests hat noch ein zusätzliches verbose
Attribute, was auf False
gestellt ist. Wird der Parameter geändert, so wird bei jeden Testfall, welcher durchläuft wird, der Test selbst, das zu erwartene Ergebnis und das Ergebnis selbst angezeigt.
Beim Lesen von einer CSV Datei mit der Panadas Bibliothek kann es zu einem möglichen Fehler kommen, dass die übergebenen Paramater
delimiter
und sep
nicht beide vorhanden sein dürfen. Der Fehler ist ggf. auf unterschiedliche Python und Paket
Versionen zurückzuführen.
Dazu in die Funktion def fileopener(filename):
gehen, die sich in der preperation_hypno.py
befindet und folgende Zeile:
return pd.read_csv(filename, skiprows=5, delimiter=";", sep=" ", names=["Time", "Stadium"], header=0)
durch diese ersetzen:
return pd.read_csv(filename, skiprows=5, delimiter=";", names=["Time", "Stadium"], header=0)
Das Projekt steht unter der MIT Lizenz.