Bridge between neural signal datasets and machine learning
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


alt tag

Version : 0.1.0


Brainpipe is a toolbox dedicated to the analysis and classification of neuro-physiological signals. Brainpipe allows for the extraction of a wide range of features from brain signals and the application of a wide range of machine learning algorithms based on scikit-learn. For now the available processing and feature extraction functionlities are tailored to EEG, MEG, intracranial EEG (SEEG & ECoG) signals. Brainpipe can be used for single and multi-feature classification and provides a flexible and easiliy extendable tool for neuroscience data mining. Checkout the documentation and see intructions for installation.

Brainpipe is a package primarily written by Etienne Combrisson, as part of his PhD research work, suprvised by Prof Karim Jerbi (CoCo Lab, Psychology Department, University of Montreal, QC, Canada) and Prof Aymeric Guillot (University Claude Bernard Lyon 1, Inter-University Laboratory of Human Movement Biology, Lyon, France).

The current version of Brainpipe consists of the following modules:

  • bpstudy : managed features / file database
  • Extracts anatomical information using mni/talairach coordinates of sites (e.g. electrode locations in intracranial EEG)
  • feature : extracts a wide range of features, including: power, phase, phase-amplitude coupling
  • Optimized classification and feature combination using a range of techniques based on scikit-learn




Create and manage many studies, without carrying of path, variable names or settings. Everything is going to be self organized in the clearest way as possible.


This module give the physiological informations of intracranial recordings. It will return the brodmann area, the gyrus, the lobe and the hemisphere for a given list of electrodes' coordonates. The results should be the same as Talairach Daemon


Extract time resolved features from original signals. Here's the current list of extractable features:

  • Filtered signal (using butterworth / bessel / eegfilt filters)
  • Power (hilbert / wavelet)
  • Phase (based on hilbert transform)
  • Phase-amplitude coupling (10 methods) with a variety of normalizations and surrogates computing methods
  • Entropy (coming soon)
  • Kurtosis (coming soon)
  • Fractales, C1 // C2 (very futur)


Classify each time resolved features using parallel computing. There is also several methods to evaluate the statistical significiance of decoding accuracies:

  • binomial
  • permutations
    • shuffle labels
    • full randomization
    • intra-class shuffling

The classification modules provide the basics classifiers and cross-validations implemented in scikit-learn with an optimization for large array (which is convenient for features classification). The classification module also include:

  • Time generalization : generalize the decoding performance of features across time


This module include several well known methods for computing multi-features. It includes :

  • Select all the features
  • forward / backward / exhaustif features selection
  • statistical selection (same methods as in classification module)
  • nbest : select nbest features All this methods can be used individually or they can be combined in a sequential way. An other interesting feature, is that for a given set of features, you can define groups and do a multi-features inside each group.



v0.0 compatible with python 3.x only (Still in development, final codes versions in xPOO for instance)


stereotactic electroencephalography, sEEG, iEEG, intracranial, micro-electrodes, ecog, power, phase-amplitude coupling, pac, phase, entropy, permutations, classification, brodmann, python, time generalization