pybci.Utils.PseudoDevice import PseudoDeviceController

class PseudoDeviceController(is_multiprocessing=True, markerConfigStrings=['Marker1', 'Marker2', 'Marker3'], pseudoMarkerDataConfigs=None, createMarkers=True, pseudoMarkerConfig=PseudoMarkerConfig, dataStreamName='PyBCIPseudoDataStream', dataStreamType='EMG', sampleRate=250, channelCount=8, logger=Logger(Logger.INFO), log_queue=None)

The PseudoDeviceController class is designed for generating pseudo EMG signals and markers, simulating a Lab Streaming Layer (LSL) device. It supports both multiprocessing and threading environments, depending on the is_multiprocessing parameter.

Parameters:
  • is_multiprocessing – bool: Indicates if the class instance operates in a multiprocessing environment. Default is True.

  • markerConfigStrings – list(str): Marker strings for generating marker data. Default is [“Marker1”, “Marker2”, “Marker3”].

  • pseudoMarkerDataConfigs – list: Configurations for pseudo EMG signals. Uses default configurations if None.

  • createMarkers – bool: Flag to determine if markers should be created. Default is True.

  • pseudoMarkerConfig – PseudoMarkerConfig: Settings for pseudo markers.

  • dataStreamName – string: Name for the data stream.

  • dataStreamType – string: Data stream type (e.g., “EMG”).

  • sampleRate – int: Sample rate in Hz.

  • channelCount – int: Number of channels.

  • logger – Logger: Logger object for logging.

  • log_queue – multiprocessing.Queue or queue.Queue: Queue object for logging.

Note

The sample rate is not exact and may vary with CPU strain.

BeginStreaming()

Initiates streaming of pseudo EMG data and markers. This method should be called to start the device’s operation.

StopStreaming()

Stops the data and marker streaming, signaling the termination.

log_message(level='INFO', message='')

Logs a message to the log_queue or directly, based on the operation mode.

Parameters:
  • level – string: Log message level (e.g., “INFO”, “ERROR”).

  • message – string: Message to log.

Note

Ensure a graceful shutdown by calling StopStreaming().

Note

The PseudoDeviceController is suitable for simulations and testing purposes. It may require specific setup for multiprocessing or threading environments.