Massively univariate analysis of a calculation task from the Localizer dataset

This example shows how to use the Localizer dataset in a basic analysis. A standard Anova is performed (massively univariate F-test) and the resulting Bonferroni-corrected p-values are plotted. We use a calculation task and 20 subjects out of the 94 available.

The Localizer dataset contains many contrasts and subject-related variates. The user can refer to the plot_localizer_mass_univariate_methods.py example to see how to use these.

Warning

If you are using Nilearn with a version older than 0.9.0, then you should either upgrade your version or import maskers from the input_data module instead of the maskers module.

That is, you should manually replace in the following example all occurrences of:

from nilearn.maskers import NiftiMasker

with:

from nilearn.input_data import NiftiMasker
from nilearn._utils.helpers import check_matplotlib

check_matplotlib()

import matplotlib.pyplot as plt
import numpy as np

from nilearn import datasets
from nilearn.image import get_data
from nilearn.maskers import NiftiMasker

Load Localizer contrast

[fetch_localizer_calculation_task] Dataset found in
/home/runner/nilearn_data/brainomics_localizer

Mask data

nifti_masker = NiftiMasker(
    smoothing_fwhm=5, memory="nilearn_cache", memory_level=1, verbose=1
)
cmap_filenames = localizer_dataset.cmaps
fmri_masked = nifti_masker.fit_transform(cmap_filenames)
[NiftiMasker.wrapped] Loading data from
['/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S01/cmaps_Audit
ory&VisualCalculation.nii.gz',
'/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S02/cmaps_Audito
ry&VisualCalculation.nii.gz',
'/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S03/cmaps_Audito
ry&VisualCalculation.nii.gz',
'/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S04/cmaps_Audito
ry&VisualCalculation.nii.gz',
'/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S05/cmaps_Audito
ry&VisualCalculation.nii.gz',
'/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S06/cmaps_Audito
ry&VisualCalculation.nii.gz',
'/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S07/cmaps_Audito
ry&VisualCalculation.nii.gz',
'/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S08/cmaps_Audito
ry&VisualCalculation.nii.gz',
'/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S09/cmaps_Audito
ry&VisualCalculation.nii.gz',
'/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S10/cmaps_Audito
ry&VisualCalculation.nii.gz',
'/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S11/cmaps_Audito
ry&VisualCalculation.nii.gz',
'/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S12/cmaps_Audito
ry&VisualCalculation.nii.gz',
'/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S13/cmaps_Audito
ry&VisualCalculation.nii.gz',
'/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S14/cmaps_Audito
ry&VisualCalculation.nii.gz',
'/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S15/cmaps_Audito
ry&VisualCalculation.nii.gz',
'/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S16/cmaps_Audito
ry&VisualCalculation.nii.gz',
'/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S17/cmaps_Audito
ry&VisualCalculation.nii.gz',
'/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S18/cmaps_Audito
ry&VisualCalculation.nii.gz',
'/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S19/cmaps_Audito
ry&VisualCalculation.nii.gz',
'/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S20/cmaps_Audito
ry&VisualCalculation.nii.gz']
[NiftiMasker.wrapped] Computing mask
________________________________________________________________________________
[Memory] Calling nilearn.masking.compute_background_mask...
compute_background_mask([ '/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S01/cmaps_Auditory&VisualCalculation.nii.gz',
  '/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S02/cmaps_Auditory&VisualCalculation.nii.gz',
  '/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S03/cmaps_Auditory&VisualCalculation.nii.gz',
  '/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S04/cmaps_Auditory&VisualCalculation.nii.gz',
  '/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S05/cmaps_Auditory&VisualCalculation.nii.gz',
  '/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S06/cmaps_Auditory&VisualCalculation.nii.gz',
  '/home/runner/nilearn_data..., verbose=0)
__________________________________________compute_background_mask - 0.3s, 0.0min
[NiftiMasker.wrapped] Resampling mask
________________________________________________________________________________
[Memory] Calling nilearn.image.resampling.resample_img...
resample_img(<nibabel.nifti1.Nifti1Image object at 0x7f0f33f3b1f0>, target_affine=None, target_shape=None, copy=False, interpolation='nearest')
_____________________________________________________resample_img - 0.0s, 0.0min
[NiftiMasker.wrapped] Finished fit
________________________________________________________________________________
[Memory] Calling nilearn.maskers.nifti_masker.filter_and_mask...
filter_and_mask([ '/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S01/cmaps_Auditory&VisualCalculation.nii.gz',
  '/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S02/cmaps_Auditory&VisualCalculation.nii.gz',
  '/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S03/cmaps_Auditory&VisualCalculation.nii.gz',
  '/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S04/cmaps_Auditory&VisualCalculation.nii.gz',
  '/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S05/cmaps_Auditory&VisualCalculation.nii.gz',
  '/home/runner/nilearn_data/brainomics_localizer/brainomics_data/S06/cmaps_Auditory&VisualCalculation.nii.gz',
  '/home/runner/nilearn_data...,
<nibabel.nifti1.Nifti1Image object at 0x7f0f33f3b1f0>, { 'clean_args': None,
  'clean_kwargs': {},
  'cmap': 'gray',
  'detrend': False,
  'dtype': None,
  'high_pass': None,
  'high_variance_confounds': False,
  'low_pass': None,
  'reports': True,
  'runs': None,
  'smoothing_fwhm': 5,
  'standardize': False,
  'standardize_confounds': True,
  't_r': None,
  'target_affine': None,
  'target_shape': None}, memory_level=1, memory=Memory(location=nilearn_cache/joblib), verbose=1, confounds=None, sample_mask=None, copy=True, dtype=None, sklearn_output_config=None)
[NiftiMasker.wrapped] Loading data from <nibabel.nifti1.Nifti1Image object at
0x7f0f339d0250>
[NiftiMasker.wrapped] Smoothing images
[NiftiMasker.wrapped] Extracting region signals
[NiftiMasker.wrapped] Cleaning extracted signals
__________________________________________________filter_and_mask - 0.6s, 0.0min

Anova (parametric F-scores)

[NiftiMasker.inverse_transform] Computing image from signals
________________________________________________________________________________
[Memory] Calling nilearn.masking.unmask...
unmask(array([-0., ..., -0.], shape=(46815,)), <nibabel.nifti1.Nifti1Image object at 0x7f0f33f3b1f0>)
___________________________________________________________unmask - 0.2s, 0.0min

Visualization

from nilearn.plotting import plot_stat_map, show

# Various plotting parameters
plotted_slice = 45
threshold = -np.log10(0.1)  # 10% corrected

masked_pvals = np.ma.masked_less(
    get_data(neg_log_pvals_anova_unmasked), threshold
)

title = (
    "Negative $\\log_{10}$ p-values"
    "\n(Parametric + Bonferroni correction)"
    f"\n{(~masked_pvals.mask).sum()} detections"
)

# Plot Anova p-values
display = plot_stat_map(
    neg_log_pvals_anova_unmasked,
    threshold=threshold,
    display_mode="z",
    cut_coords=[plotted_slice],
    figure=plt.figure(figsize=(5, 6), facecolor="w"),
    cmap="inferno",
    vmin=threshold,
    title=title,
)

show()
plot localizer simple analysis

Total running time of the script: (0 minutes 4.168 seconds)

Estimated memory usage: 101 MB

Gallery generated by Sphinx-Gallery