LSLOutput¶
Stream data out via the Lab Streaming Layer.
This node will stream the incoming data out over the LSL network, so that other programs or computers can pick up the data stream. LSL is an easy-to-use way to make time-series data available on the network, and is usable from a wide range of prgramming languages and operating systems. Important: keep in mind that the streams that you are sending to LSL will remain visible until you reset the graph, so when you are using LSL Inlets to acquire data, remember that you may still have streams on the network that are easily confused with real device streams (e.g., when you use broad queries such as type='EEG'). When using this node it is worth noting that, in LSL, all data is a multi-channel time series; if your packets have additional axes, like frequency, feature, and so on, these will be automatically vectorized into a flat list of channels. Also, if you send data with multiple instances into this node, subsequent instances will be concatenated along time, so the data seen by receivers will appear continuous and non-segmented (channels by samples). Check out the below link for more information on LSL. Note that this node outputs a single LSL stream and therefore if the incoming data packet has multiple streams (aka chunks), it will generate an LSL stream for the first stream only. If your data has multiple streams, use ExtractStreams before this node to ensure an LSL stream is created for a specific stream in the data. More Info... Version 1.4.3
Ports/Properties¶
data¶
Data to send.
stream_name¶
Name of output data stream on LSL. Data will be published on LSL under this stream name.
source_id¶
Unique data source identifier. If you assign this, then data receivers will be able to auto-recover your stream if you stop and restart your sender pipeline under the same ID. It is highly recommended to set this.
stream_type¶
Type of output data stream. The LSL data stream will have this content-type. For control signals, the content type is usually Control. For raw data, content-types such as EEG, Gaze, Audio, VideoRaw, MoCap, etc. are commonly used. See also LSL documentation on content types for more info.
send_markers¶
Send markers. This will open a second output stream on LSL that transmits marker contents (if a marker chunk is present in your data), with content-type Markers.
marker_name¶
Name of the marker stream on LSL. Marker data will be published in LSL under this stream name.
marker_source_id¶
Unique data source identifier. If you assign this, then data receivers will be able to auto-recover your stream if you stop and restart your sender pipeline under the same ID. It is highly recommended to set this.
marker_field¶
The name of the field in the instance axis of the markers chunk to use to populate the marker data.
numeric_marker_precision¶
If the marker in marker_field is numeric then its conversion to string will use this many digits after the decimal place. (Tech note: uses numpy.around.)
srate¶
Override sampling rate. Allows you to override the nominal sampling rate of your stream. Usually the sampling rate will be correct, but e..g, if you collapse the data down to only one sample per tick (e.g., machine learning predictions), your sampling rate will equal NeuroPype's tick rate (25Hz by default).
chunk_len¶
Preferred output chunk length. This is the preferred length of chunks sent over the network, in samples. If set to 0, the same chunk length that goes into the node will be used.
max_buffered¶
Maximum output buffer length. The maximum amount of data that is buffered for network transmission, in seconds. If your connection is interrupted for longer than this, your receiver will lose some data. However, excessively long buffers provide little value for real-time processing, where it is of no use to receive outdated data (and can hurt if the recipient has to process all these data).
use_numpy_optimization¶
Use Numpy optimization in pylsl. You need a version of pylsl that supports this.
use_data_timestamps¶
Use timestamps in data. This requires that the timestamps originally stem from some LSL clock (e.g., LSLInput node). If False, the data will be timestamped at the time of output.
reset_if_labels_changed¶
Reset the outlet if the channel labels changed. If labels change in rapid succession, this can stall downstream inlets until the changes are complete.
ignore_signal_changed¶
Do not reset outlet in case of a signal-changed notification. Since resetting the outlet causes a hitch in downstream processing, this option allows not resetting the outlet when details of the preceding graph are changed. Note that this can cause crashes (e.g., if the channel count changes), but it will work in case of only changes to the signal content.
numeric_label_precision¶
The number of digits after the decimal to preserve when converting numeric axes (e.g . Frequency) to channel labels.
keep_singleton_axes¶
Keep singleton axes in the block when constructing LSL stream metadata including channel names. This parameter does not apply to TimeAxis and InstanceAxis.
separator¶
Separator character to use when folding together multiple non-time and non-instance axes. For example, setting this to : with 2 space axes will create new channels of the form Fp1:C4, and so on.
set_breakpoint¶
Set a breakpoint on this node. If this is enabled, your debugger (if one is attached) will trigger a breakpoint.
metadata¶
User-definable meta-data associated with the node. Usually reserved for technical purposes.