Analyse von EDA-Daten in Python

Wie analysiere ich elektrodermale Aktivität mit Python? In diesem kurzen Blogbeitrag erkläre ich dir, wie du Python für die Auswertung und Analyse von EDA-Daten einsetzen kannst und welche Bibliotheken nützlich sind.

 

1. Python für Datenanalyse

Python ist eine beliebte Programmiersprache, die viele Bibliotheken zur Datenanalyse und -Verarbeitung bereitstellt. Für die Handhabung von Datenstrukturen wird vor allem die Bibliothek pandas verwendet. Die Bibliotheken numpy und scipy bieten Algorithmen und Funktionen zur Verarbeitung von wissenschaftlichen und technischen Daten.

Zur Visualisierung der Daten und relevanter Ergebnisse kann die Bibliothek matplotlib genutzt werden. Für jeden Schritt im Arbeitsfluss kann in Python ein Werkzeug mit der entsprechenden Funktionalität gefunden werden, um die Arbeit zumindest zu vereinfachen.

 

2. Python für EDA Daten

In einem aktuellen Projekt von MEDtech behandeln wir die Verarbeitung von Messdaten elektrodermaler Aktivität (EDA). Elektrodermale Aktivität ist die Veränderungen der Leitfähigkeit der Haut, welche von der Aktivität der Schweißdrüsen abhängt. Langfristig haben die Temperatur und die Aktivität des Probanden Einfluss.

Kurzfristig kann durch Stress eine Veränderung hervorgerufen werden. Wenn die Leitfähigkeit aufgrund von Stress variiert, ist es möglich eine Häufung lokaler Maxima zu beobachten. Für eine detaillierte Auswertung der Eigenschaften von EDA-Daten gibt es in Python mehrere Bibliotheken, die ich im folgenden kurz erklären möchte.

EDA Bibliotheken

Die Bibliothek pyEDA kann auf Github gefunden werden und bietet die Möglichkeit die EDA-Daten zu filtern und phasische und tonische Anteile der Daten zu unterscheiden. Wenn Messungen über einen längeren Zeitraum erhoben werden, kann der Grundwert wie oben beschrieben aufgrund von z.B. Temperatur stark wandern.

Der phasische Anteil des Signals zeigt diese Schwankungen über längere Zeit. Der tonische Anteil zeigt die lokalen Maxima und strebt an den Grundwert jedes Maximas zu normalisieren. Außerdem bietet die Bibliothek eine Liste mit allen lokalen Maxima.

Dieselben Funktionalitäten bietet die neurokit2 Bibliothek. Daneben bietet diese Bibliothek außerdem die Möglichkeit ein EDA-Signal zu simulieren, was sehr hilfreich ist, um den restlichen Python Code zur Datenanalyse und die Struktur zu testen.

Eine weitere Bibliothek zur Verarbeitung und Analyse von physiologischen Signalen ist pysiology.

 

3. Python Projekt Struktur

Generell sollte ein main.py Skript und ein functions.py Skript geführt werden. Dabei stellt das functions.py Skript die Funktionen zur Verfügung. Das main.py Skript gibt die Struktur vor und gibt die Möglichkeit Variablen anzupassen. Dieses Vorgehen hilft dabei den Code mit dem man alltäglich arbeitet kurz und übersichtlich zu halten.

Die nicht zu verändernden Funktionen sind auf das functions.py Skript ausgelagert. Diese Funktionen sollten im Sinne guter Programmierstandards übersichtlich und zu testen sein. Ein Test-Driven Development Ansatz sorgt dafür, dass die Funktionen klar differenziert werden können und einzeln und unabhängig voneinander getestet werden müssen.

Für ein Projekt dieser Art müssen gespeicherte EDA Daten geladen werden. Dabei muss man womöglich unterscheiden, ob man eine Datei auswerten will oder mehrere Dateien miteinander vergleicht. Wenn man eine Messung gemacht hat, kann man diese Messung auswerten, im späteren Verlauf des Projekts kann man alle bisherigen Messungen vergleichen.

In dem functions.py Skript werden die Funktionen zur Verfügung gestellt, um in beiden Fällen die jeweiligen Daten zu Laden und eine entsprechende Datenstruktur zur Verarbeitung anzulegen. In dem main.py Skript wird dann lediglich der Pfad zu den Dateien festgelegt und eine Variable geändert, welchen Modus man wählt.

Nach demselben Prinzip kann festgelegt werden, ob ein Signal simuliert werden soll, welche Daten visualisiert werden sollen und wie die Datenverarbeitung strukturiert ist. Es ist darauf zu achten, dass das Hauptskript übersichtlich ist und alle sich wiederholenden Strukturen als Funktionen ausgelagert werden.

 

4. Anwendungsbeispiel

Mithilfe der neurokit2 Bibliothek wurden in Abbildung 1 ein EDA Signal simuliert. In dieser Simulation sind die Hauptkomponenten eines EDA Signals zu erkennen. Die lokalen Maxima deuten auf elektrodermale Aktivität hin. Die Signale beinhalten meist einen Drift.

Simulierte EDA Rohdaten

Abbildung 1: Simulierte EDA Rohdaten

In Abbildung 2 wurde mithilfe des neurokit2 der Drift entfernt, um nur den phasischen Anteil des Signals betrachten zu können. Die insgesamte Amplitude des Signals ist nicht für die Verarbeitung relevant.

Phasischer Anteil des EDA Signals

Abbildung 2: Phasischer Anteil des EDA Signals

Im Rahmen der Verarbeitung werden außerdem generelle Informationen zum EDA Signal erzeugt, die in dem Format aus Abbildung 3 in einer Variable abgelegt werden.

Info Variable mit wichtigen Parametern des Signals

Abbildung 3: Info Variable mit wichtigen Parametern des Signals

Kontaktieren Sie uns!

Autor

  • Luca Stöhr

    Luca hat an der TH Lübeck seinen Bachelor in der Biomedizintechnik abgeschlossen und studiert aktuell Medizintechnik im Bereich der Bild- und Datenverarbeitung im Master an der FAU.

Auch interessant:

Zustandsautomaten modellieren – Ein Blick in die UML und SysML

Endliche Zustandsautomaten, auch bekannt als Zustandsmaschinen, State Machines oder State Diagrams, definieren die einnehmbaren Zustände eines Systems. Die Dokumentation kann sowohl tabellarisch als auch grafisch erfolgen. Da die Anzahl der Tabellenzeilen mit der Anzahl der Zustände stark ansteigt, ist es übersichtlicher, auf die grafische Lösung zurückzugreifen. Dieser Artikel soll zeigen,…
Getagged mit: , , ,

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert