simBCI is a Brain-Computer Interface (BCI) simulator for generating and testing EEG-like data. It is released as open source under the AGPL3 license.
simBCI is a framework for generating artificial EEG data and to test BCI classification methods. The combination allows the study of EEG models and BCI signal processing methods together in controllable conditions as each tested configuration features only what was specified. It is intended for offline analysis of EEG models and processing methods and to provide intuition about the behavior of such techniques. Ultimately, human experiments are necessary to validate the ideas arising from the use of the framework.
The potentially useful results produced by simBCI are classification accuracies (or bitrates) obtained in different conditions, and elementary visualizations of the data after different transformations. Although in principle it would be possible to extract models generated with simBCI and apply them online, or to run simBCI classification pipelines on real data, these have not been the design goals so far.
The target audience of simBCI are advanced students, researchers, teachers and engineers interested in obtaining a deeper understanding of the operation of EEG/BCI models and signal processing techniques.
The simBCI framework was developed in the scope of a collaborative research project SABRE between IMT-Atlantique (ex. Telecom Bretagne) and Inria, France. The development was funded by CominLabs LABEX.
simBCI currently requires Matlab.
To use simBCI it is helpful to have a basic understanding of BCI systems and EEG (i.e. to have atleast an introductory textbook level knowledge of BCI). Configuring simBCI benefits from understanding Matlab syntax. Adding or modifying components of the framework requires basic Matlab programming skill.
The core of simBCI defines the used conventions and provides a simulator that can execute large numbers of experiments. Typically the experiments are defined by specifications for the generative models and the classification (DSP) pipelines. These specifications can contain functions, subfunctions, and parameter sets. The simulator then instantiates these specifications to perform simulated experiments. The simBCI archive includes several example specifications and the functions they rely on. On the generative side we include a motor imagery model (Tangermann & al., BCI Competition IV), simple SSVEP and P300 models, various noise and artifact generators, and a volume conduction model. On the signal processing side, we include example pipelines based on e.g. CSP and inverse models (Cincotti & al., Edelman, Baxter & He). The framework can also route data to BCILAB for classification.
In a typical simulated BCI session, the framework is used to generate a timeline of events. The timeline is then rendered by specified generators that are configured to react to the events seen as triggers. If the generators are specified inside the cortical volume, their outputs are projected to the surface by a linear superposition model (leadfield) and mixed additively. The signal processing chains in BCI can be seen to perform inverse operations in the sense that they attempt to predict some of the original events, based on the EEG observations. The system can be asked to iterate different parameters ranges on both generation and testing side.
How do I cite it?
If you use simBCI in your academic work or wish to otherwise acknowledge it, please cite the following publication,
J.T. Lindgren, A. Merlini, A. Lécuyer and F.P. Andriulli. simBCI - A framework for studying BCI methods by simulated EEG. IEEE Transactions on Neural Systems and Rehabilitation Engineering, 2018. DOI: 10.1109/TNSRE.2018.2873061
simBCI evolved during 2015-2018 from the authors' Matlab scripts studying inverse models in the BCI scope. The first git commit was in March 2016 and the first public appearance of the framework was in the BCI Meeting, May 2018, Pacific Grove, US. (preprint of a short abstract)
Where is the documentation?
The code archive contains brief documentation (doc/) about the code entry points, the main concepts and the used conventions. The platform defines object classes that hopefully correspond to intuitively meaningful concepts (e.g. event timeline, head model, generator, pipeline, signal processor). We provide several simulation examples in the archive, as well as brief Matlab scripts showing how to do different entry-level tasks with the framework.
The BCI Meeting 2018 abstract (published) and the IEEE TNSRE 2018 journal paper (early access) describe the framework and related philosophy/caveats on a high level.
simBCI is not intended as an online BCI platform, but as an offline tool to study algorithms using data you can (hopefully) understand. If you wish to run real BCI experiments, you could consider for example OpenViBE.
Currently nonstationary generators are not modelled, but users can implement them if interested. You can also add statistical dependencies to the event timeline. This way, the rendered EEG will have statistical dependencies as well.
We do not currently include examples of connectivity modeling.
simBCI does not explicitly model stimulation or user guidance (e.g. P300 flashes, SSVEP flicker, or Graz-style left/right instructions in motor imagery). Perception is modelled on the level of generator reacting to an event. If needed, you can implement a perceptual model or a brain processing model in the reacting generator.
Feedback loops are not modelled (e.g. the effect of bad classifications on the generators).
We have collected a list of ideas that could be implemented to improve simBCI.
Please use the gitlab 'Issues' tracker in the left sidebar to report issues, to wish for features, ask for further documentation, etc.
Note that simBCI examples require a leadfield model to work. The example leadfields archive contains some applicable models that were kindly contributed by the CERL lab of IMT-Atlantique.
Jussi T. Lindgren / Inria - Design, architecture, components, development
Adrien Merlini / IMT - Components, fixes, experiments, testing
Axelle Pillain / IMT - Inverse methods and leadfields
Lyes Rahmouni / IMT - Leadfields
John-Erick Guzman / IMT - Some components for Edelman/He pipeline
The SABRE project was coordinated by
Anatole Lecuyer / Inria - BCI
Matthieu Arzel / IMT - Electronics
Francesco Andriulli / IMT - Computational electromagnetics (project lead)
simBCI is open source and provided as-is. We hope the framework benefits the EEG/BCI community. We currently have no dedicated resources to answer support-type questions but we may do so if time permits. For feedback or other academic or industrial queries, please contact
Contributions to the framework are welcome.
Enjoy the simulated experiments!