Here we discover how to work with 3D and 4D niimgs.
Nilearn comes with functions that download public data from Internet
Let’s first check where the data is downloaded on our disk:
from nilearn import datasets print('Datasets are stored in: %r' % datasets.get_data_dirs())
Datasets are stored in: ['/home/parietal/gvaroqua/nilearn_data']
Let’s now retrieve a motor contrast from a localizer experiment
tmap_filenames = datasets.fetch_localizer_button_task()['tmaps'] print(tmap_filenames)
tmap_filenames is a list of filenames. We need to take the first one
tmap_filename = tmap_filenames
The file contains a 3D volume, we can easily visualize it as a statistical map:
from nilearn import plotting plotting.plot_stat_map(tmap_filename)
Visualizing works better with a threshold
We can download resting-state networks from the Smith 2009 study on correspondance between rest and task
rsn = datasets.fetch_atlas_smith_2009()['rsn10'] print(rsn)
It is a 4D nifti file. We load it into the memory to print its shape.
from nilearn import image print(image.load_img(rsn).shape)
(91, 109, 91, 10)
We can retrieve the first volume (note that Python indexing starts at 0):
first_rsn = image.index_img(rsn, 0) print(first_rsn.shape)
(91, 109, 91)
first_rsn is a 3D image.
We can then plot it
If we want to plot all the volumes in this 4D file, we can use iter_img to loop on them.
Then we give a few arguments to plot_stat_map in order to have a more compact display.
plotting.show is useful to force the display of figures when running outside IPython
To recap, neuroimaging images (niimgs as we call them) come in different flavors:
More details about the input formats in nilearn for 3D and 4D images is given in the documentation section: Inputing data: file names or image objects.
Functions accept either 3D or 4D images, and we need to use on the one hand nilearn.image.index_img or nilearn.image.iter_img to break down 4D images into 3D images, and on the other hand nilearn.image.concat_imgs to group a list of 3D images into a 4D image.
Total running time of the script: ( 0 minutes 5.673 seconds)