.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/03_connectivity/plot_multi_subject_connectome.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code or to run this example in your browser via Binder. .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_examples_03_connectivity_plot_multi_subject_connectome.py: Group Sparse inverse covariance for multi-subject connectome ============================================================ This example shows how to estimate a connectome on a group of subjects using the group sparse inverse covariance estimate. .. include:: ../../../examples/masker_note.rst .. GENERATED FROM PYTHON SOURCE LINES 13-47 .. code-block:: Python import numpy as np from nilearn import plotting n_subjects = 4 # subjects to consider for group-sparse covariance (max: 40) def plot_matrices(cov, prec, title, labels): """Plot covariance and precision matrices, for a given processing.""" prec = prec.copy() # avoid side effects # Put zeros on the diagonal, for graph clarity. size = prec.shape[0] prec[list(range(size)), list(range(size))] = 0 span = max(abs(prec.min()), abs(prec.max())) # Display covariance matrix plotting.plot_matrix( cov, vmin=-1, vmax=1, title=f"{title} / covariance", labels=labels, ) # Display precision matrix plotting.plot_matrix( prec, vmin=-span, vmax=span, title=f"{title} / precision", labels=labels, ) .. GENERATED FROM PYTHON SOURCE LINES 48-50 Fetching datasets ------------------ .. GENERATED FROM PYTHON SOURCE LINES 50-61 .. code-block:: Python from nilearn.datasets import fetch_atlas_msdl, fetch_development_fmri msdl_atlas_dataset = fetch_atlas_msdl() rest_dataset = fetch_development_fmri(n_subjects=n_subjects) # print basic information on the dataset print( f"First subject functional nifti image (4D) is at: {rest_dataset.func[0]}" ) .. rst-class:: sphx-glr-script-out .. code-block:: none [fetch_atlas_msdl] Dataset found in /home/runner/nilearn_data/msdl_atlas [fetch_development_fmri] Dataset found in /home/runner/nilearn_data/development_fmri [fetch_development_fmri] Dataset found in /home/runner/nilearn_data/development_fmri/development_fmri [fetch_development_fmri] Dataset found in /home/runner/nilearn_data/development_fmri/development_fmri First subject functional nifti image (4D) is at: /home/runner/nilearn_data/development_fmri/development_fmri/sub-pixar123_task-pixar_space-MNI152NLin2009cAsym_desc-preproc_bold.nii.gz .. GENERATED FROM PYTHON SOURCE LINES 62-64 Extracting region signals ------------------------- .. GENERATED FROM PYTHON SOURCE LINES 64-95 .. code-block:: Python from nilearn.maskers import NiftiMapsMasker masker = NiftiMapsMasker( msdl_atlas_dataset.maps, resampling_target="maps", detrend=True, high_variance_confounds=True, low_pass=None, high_pass=0.01, t_r=rest_dataset.t_r, standardize="zscore_sample", standardize_confounds=True, memory="nilearn_cache", memory_level=1, verbose=1, ) subject_time_series = [] func_filenames = rest_dataset.func confound_filenames = rest_dataset.confounds for func_filename, confound_filename in zip( func_filenames, confound_filenames, strict=False ): print(f"Processing file {func_filename}") region_ts = masker.fit_transform( func_filename, confounds=confound_filename ) subject_time_series.append(region_ts) .. rst-class:: sphx-glr-script-out .. code-block:: none Processing file /home/runner/nilearn_data/development_fmri/development_fmri/sub-pixar123_task-pixar_space-MNI152NLin2009cAsym_desc-preproc_bold.nii.gz [NiftiMapsMasker.wrapped] Loading regions from '/home/runner/nilearn_data/msdl_atlas/MSDL_rois/msdl_rois.nii' [NiftiMapsMasker.wrapped] Finished fit ________________________________________________________________________________ [Memory] Calling nilearn.image.image.high_variance_confounds... high_variance_confounds('/home/runner/nilearn_data/development_fmri/development_fmri/sub-pixar123_task-pixar_space-MNI152NLin2009cAsym_desc-preproc_bold.nii.gz') __________________________________________high_variance_confounds - 0.5s, 0.0min ________________________________________________________________________________ [Memory] Calling nilearn.maskers.base_masker.filter_and_extract... filter_and_extract('/home/runner/nilearn_data/development_fmri/development_fmri/sub-pixar123_task-pixar_space-MNI152NLin2009cAsym_desc-preproc_bold.nii.gz', , { 'allow_overlap': True, 'clean_args': None, 'clean_kwargs': {}, 'cmap': 'CMRmap_r', 'detrend': True, 'dtype': None, 'high_pass': 0.01, 'high_variance_confounds': True, 'keep_masked_maps': False, 'low_pass': None, 'maps_img': '/home/runner/nilearn_data/msdl_atlas/MSDL_rois/msdl_rois.nii', 'mask_img': None, 'reports': True, 'smoothing_fwhm': None, 'standardize': 'zscore_sample', 'standardize_confounds': True, 't_r': 2, 'target_affine': array([[ 4., 0., 0., -78.], [ 0., 4., 0., -111.], [ 0., 0., 4., -51.], [ 0., 0., 0., 1.]]), 'target_shape': (40, 48, 35)}, confounds=[ array([[-0.174325, ..., -0.048779], ..., [-0.044073, ..., 0.155444]], shape=(168, 5)), '/home/runner/nilearn_data/development_fmri/development_fmri/sub-pixar123_task-pixar_desc-reducedConfounds_regressors.tsv'], sample_mask=None, dtype=None, memory=Memory(location=nilearn_cache/joblib), memory_level=1, verbose=1, sklearn_output_config=None) [NiftiMapsMasker.wrapped] Loading data from '/home/runner/nilearn_data/development_fmri/development_fmri/sub-pixar123_task-p ixar_space-MNI152NLin2009cAsym_desc-preproc_bold.nii.gz' [NiftiMapsMasker.wrapped] Resampling images [NiftiMapsMasker.wrapped] Extracting region signals [NiftiMapsMasker.wrapped] Cleaning extracted signals /home/runner/work/nilearn/nilearn/examples/03_connectivity/plot_multi_subject_connectome.py:89: DeprecationWarning: From release 0.14.0, confounds will be standardized using the sample std instead of the population std. _______________________________________________filter_and_extract - 4.5s, 0.1min Processing file /home/runner/nilearn_data/development_fmri/development_fmri/sub-pixar001_task-pixar_space-MNI152NLin2009cAsym_desc-preproc_bold.nii.gz [NiftiMapsMasker.wrapped] Loading regions from '/home/runner/nilearn_data/msdl_atlas/MSDL_rois/msdl_rois.nii' [NiftiMapsMasker.wrapped] Finished fit ________________________________________________________________________________ [Memory] Calling nilearn.image.image.high_variance_confounds... high_variance_confounds('/home/runner/nilearn_data/development_fmri/development_fmri/sub-pixar001_task-pixar_space-MNI152NLin2009cAsym_desc-preproc_bold.nii.gz') __________________________________________high_variance_confounds - 0.5s, 0.0min ________________________________________________________________________________ [Memory] Calling nilearn.maskers.base_masker.filter_and_extract... filter_and_extract('/home/runner/nilearn_data/development_fmri/development_fmri/sub-pixar001_task-pixar_space-MNI152NLin2009cAsym_desc-preproc_bold.nii.gz', , { 'allow_overlap': True, 'clean_args': None, 'clean_kwargs': {}, 'cmap': 'CMRmap_r', 'detrend': True, 'dtype': None, 'high_pass': 0.01, 'high_variance_confounds': True, 'keep_masked_maps': False, 'low_pass': None, 'maps_img': '/home/runner/nilearn_data/msdl_atlas/MSDL_rois/msdl_rois.nii', 'mask_img': None, 'reports': True, 'smoothing_fwhm': None, 'standardize': 'zscore_sample', 'standardize_confounds': True, 't_r': 2, 'target_affine': array([[ 4., 0., 0., -78.], [ 0., 4., 0., -111.], [ 0., 0., 4., -51.], [ 0., 0., 0., 1.]]), 'target_shape': (40, 48, 35)}, confounds=[ array([[-0.151677, ..., -0.057023], ..., [-0.206928, ..., 0.102714]], shape=(168, 5)), '/home/runner/nilearn_data/development_fmri/development_fmri/sub-pixar001_task-pixar_desc-reducedConfounds_regressors.tsv'], sample_mask=None, dtype=None, memory=Memory(location=nilearn_cache/joblib), memory_level=1, verbose=1, sklearn_output_config=None) [NiftiMapsMasker.wrapped] Loading data from '/home/runner/nilearn_data/development_fmri/development_fmri/sub-pixar001_task-p ixar_space-MNI152NLin2009cAsym_desc-preproc_bold.nii.gz' [NiftiMapsMasker.wrapped] Resampling images [NiftiMapsMasker.wrapped] Extracting region signals [NiftiMapsMasker.wrapped] Cleaning extracted signals /home/runner/work/nilearn/nilearn/examples/03_connectivity/plot_multi_subject_connectome.py:89: DeprecationWarning: From release 0.14.0, confounds will be standardized using the sample std instead of the population std. _______________________________________________filter_and_extract - 4.4s, 0.1min Processing file /home/runner/nilearn_data/development_fmri/development_fmri/sub-pixar002_task-pixar_space-MNI152NLin2009cAsym_desc-preproc_bold.nii.gz [NiftiMapsMasker.wrapped] Loading regions from '/home/runner/nilearn_data/msdl_atlas/MSDL_rois/msdl_rois.nii' [NiftiMapsMasker.wrapped] Finished fit ________________________________________________________________________________ [Memory] Calling nilearn.image.image.high_variance_confounds... high_variance_confounds('/home/runner/nilearn_data/development_fmri/development_fmri/sub-pixar002_task-pixar_space-MNI152NLin2009cAsym_desc-preproc_bold.nii.gz') __________________________________________high_variance_confounds - 0.4s, 0.0min ________________________________________________________________________________ [Memory] Calling nilearn.maskers.base_masker.filter_and_extract... filter_and_extract('/home/runner/nilearn_data/development_fmri/development_fmri/sub-pixar002_task-pixar_space-MNI152NLin2009cAsym_desc-preproc_bold.nii.gz', , { 'allow_overlap': True, 'clean_args': None, 'clean_kwargs': {}, 'cmap': 'CMRmap_r', 'detrend': True, 'dtype': None, 'high_pass': 0.01, 'high_variance_confounds': True, 'keep_masked_maps': False, 'low_pass': None, 'maps_img': '/home/runner/nilearn_data/msdl_atlas/MSDL_rois/msdl_rois.nii', 'mask_img': None, 'reports': True, 'smoothing_fwhm': None, 'standardize': 'zscore_sample', 'standardize_confounds': True, 't_r': 2, 'target_affine': array([[ 4., 0., 0., -78.], [ 0., 4., 0., -111.], [ 0., 0., 4., -51.], [ 0., 0., 0., 1.]]), 'target_shape': (40, 48, 35)}, confounds=[ array([[ 0.127944, ..., -0.087084], ..., [-0.015679, ..., -0.02587 ]], shape=(168, 5)), '/home/runner/nilearn_data/development_fmri/development_fmri/sub-pixar002_task-pixar_desc-reducedConfounds_regressors.tsv'], sample_mask=None, dtype=None, memory=Memory(location=nilearn_cache/joblib), memory_level=1, verbose=1, sklearn_output_config=None) [NiftiMapsMasker.wrapped] Loading data from '/home/runner/nilearn_data/development_fmri/development_fmri/sub-pixar002_task-p ixar_space-MNI152NLin2009cAsym_desc-preproc_bold.nii.gz' [NiftiMapsMasker.wrapped] Resampling images [NiftiMapsMasker.wrapped] Extracting region signals [NiftiMapsMasker.wrapped] Cleaning extracted signals /home/runner/work/nilearn/nilearn/examples/03_connectivity/plot_multi_subject_connectome.py:89: DeprecationWarning: From release 0.14.0, confounds will be standardized using the sample std instead of the population std. _______________________________________________filter_and_extract - 4.4s, 0.1min Processing file /home/runner/nilearn_data/development_fmri/development_fmri/sub-pixar003_task-pixar_space-MNI152NLin2009cAsym_desc-preproc_bold.nii.gz [NiftiMapsMasker.wrapped] Loading regions from '/home/runner/nilearn_data/msdl_atlas/MSDL_rois/msdl_rois.nii' [NiftiMapsMasker.wrapped] Finished fit ________________________________________________________________________________ [Memory] Calling nilearn.image.image.high_variance_confounds... high_variance_confounds('/home/runner/nilearn_data/development_fmri/development_fmri/sub-pixar003_task-pixar_space-MNI152NLin2009cAsym_desc-preproc_bold.nii.gz') __________________________________________high_variance_confounds - 0.5s, 0.0min ________________________________________________________________________________ [Memory] Calling nilearn.maskers.base_masker.filter_and_extract... filter_and_extract('/home/runner/nilearn_data/development_fmri/development_fmri/sub-pixar003_task-pixar_space-MNI152NLin2009cAsym_desc-preproc_bold.nii.gz', , { 'allow_overlap': True, 'clean_args': None, 'clean_kwargs': {}, 'cmap': 'CMRmap_r', 'detrend': True, 'dtype': None, 'high_pass': 0.01, 'high_variance_confounds': True, 'keep_masked_maps': False, 'low_pass': None, 'maps_img': '/home/runner/nilearn_data/msdl_atlas/MSDL_rois/msdl_rois.nii', 'mask_img': None, 'reports': True, 'smoothing_fwhm': None, 'standardize': 'zscore_sample', 'standardize_confounds': True, 't_r': 2, 'target_affine': array([[ 4., 0., 0., -78.], [ 0., 4., 0., -111.], [ 0., 0., 4., -51.], [ 0., 0., 0., 1.]]), 'target_shape': (40, 48, 35)}, confounds=[ array([[-0.089762, ..., -0.062316], ..., [-0.065223, ..., -0.022868]], shape=(168, 5)), '/home/runner/nilearn_data/development_fmri/development_fmri/sub-pixar003_task-pixar_desc-reducedConfounds_regressors.tsv'], sample_mask=None, dtype=None, memory=Memory(location=nilearn_cache/joblib), memory_level=1, verbose=1, sklearn_output_config=None) [NiftiMapsMasker.wrapped] Loading data from '/home/runner/nilearn_data/development_fmri/development_fmri/sub-pixar003_task-p ixar_space-MNI152NLin2009cAsym_desc-preproc_bold.nii.gz' [NiftiMapsMasker.wrapped] Resampling images [NiftiMapsMasker.wrapped] Extracting region signals [NiftiMapsMasker.wrapped] Cleaning extracted signals /home/runner/work/nilearn/nilearn/examples/03_connectivity/plot_multi_subject_connectome.py:89: DeprecationWarning: From release 0.14.0, confounds will be standardized using the sample std instead of the population std. _______________________________________________filter_and_extract - 4.4s, 0.1min .. GENERATED FROM PYTHON SOURCE LINES 96-98 Computing group-sparse precision matrices ----------------------------------------- .. GENERATED FROM PYTHON SOURCE LINES 98-110 .. code-block:: Python from nilearn.connectome import GroupSparseCovarianceCV gsc = GroupSparseCovarianceCV(verbose=1) gsc.fit(subject_time_series) from sklearn.covariance import GraphicalLassoCV gl = GraphicalLassoCV(verbose=True) gl.fit(np.concatenate(subject_time_series)) .. rst-class:: sphx-glr-script-out .. code-block:: none [Parallel(n_jobs=1)]: Done 5 out of 5 | elapsed: 6.7s finished [GroupSparseCovarianceCV.fit] [GroupSparseCovarianceCV] Done refinement 0 out of 4 [Parallel(n_jobs=1)]: Done 5 out of 5 | elapsed: 11.4s finished [GroupSparseCovarianceCV.fit] [GroupSparseCovarianceCV] Done refinement 1 out of 4 [Parallel(n_jobs=1)]: Done 5 out of 5 | elapsed: 13.3s finished [GroupSparseCovarianceCV.fit] [GroupSparseCovarianceCV] Done refinement 2 out of 4 [Parallel(n_jobs=1)]: Done 5 out of 5 | elapsed: 10.7s finished [GroupSparseCovarianceCV.fit] [GroupSparseCovarianceCV] Done refinement 3 out of 4 [GroupSparseCovarianceCV.fit] Final optimization [Parallel(n_jobs=1)]: Done 5 out of 5 | elapsed: 0.3s finished [GraphicalLassoCV] Done refinement 1 out of 4: 0s [Parallel(n_jobs=1)]: Done 5 out of 5 | elapsed: 0.4s finished [GraphicalLassoCV] Done refinement 2 out of 4: 0s [Parallel(n_jobs=1)]: Done 5 out of 5 | elapsed: 0.5s finished [GraphicalLassoCV] Done refinement 3 out of 4: 1s [Parallel(n_jobs=1)]: Done 5 out of 5 | elapsed: 0.4s finished [GraphicalLassoCV] Done refinement 4 out of 4: 1s .. raw:: html
GraphicalLassoCV(verbose=True)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.


