This is a Python package for performing representational similarity analysis (RSA) using MNE-Python data structures. The RSA is computed using a “searchlight” approach.
Read more on RSA in the paper that introduced the technique:
Nikolaus Kriegeskorte, Marieke Mur and Peter Bandettini (2008). Representational similarity analysis - connecting the branches of systems neuroscience. Frontiers in Systems Neuroscience, 2(4). https://doi.org/10.3389/neuro.06.004.2008
The package can be installed either through PIP:
pip install mne-rsa
or through conda using the conda-forge channel:
conda install -c conda-forge mne-rsa
This is what the package can do for you:
- Compute RDMs on arbitrary data
- Compute RDMs in a searchlight across:
- vertices/voxels and samples (source level)
- sensors and samples (sensor level)
- vertices/voxels only (source level)
- sensors only (sensor level)
- samples only (source and sensor level)
- Use cross-validated distance metrics when computing RDMs
- And of course: compute RSA between RDMs
Supported metrics for comparing RDMs:
- Spearman correlation (the default)
- Pearson correlation
- Kendall’s Tau-A
- Linear regression (when comparing multiple RDMs at once)
- Partial correlation (when comparing multiple RDMs at once)
compute_rdm(data, metric='correlation', **kwargs)
rsa_stcs(stcs, rdm_model, src, spatial_radius=0.04, temporal_radius=0.1,
stc_rdm_metric='correlation', stc_rdm_params=dict(),
rsa_metric='spearman', y=None, n_folds=1, sel_vertices=None,
tmin=None, tmax=None, n_jobs=1, verbose=False)
rsa_evokeds(evokeds, rdm_model, noise_cov=None, spatial_radius=0.04,
temporal_radius=0.1, evoked_rdm_metric='correlation',
evoked_rdm_params=dict(), rsa_metric='spearman', y=None,
n_folds=1, picks=None, tmin=None, tmax=None, n_jobs=1,
verbose=False)
rsa_epochs(epochs, rdm_model, noise_cov=None, spatial_radius=0.04,
temporal_radius=0.1, epochs_rdm_metric='correlation',
epochs_rdm_params=dict(), rsa_metric='spearman', y=None,
n_folds=1, picks=None, tmin=None, tmax=None, n_jobs=1,
verbose=False)
rsa_nifti(image, rdm_model, spatial_radius=0.01,
image_rdm_metric='correlation', image_rdm_params=dict(),
rsa_metric='spearman', y=None, n_folds=1, roi_mask=None,
brain_mask=None, n_jobs=1, verbose=False)
Basic example on the EEG “kiloword” data:
import mne
import rsa
data_path = mne.datasets.kiloword.data_path(verbose=True)
epochs = mne.read_epochs(data_path + '/kword_metadata-epo.fif')
# Compute the model RDM using all word properties
rdm_model = rsa.compute_rdm(epochs.metadata.iloc[:, 1:].values)
evoked_rsa = rsa.rsa_epochs(epochs, rdm_model,
spatial_radius=0.04, temporal_radius=0.01,
verbose=True)
For quick guides on how to do specific things, see the examples.
Finally, there is the API reference documentation.
I mainly wrote this package to perform RSA analysis on MEG data. Hence, integration functions with MNE-Python are provided. There is also some integration with nipy for fMRI.
This package aims to be fast and memory efficient. An important design feature is that under the hood, everything operates on generators. The searchlight routines produce a generator of RDMs which are consumed by a generator of RSA values. Parallel processing is also supported, so you can use all of your CPU cores.
Here is how to set up the package as a developer:
git clone git@github.com:wmvanvliet/mne-rsa.git
cd mne-rsa
python setup.py develop --user
.. toctree:: :hidden: Examples <auto_examples/index> API Reference <api>