LSL Dokumentation - idea-labs/documentation GitHub Wiki

Lab Streaming Layer (LSL)

Allgemein

🔗 LSL ist ein Netzwerkprotokoll, das es erlaubt, Datenströme (streams) verschiedener Art (z.B., Audiosignale, EEG-Daten, Tastatureingaben), die in dasselbe Netzwerk gesendet werden, synchron zu erfassen. Dies geschieht dadurch, dass die Zeitstempel der einzelnen Signale und der einzelnen Quellen (z.B., Computer, Tablets) erfasst und angeglichen werden. Die so gleichzeitig aufgenommenen Daten besitzen einen einheitlichen Zeitstempel, selbst wenn die zeitliche Auflösung der einzelnen Signale unterschiedlich ist (z.B., Audio-Signal 44.1 kHz vs. 500 Hz EEG-Signal). Eine ausführliche Dokumentation von LSL kann hier abgerufen werden

Aufnahme-Software

Für das Aufzeichnen von gestreamten Daten bietet sich das Programm LabRecorder an, das Daten im xdf-Format aufzeichnet. Das Programm kann bei 🔗 GitHub heruntergeladen werden. Eine Installation ist nicht erforderlich, nur das Entpacken der Dateien und die App kann gestartet werden.

Im linken Panel wird angezeigt, welche Streams zur Zeit zur Verfügung stehen. Im Beispiel hier ist das ein TriggerStream von einem Desktop-PC. Im rechten Panel können der Speicherort und Datei-Namen für die Aufzeichnung angepasst werden. 🔗 BIDS steht für Brain Imaging Data Structure und ist ein Versuch, Forschungsdaten in einem einheitlichen Format zu benennen, um somit standardisierte Auswertungsroutinen (für öffentlich zugängliche) Daten möglich zu machen. Das BIDS-Format muss nicht zwingend eingehalten werden.

Senden von Event-Markern durch PsychoPy

🔗 PsychoPy ist eine Python-basierte Open-Source-Software zur Stimulus-Präsentation. Experimente können komplett Skript-basiert erstellt werden. Übersichtlicher wird es aber durch die Verwendung einer GUI, die mit dem Einschub von kleinen Skript-Elementen das Erstellen von sehr komplexe Szenarien ermöglicht.

Im Beispielexperiment, das 🔗 hier heruntergeladen werden kann, werden in einem klassischen Oddball-EEG-Experiment die Event-Marker per LSL verschickt. Die Versuchspersonen hören in schneller Reihenfolge 200 Tonsignale, von denen 30 ein relativ hoher Ton sind (Kammerton A) und 170 ein niedriger Ton sind. Der seltene Ton (der Oddball), auf den per Tastendruck reagiert werden soll, löst typischerweise ein starke P3-Komponente im EEG aus. Um im gleichzeitig erfassten EEG-Signal Segmente markieren zu können, in denen entweder ein tiefer oder ein hoher Ton präsentiert wurde, wird zu Beginn jedes Trials ein Marker gesendet (im Beispiel 5 für Oddball, 10 für Standard-Reiz).

Im PsychoPy Experiment wird in einem ersten Skript-Einschub (lsl_setup), der Stream für die zu sendenden Marker initialisiert. Das dafür notwendige Modul pylsl ist standarmäßig in PsychoPy installiert:

from pylsl import StreamInfo, StreamOutlet # import required module 

info = StreamInfo(name='TriggerStream', type='Markers', channel_count=1, 
	channel_format='int32', source_id='Example') # defines marker stream

outlet = StreamOutlet(info) # initialize stream.

Der Name in StreamInfo kann angepasst werden, um zwischen den TriggerStreams von mehreren Versuchspersonen zu unterscheiden.

Der zweite Skript-Einschub (lsl_send_marker) befindet sich im eigentichen Trial. Hier wird mit dem Befehl push_sample() für den vorher definierten outlet ein Wert gesendet, der sich aus der zu dem Stimulus gehörenden Wert (trigger_number, entweder 5 oder 10) ergibt. Es wird dann 5 ms gewartet und der Wert 0 gesendet.

outlet.push_sample(x=[trigger_number]) 
core.wait(0.005)
outlet.push_sample(x=[0])

Weitere Apps

Für zahlreiche Geräte (EEG, Eye-Tracker, Tastatur-Input etc.) gibt es bereits fertige Software-Lösungen, mit denen erhobene Daten per LSL gestreamt werden können werde. Hier eine 🔗 Übersicht. Allerdings müssen die Programme u.U. noch für das jeweilige Betriebssystem kompiliert werden. Ältere - bereits kompilierte Versionen einzelner Anwendungen, können 🔗 hier heruntergeladen werden.

Fortsetzung folgt ...

⚠️ **GitHub.com Fallback** ⚠️