simBCI is an open source Brain-Computer Interface (BCI) simulator. It is released 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 BCI models and 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 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 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 BCI models and signal processing techniques.
The simBCI framework was developed in the scope of a collaborative research project between Inria and IMT-Atlantique (ex. Telecom Bretagne), France. The development was funded by the CominLabs LABEX project SABRE.
simBCI currently requires Matlab.
To use simBCI, it is helpful to have a basic understanding of BCI systems (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.
Illustration of the signal generation and classification pipelines as modeled by simBCI.
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, please cite the following short conference abstract in your publication,
J.T. Lindgren, A. Merlini, A. Lécuyer and F.P. Andriulli. SimBCI - Tool to simulate EEG and BCI. The 7th International BCI Meeting, Asilomar/CA, 2018. (accepted)
We will provide a reference to the journal paper after it has been accepted for publication.
Where is the documentation?
The code archive contains brief documentation (doc/) about the 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 (accepted) and the forthcoming journal paper (submitted) will describe the framework on a high level.
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).
Please use the gitlab 'Issues' tracker in the left sidebar to report issues, to wish for features, ask for further documentation, etc.
You can obtain the latest simBCI archive and example leadfields from here. A git repository is also available.
Note that simBCI examples require a leadfield model to work. A separate models archive contains some example leadfields that were kindly provided 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
simBCI is open source and provided as-is. We hope the framework benefits the EEG/BCI community. We currently have no resources to provide support or answer questions from the general public. For other academic or industrial queries, please contact