Note
Go to the end to download the full example code. or to run this example in your browser via Binder
A introduction tutorial to fMRI decoding¶
Here is a simple tutorial on decoding with nilearn. It reproduces the Haxby et al.[1] study on a face vs cat discrimination task in a mask of the ventral stream.
This tutorial is meant as an introduction to the various steps of a decoding
analysis using Nilearn meta-estimator: nilearn.decoding.Decoder
It is not a minimalistic example, as it strives to be didactic. It is not meant to be copied to analyze new data: many of the steps are unnecessary.
Retrieve and load the fMRI data from the Haxby study¶
First download the data¶
The nilearn.datasets.fetch_haxby
function will download the
Haxby dataset if not present on the disk, in the nilearn data directory.
It can take a while to download about 310 Mo of data from the Internet.
from nilearn import datasets
# By default 2nd subject will be fetched
haxby_dataset = datasets.fetch_haxby()
# 'func' is a list of filenames: one for each subject
fmri_filename = haxby_dataset.func[0]
# print basic information on the dataset
print(f"First subject functional nifti images (4D) are at: {fmri_filename}")
[get_dataset_dir] Dataset found in /home/runner/nilearn_data/haxby2001
First subject functional nifti images (4D) are at: /home/runner/nilearn_data/haxby2001/subj2/bold.nii.gz
Visualizing the fMRI volume¶
One way to visualize a fMRI volume is
using nilearn.plotting.plot_epi
.
We will visualize the previously fetched fMRI
data from Haxby dataset.
Because fMRI data are 4D
(they consist of many 3D EPI images),
we cannot plot them directly using nilearn.plotting.plot_epi
(which accepts just 3D input).
Here we are using nilearn.image.mean_img
to
extract a single 3D EPI image from the fMRI data.
from nilearn import plotting
from nilearn.image import mean_img
plotting.view_img(mean_img(fmri_filename, copy_header=True), threshold=None)
/home/runner/work/nilearn/nilearn/.tox/doc/lib/python3.9/site-packages/numpy/core/fromnumeric.py:758: UserWarning: Warning: 'partition' will ignore the 'mask' of the MaskedArray.
a.partition(kth, axis=axis, kind=kind, order=order)
/home/runner/work/nilearn/nilearn/.tox/doc/lib/python3.9/site-packages/nilearn/image/resampling.py:489: UserWarning: The provided image has no sform in its header. Please check the provided file. Results may not be as expected.
warnings.warn(