.. GENERATED FROM PYTHON SOURCE LINES 111-113 Displaying results ------------------ .. GENERATED FROM PYTHON SOURCE LINES 113-148 .. code-block:: Python atlas_img = msdl_atlas_dataset.maps atlas_region_coords = plotting.find_probabilistic_atlas_cut_coords(atlas_img) labels = msdl_atlas_dataset.labels plotting.plot_connectome( gl.covariance_, atlas_region_coords, edge_threshold="90%", title="Covariance", display_mode="lzr", ) plotting.plot_connectome( -gl.precision_, atlas_region_coords, edge_threshold="90%", title="Sparse inverse covariance (GraphicalLasso)", display_mode="lzr", edge_vmax=0.5, edge_vmin=-0.5, ) plot_matrices(gl.covariance_, gl.precision_, "GraphicalLasso", labels) title = "GroupSparseCovariance" plotting.plot_connectome( -gsc.precisions_[..., 0], atlas_region_coords, edge_threshold="90%", title=title, display_mode="lzr", edge_vmax=0.5, edge_vmin=-0.5, ) plot_matrices(gsc.covariances_[..., 0], gsc.precisions_[..., 0], title, labels) plotting.show() .. rst-class:: sphx-glr-horizontal * .. image-sg:: /auto_examples/03_connectivity/images/sphx_glr_plot_multi_subject_connectome_001.png :alt: plot multi subject connectome :srcset: /auto_examples/03_connectivity/images/sphx_glr_plot_multi_subject_connectome_001.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/03_connectivity/images/sphx_glr_plot_multi_subject_connectome_002.png :alt: plot multi subject connectome :srcset: /auto_examples/03_connectivity/images/sphx_glr_plot_multi_subject_connectome_002.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/03_connectivity/images/sphx_glr_plot_multi_subject_connectome_003.png :alt: GraphicalLasso / covariance :srcset: /auto_examples/03_connectivity/images/sphx_glr_plot_multi_subject_connectome_003.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/03_connectivity/images/sphx_glr_plot_multi_subject_connectome_004.png :alt: GraphicalLasso / precision :srcset: /auto_examples/03_connectivity/images/sphx_glr_plot_multi_subject_connectome_004.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/03_connectivity/images/sphx_glr_plot_multi_subject_connectome_005.png :alt: plot multi subject connectome :srcset: /auto_examples/03_connectivity/images/sphx_glr_plot_multi_subject_connectome_005.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/03_connectivity/images/sphx_glr_plot_multi_subject_connectome_006.png :alt: GroupSparseCovariance / covariance :srcset: /auto_examples/03_connectivity/images/sphx_glr_plot_multi_subject_connectome_006.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/03_connectivity/images/sphx_glr_plot_multi_subject_connectome_007.png :alt: GroupSparseCovariance / precision :srcset: /auto_examples/03_connectivity/images/sphx_glr_plot_multi_subject_connectome_007.png :class: sphx-glr-multi-img .. rst-class:: sphx-glr-script-out .. code-block:: none /home/runner/work/nilearn/nilearn/examples/03_connectivity/plot_multi_subject_connectome.py:147: UserWarning: You are using the 'agg' matplotlib backend that is non-interactive. No figure will be plotted when calling matplotlib.pyplot.show() or nilearn.plotting.show(). You can fix this by installing a different backend: for example via pip install PyQt6 .. rst-class:: sphx-glr-timing **Total running time of the script:** (1 minutes 16.678 seconds) **Estimated memory usage:** 486 MB .. _sphx_glr_download_auto_examples_03_connectivity_plot_multi_subject_connectome.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: binder-badge .. image:: images/binder_badge_logo.svg :target: https://mybinder.org/v2/gh/nilearn/nilearn/0.13.1?urlpath=lab/tree/notebooks/auto_examples/03_connectivity/plot_multi_subject_connectome.ipynb :alt: Launch binder :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_multi_subject_connectome.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_multi_subject_connectome.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_multi_subject_connectome.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_