.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/03_connectivity/plot_atlas_comparison.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_atlas_comparison.py: Comparing connectomes on different reference atlases ==================================================== This examples shows how to turn a :term:`parcellation` into connectome for visualization. This requires choosing centers for each parcel or network, via :func:`nilearn.plotting.find_parcellation_cut_coords` for :term:`parcellation` based on labels and :func:`nilearn.plotting.find_probabilistic_atlas_cut_coords` for :term:`parcellation` based on probabilistic values. In the intermediary steps, we make use of :class:`nilearn.maskers.MultiNiftiLabelsMasker` and :class:`nilearn.maskers.MultiNiftiMapsMasker` to extract time series from nifti objects from multiple subjects using different :term:`parcellation` atlases. The time series of all subjects of the brain development dataset are concatenated and given directly to :class:`nilearn.connectome.ConnectivityMeasure` for computing parcel-wise correlation matrices for each atlas across all subjects. Mean correlation matrix is displayed on glass brain on extracted coordinates. # author: Amadeus Kanaan .. include:: ../../../examples/masker_note.rst .. GENERATED FROM PYTHON SOURCE LINES 31-33 Load atlases ------------ .. GENERATED FROM PYTHON SOURCE LINES 33-41 .. code-block:: Python from nilearn import datasets yeo = datasets.fetch_atlas_yeo_2011() print( "Yeo atlas nifti image (3D) with 17 parcels and liberal mask " f" is located at: {yeo['thick_17']}" ) .. rst-class:: sphx-glr-script-out .. code-block:: none Yeo atlas nifti image (3D) with 17 parcels and liberal mask is located at: /home/himanshu/nilearn_data/yeo_2011/Yeo_JNeurophysiol11_MNI152/Yeo2011_17Networks_MNI152_FreeSurferConformed1mm_LiberalMask.nii.gz .. GENERATED FROM PYTHON SOURCE LINES 42-44 Load functional data -------------------- .. GENERATED FROM PYTHON SOURCE LINES 44-56 .. code-block:: Python data = datasets.fetch_development_fmri(n_subjects=10) print( "Functional nifti images (4D, e.g., one subject) " f"are located at : {data.func[0]!r}" ) print( "Counfound csv files (of same subject) are located " f"at : {data['confounds'][0]!r}" ) .. rst-class:: sphx-glr-script-out .. code-block:: none Functional nifti images (4D, e.g., one subject) are located at : '/home/himanshu/nilearn_data/development_fmri/development_fmri/sub-pixar123_task-pixar_space-MNI152NLin2009cAsym_desc-preproc_bold.nii.gz' Counfound csv files (of same subject) are located at : '/home/himanshu/nilearn_data/development_fmri/development_fmri/sub-pixar123_task-pixar_desc-reducedConfounds_regressors.tsv' .. GENERATED FROM PYTHON SOURCE LINES 57-59 Extract coordinates on Yeo atlas - parcellations ------------------------------------------------ .. GENERATED FROM PYTHON SOURCE LINES 59-104 .. code-block:: Python from nilearn.connectome import ConnectivityMeasure from nilearn.maskers import MultiNiftiLabelsMasker # ConenctivityMeasure from Nilearn uses simple 'correlation' to compute # connectivity matrices for all subjects in a list connectome_measure = ConnectivityMeasure( kind="correlation", standardize="zscore_sample", ) # useful for plotting connectivity interactions on glass brain from nilearn import plotting # create masker using MultiNiftiLabelsMasker to extract functional data within # atlas parcels from multiple subjects using parallelization to speed up the # computation masker = MultiNiftiLabelsMasker( labels_img=yeo["thick_17"], standardize="zscore_sample", standardize_confounds="zscore_sample", memory="nilearn_cache", n_jobs=2, ) # extract time series from all subjects time_series = masker.fit_transform(data.func, confounds=data.confounds) # calculate correlation matrices across subjects and display correlation_matrices = connectome_measure.fit_transform(time_series) # Mean correlation matrix across 10 subjects can be grabbed like this, # using connectome measure object mean_correlation_matrix = connectome_measure.mean_ # grab center coordinates for atlas labels coordinates = plotting.find_parcellation_cut_coords(labels_img=yeo["thick_17"]) # plot connectome with 80% edge strength in the connectivity plotting.plot_connectome( mean_correlation_matrix, coordinates, edge_threshold="80%", title="Yeo Atlas 17 thick (func)", ) .. image-sg:: /auto_examples/03_connectivity/images/sphx_glr_plot_atlas_comparison_001.png :alt: plot atlas comparison :srcset: /auto_examples/03_connectivity/images/sphx_glr_plot_atlas_comparison_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 105-111 Plot a directed connectome - asymmetric connectivity measure ------------------------------------------------------------ In this section, we use the lag-1 correlation as the connectivity measure, which leads to an asymmetric connectivity matrix. The plot_connectome function accepts both symmetric and asymmetric matrices, but plot the latter as a directed graph. .. GENERATED FROM PYTHON SOURCE LINES 111-143 .. code-block:: Python import numpy as np # Define a custom function to compute lag correlation on the time series def lag_correlation(time_series, lag): n_subjects = len(time_series) _, n_features = time_series[0].shape lag_cor = np.zeros((n_subjects, n_features, n_features)) for subject, serie in enumerate(time_series): for i in range(n_features): for j in range(n_features): if lag == 0: lag_cor[subject, i, j] = np.corrcoef( serie[:, i], serie[:, j] )[0, 1] else: lag_cor[subject, i, j] = np.corrcoef( serie[lag:, i], serie[:-lag, j] )[0, 1] return np.mean(lag_cor, axis=0) # Compute lag-0 and lag-1 correlations and plot associated connectomes for lag in [0, 1]: lag_correlation_matrix = lag_correlation(time_series, lag) plotting.plot_connectome( lag_correlation_matrix, coordinates, edge_threshold="90%", title=f"Lag-{lag} correlation", ) .. rst-class:: sphx-glr-horizontal * .. image-sg:: /auto_examples/03_connectivity/images/sphx_glr_plot_atlas_comparison_002.png :alt: plot atlas comparison :srcset: /auto_examples/03_connectivity/images/sphx_glr_plot_atlas_comparison_002.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/03_connectivity/images/sphx_glr_plot_atlas_comparison_003.png :alt: plot atlas comparison :srcset: /auto_examples/03_connectivity/images/sphx_glr_plot_atlas_comparison_003.png :class: sphx-glr-multi-img .. rst-class:: sphx-glr-script-out .. code-block:: none /home/himanshu/Desktop/nilearn_work/nilearn/examples/03_connectivity/plot_atlas_comparison.py:136: UserWarning: 'adjacency_matrix' is not symmetric. A directed graph will be plotted. plotting.plot_connectome( .. GENERATED FROM PYTHON SOURCE LINES 144-146 Load probabilistic atlases - extracting coordinates on brain maps ----------------------------------------------------------------- .. GENERATED FROM PYTHON SOURCE LINES 146-152 .. code-block:: Python dim = 64 difumo = datasets.fetch_atlas_difumo( dimension=dim, resolution_mm=2, legacy_format=False ) .. GENERATED FROM PYTHON SOURCE LINES 153-155 Iterate over fetched atlases to extract coordinates - probabilistic ------------------------------------------------------------------- .. GENERATED FROM PYTHON SOURCE LINES 155-191 .. code-block:: Python from nilearn.maskers import MultiNiftiMapsMasker # create masker using MultiNiftiMapsMasker to extract functional data within # atlas parcels from multiple subjects using parallelization to speed up the # # computation masker = MultiNiftiMapsMasker( maps_img=difumo.maps, standardize="zscore_sample", standardize_confounds="zscore_sample", memory="nilearn_cache", n_jobs=2, ) # extract time series from all subjects time_series = masker.fit_transform(data.func, confounds=data.confounds) # calculate correlation matrices across subjects and display correlation_matrices = connectome_measure.fit_transform(time_series) # Mean correlation matrix across 10 subjects can be grabbed like this, # using connectome measure object mean_correlation_matrix = connectome_measure.mean_ # grab center coordinates for probabilistic atlas coordinates = plotting.find_probabilistic_atlas_cut_coords( maps_img=difumo.maps ) # plot connectome with 85% edge strength in the connectivity plotting.plot_connectome( mean_correlation_matrix, coordinates, edge_threshold="85%", title=f"DiFuMo with {dim} dimensions (probabilistic)", ) plotting.show() .. image-sg:: /auto_examples/03_connectivity/images/sphx_glr_plot_atlas_comparison_004.png :alt: plot atlas comparison :srcset: /auto_examples/03_connectivity/images/sphx_glr_plot_atlas_comparison_004.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none /home/himanshu/Desktop/nilearn_work/nilearn/nilearn/maskers/multi_nifti_maps_masker.py:224: UserWarning: memory_level is currently set to 0 but a Memory object has been provided. Setting memory_level to 1. return self.transform_imgs( .. rst-class:: sphx-glr-timing **Total running time of the script:** (1 minutes 48.750 seconds) **Estimated memory usage:** 1815 MB .. _sphx_glr_download_auto_examples_03_connectivity_plot_atlas_comparison.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.10.4?urlpath=lab/tree/notebooks/auto_examples/03_connectivity/plot_atlas_comparison.ipynb :alt: Launch binder :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_atlas_comparison.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_atlas_comparison.py ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_