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_backend.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 package containing modules for BCI processing.
- bci_controller.py - module for reading online/offline data, windowing, processing, and classifying EEG signals
- classification.py - module containing relevant classifiers for bci_controller, classifiers can be extended to meet individual needs
- signal_processing.py- module containing functions for the processing of bci_controller
- 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
Metadata
Release files for bci-essentials 0.3.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| bci_essentials-0.3.2.tar.gz | 65.4 kB | Without provenance | Details for bci_essentials-0.3.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| bci_essentials-0.3.2-py3-none-any.whl | Python 3 | none | any | Details for bci_essentials-0.3.2-py3-none-any.whl |
Total release size: 156.8 kB
Release files / bci_essentials-0.3.2.tar.gz
| Download URL | bci_essentials-0.3.2.tar.gz |
|---|---|
| Size | 65.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3d7cf3a3538c94e16d25d27e82a3a2443fecacd14161cb0f6a3a3bd81458b82f
|
|
BLAKE2b-256 checksum How to use checksums |
6e8d9a6aea5c9f06935741a9462dcab55307969280e72599b427bf999c504d3c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.20
|
Release files / bci_essentials-0.3.2-py3-none-any.whl
| Download URL | bci_essentials-0.3.2-py3-none-any.whl |
|---|---|
| Size | 91.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7b926f997427bd68c27ecbd2b3f4a5622ad0c6a49ccc1e46d503c87f276dd70d
|
|
BLAKE2b-256 checksum How to use checksums |
16f1a60a77614c39362481a429ba91aa6d96b7a1891a583bb178d7413ab1b694
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.20
|
Security for bci-essentials 0.3.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.