def clusterWard(img=None, nParcels=1024, standardize=False, smoothing=2): """ Does brain parcellation using Ward clustering img -> nii image variable or path nParcels (optional, default 1024) -> number of parcels standardize (optional, default True) -> smoothing (optional, default 2) -> int - the higher it is, the more smoothing is applied Returns a tuple containing: 1 -> Float array of shape (nScans, nParcels) - contains the parcel signals 2 -> The ward parcellation object """ ward = Parcellations(method='ward', n_parcels=nParcels, standardize=standardize, smoothing_fwhm=smoothing, memory='nilearn_cache', memory_level=1, verbose=1) ward.fit(img) img = ward.transform(img) return img, ward
mean_func_img = mean_img(dataset.func[0]) # Compute common vmin and vmax vmin = np.min(get_data(mean_func_img)) vmax = np.max(get_data(mean_func_img)) plotting.plot_epi(mean_func_img, cut_coords=cut_coords, title='Original (%i voxels)' % original_voxels, vmax=vmax, vmin=vmin, display_mode='xz') # A reduced dataset can be created by taking the parcel-level average: # Note that Parcellation objects with any method have the opportunity to # use a `transform` call that modifies input features. Here it reduces their # dimension. Note that we `fit` before calling a `transform` so that average # signals can be created on the brain parcellations with fit call. fmri_reduced = ward.transform(dataset.func) # Display the corresponding data compressed using the parcellation using # parcels=2000. fmri_compressed = ward.inverse_transform(fmri_reduced) plotting.plot_epi(index_img(fmri_compressed, 0), cut_coords=cut_coords, title='Ward compressed representation (2000 parcels)', vmin=vmin, vmax=vmax, display_mode='xz') # As you can see below, this approximation is almost good, although there # are only 2000 parcels, instead of the original 60000 voxels ######################################################################### # Brain parcellations with KMeans Clustering # ------------------------------------------
mean_func_img = mean_img(dataset.func[0]) # Compute common vmin and vmax vmin = np.min(mean_func_img.get_data()) vmax = np.max(mean_func_img.get_data()) plotting.plot_epi(mean_func_img, cut_coords=cut_coords, title='Original (%i voxels)' % original_voxels, vmax=vmax, vmin=vmin, display_mode='xz') # A reduced dataset can be created by taking the parcel-level average: # Note that Parcellation objects with any method have the opportunity to # use a `transform` call that modifies input features. Here it reduces their # dimension. Note that we `fit` before calling a `transform` so that average # signals can be created on the brain parcellations with fit call. fmri_reduced = ward.transform(dataset.func) # Display the corresponding data compressed using the parcellation using # parcels=2000. fmri_compressed = ward.inverse_transform(fmri_reduced) plotting.plot_epi(index_img(fmri_compressed, 0), cut_coords=cut_coords, title='Ward compressed representation (2000 parcels)', vmin=vmin, vmax=vmax, display_mode='xz') # As you can see below, this approximation is almost good, although there # are only 2000 parcels, instead of the original 60000 voxels ######################################################################### # Brain parcellations with KMeans Clustering # ------------------------------------------
vmin = np.min(mean_func_img.get_data()) vmax = np.max(mean_func_img.get_data()) plotting.plot_epi(mean_func_img, cut_coords=cut_coords, title='Original (%i voxels)' % original_voxels, vmax=vmax, vmin=vmin, display_mode='xz') # A reduced dataset can be created by taking the parcel-level average: # Note that Parcellation objects with any method have the opportunity to # use a `transform` call that modifies input features. Here it reduces their # dimension. Note that we `fit` before calling a `transform` so that average # signals can be created on the brain parcellations with fit call. fmri_reduced = ward.transform(dataset.func) # Display the corresponding data compressed using the parcellation using # parcels=2000. fmri_compressed = ward.inverse_transform(fmri_reduced) plotting.plot_epi(index_img(fmri_compressed, 0), cut_coords=cut_coords, title='Ward compressed representation (2000 parcels)', vmin=vmin, vmax=vmax, display_mode='xz') # As you can see below, this approximation is almost good, although there # are only 2000 parcels, instead of the original 60000 voxels #########################################################################