psychopy-lsl
psychopy-lsl copied to clipboard
Use LabStreamingLayer to handle triggers with PsychoPy.
PsychoPy event markers with LabStreamingLayer
This repository demonstrates how to send event markers in PsychoPy with LabStreamingLayer (LSL).
See coregui.md to learn how to receive markers in Coregui with LSL.
Example scripts
-
example_coder.py
is a minimal PsychoPy "experiment". Two words alternate on the screen, and a marker is sent whenever a word appears. This was coded manually. -
example_builder.py
behaves in the same way asexample_coder.py
, but it was created in the builder and uses stimuli and markers defined inexample_builder.csv
General steps
- Install
pylsl
(the Python interface of LSL). - Include code in your Python script to send markers.
Install LabStreamingLayer
See the PyPI page.
pip install pylsl
In your PsychoPy code
Refer to pylsl.py for documentation on pylsl
functions.
# ...
from pylsl import StreamInfo, StreamOutlet
info = StreamInfo(name='my_stream_name', type='Markers', channel_count=1,
channel_format='int32', source_id='uniqueid12345')
# Initialize the stream.
outlet = StreamOutlet(info)
# ...
- Include markers wherever you need them.
# ...
outlet.push_sample(x=[100])
# ...
- The example above sends a marker 100.
x
must be a list with a length equal tochannel_count
(specified inStreamInfo
). It is easiest to use integers as markers. - You can also include dynamic marker names (see example script). If you are using a trial loop in PsychoPy, include marker values in a column in the spreadsheet used for the loop. If the column header is "marker", the code would be
outlet.push_sample(x=[marker])
.