Python backend for bci-essentials
Project description
bci-essentials-python
This repository contains python modules and scripts for the processing of EEG-based BCI. These modules are specifically designed to be equivalent whether run offline or online.
Related packages
The front end for this package can be found in bci-essentials-unity
Getting Started
- Wiki – More detailed installation instructions and tutorials.
- API documentation
Installation
BCI Essentials requires Python 3.9 or later. To install for Windows, MacOS or Linux:
pip install bci-essentials
On some systems, it may be necessary to install liblsl. Alternatively, use the Conda environment to set up dependencies that are not provided by pip:
conda env create -f ./environment.yml
conda activate bci
Offline processing
Offline processing can be done by running the corresponding offline test script (ie. mi_offline_test.py, p300_offline_test.py, etc.) Change the filename in the script to point to the data you want to process.
python examples/mi_offline_test.py
Online processing
Online processing requires an EEG stream and a marker stream. These can both be simulated using eeg_lsl_sim.py and marker_lsl_sim.py. Real EEG streams come from a headset connected over LSL. Real marker streams come from the application in the Unity frontend. Once these streams are running, simply begin the backend processing script ( ie. mi_unity_backend.py, p300_unity_bakend.py, etc.) It is recommended to save the EEG, marker, and response (created by the backend processing script) streams using Lab Recorder for later offline processing.
python examples/mi_unity_backend.py
Directory
bci_essentials
The main packge containing modules for BCI processing.
- eeg_data.py - module for reading online/offline data, windowing, processing, and classifying EEG signals
- classification.py - module containing relevant classifiers for eeg_data, classifiers can be extended to meet individual needs
- signal_processing.py- module containing functions for the processing of EEG_data
- visuals.py - module for visualizing EEG data
examples
Example scripts and data.
- data - directory containing example data for P300, MI, and SSVEP
- eeg_lsl_sim.py - creates a stream of mock EEG data from an xdf file
- marker_lsl_sim.py - creates a stream of mock marker data from an xdf file
- mi_offline_test.py - runs offline MI processing on previously collected EEG and marker streams
- mi_unity_backend.py - runs online MI processing on live EEG and marker streams
- p300_offline_test.py - runs offline P300 processing on previously collected EEG and marker streams
- p300_unity_backend.py - runs online P300 processing on live EEG and marker streams
- ssvep_offline_test.py - runs offline SSVEP processing on previously collected EEG and marker streams
- ssvep_unity_backend_tf.py - runs online SSVEP processing on live EEG and marker streams, does not require training
- ssvep_unity_backend.py - runs online SSVEP processing on live EEG and marker streams
- switch_offline_test.py - runs offline switch state processing on previously collected EEG and marker streams
- switch_unity_backend.py - runs online switch state processing on live EEG and marker streams
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for bci_essentials-0.1.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 819a946bea9af8ef1bb1d561b02677d3df2e1dda457b7cf9f73baa9831f0b7a8 |
|
MD5 | 8b01fc0238183e9a41c44d5aacd45e2f |
|
BLAKE2b-256 | 3ac04dd65e1a21254e814bfe103bcdfad58c807b42190ef66c033d1ec8ab25a2 |