shobrook / mvpa

Multivoxel pattern analysis (MVPA) tool for fMRI data

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CorrMVPA

CorrMVPA is a multi-voxel pattern analysis (MVPA) tool for fMRI data. It's adapted from the method described in Haxby et al., 2001, except searchlight spheres are analyzed instead of anatomical ROIs.

This tool allows users to identify areas of the brain containing multivariate representations, from which a pair of conditions can be decoded. CorrMVPA is similar to the searchlight tool provided by nilearn, but it's based on voxel-by-voxel correlations rather than SVM classifications. Such correlations are notably much faster to compute, and results for a full brain can be generated within 10 minutes on a commercial laptop, unlike the day(s) needed for the SVM searchlight.


Fig. 3 from Haxby et al. (2001)

Installation

CorrMVPA can be installed from PyPi:

$ pip install mvpa

Usage Example

Load the Haxby dataset

import pandas as pd
from nilearn.datasets import fetch_haxby

# We fetch 2nd subject from haxby datasets (which is default)
haxby_dataset = fetch_haxby()

fmri_filename = haxby_dataset.func[0]
labels = pd.read_csv(haxby_dataset.session_target[0], sep=" ")
y, session = labels["labels"], labels["chunks"]

Restrict to faces and houses

from nilearn.image import index_img

face_mask = y.isin(["face"]) # Condition A
house_mask = y.isin(["house"]) # Condition B

face_niimg = index_img(fmri_filename, face_mask)
house_niimg = index_img(fmri_filename, house_mask)

Prepare input data

from nilearn.image import load_img
from mvpa import even_odd_split

face_niimg_even, face_niimg_odd = even_odd_split(face_niimg)
house_niimg_even, house_niimg_odd = even_odd_split(house_niimg)

A = [(face_niimg_even, face_niimg_odd)]
B = [(house_niimg_even, house_niimg_odd)]
mask_img = load_img(haxby_dataset.mask)

Run correlation searchlight

from mvpa import correlation_searchlight, significance_map

score_maps = correlation_searchlight(A, B, mask_img, radius=3)
# t_map, p_map = significance_map(score_maps, mask_img) # Only used for datasets
                                                        # with multiple subjects

score_maps is a list of paths to NIfTI files, each representing the significance scores for each voxel in a subject's scan.

Visualize results

from nilearn.image import mean_img
from nilearn.plotting import plot_stat_map

score_map = load_img(score_maps[0])
plot_stat_map(score_map, bg_img=mean_img(fmri_filename), colorbar=True,
              display_mode="z")

Authors

CorrMVPA was created by Jonathan Shobrook and Paul C. Bogdan as part of our research in the Dolcos Lab at the Beckman Institute for Advanced Science and Technology.

About

Multivoxel pattern analysis (MVPA) tool for fMRI data

License:MIT License


Languages

Language:Python 100.0%