neurocaps.analysis.CAP.caps2surf#
- CAP.caps2surf(output_dir=None, suffix_title=None, suffix_filename=None, show_figs=True, fwhm=None, fslr_density='32k', method='linear', save_stat_maps=False, fslr_giftis_dict=None, knn_dict=None, progress_bar=False, **kwargs)[source]#
Project CAPs onto Surface Plots.
Plot CAPs on cortical surface in fsLR space. First, projects CAPs onto parcellation to create NifTI statistical maps by replacing parcellation labels with their corresponding CAP (cluster centroid) values. Then uses neuromap’s
transforms.mni152_to_fslrfor coordinate system transformation and surfplot’sPlotfor plotting. If CAPs where already converted to NifTI (self.caps2niftis()) and transformed to fsLR GifTI files externally, these can be provided using thefslr_giftis_dictparameter and will be converted to a suitable format for surfplot’sPlotfunction by using neuromap’stransforms.fslr_to_fslrfunction. Note, if groups were given when theCAPclass was initialized, surface plots will be generated per CAP for all groups.- Parameters:
output_dir (
strorNone, default=None) – Directory to save plots as png files. The directory will be created if it does not exist. If None, plots will not be saved.suffix_title (
strorNone, default=None) – Appended to the title of each plot.suffix_filename (
strorNone, default=None) – Appended to the filename of each saved plot ifoutput_diris provided.show_figs (
bool, default=True) – Display figures.fwhm (
floatorNone, defualt=None) – Strength of spatial smoothing to apply (in millimeters) to the statistical map prior to interpolating from MNI152 space to fsLR surface space. Uses Nilearn’simage.smooth.fslr_density ({"4k", "8k", "32k", "164k"}, default="32k") – Density of the fsLR surface when converting from MNI152 space to fsLR surface. Options are “32k” or “164k”. If using
fslr_giftis_dictoptions are “4k”, “8k”, “32k”, and “164k”.method ({"linear", "nearest"}, default="linear") – Interpolation method to use when converting from MNI152 space to fsLR surface or from fsLR to fsLR. Options are “linear” or “nearest”.
save_stat_maps (
bool, default=False) – If True, saves the statistical map for each CAP for all groups as a Nifti1Image ifoutput_diris provided.fslr_giftis_dict (
dictorNone, default=None) –Dictionary specifying precomputed GifTI files in fsLR space for plotting statistical maps. This parameter should be used if the statistical CAP NIfTI files (can be obtained using
self.caps2niftis()) were converted to GifTI files using a tool such as Connectome Workbench. The dictionary structure is:{ "GroupName": { "CAP-Name": { "lh": "path/to/left_hemisphere_gifti", "rh": "path/to/right_hemisphere_gifti" } } }
”GroupName” can be “All Subjects” or any specific group name. CAP-Name is the name of the CAP. This parameter allows plotting without re-running the analysis. Initialize the CAP class and use this method if using this parameter.
knn_dict (
dict[str, int | bool], default=None) –Use KNN (k-nearest neighbors) interpolation with reference atlas masking to fill in non-background coordinates that are assigned zero. Useful when custom parcellation does not project well from volumetric to surface space. The following subkeys are recognized:
”k”: An integer (Default=1). Determines the number of nearest neighbors to consider.
”reference_atlas”: A string (Default=”Schaefer”). Specifies the atlas to use for reference masking (“AAL” or “Schaefer”).
”resolution_mm”: An integer (Default=1). Spatial resolution of the Schaefer parcellation (in millimeters) (1 or 2).
”remove_labels”: A list or array (Default=None). The label IDs as integers of the regions in the parcellation to not interpolate.
Note: This method is applied before the
fwhm.progress_bar (
bool, default=False) –If True, displays a progress bar.
Added in version 0.21.5.
**kwargs –
Additional parameters to pass to modify certain plot parameters. Options include:
dpi:
int, default=300 – Dots per inch for the plot.title_pad:
int, default=-3 – Padding for the plot title.cmap:
strorcallable, default=”cold_hot” – Colormap to be used for the plot.cbar_kws:
dict, default={“location”: “bottom”, “n_ticks”: 3} – Customize colorbar. Refer to_add_colorbarsforsurfplot.plotting.Plotin Surfplot’s Plot Documentation for valid parameters.alpha:
float, default=1 – Transparency level of the colorbar.as_outline:
bool, default=False – Plots only an outline of contiguous vertices with the same value.outline_alpha:
float, default=1 – Transparency level of the colorbar for outline ifas_outlineis True.zero_transparent:
bool, default=True – Turns vertices with a value of 0 transparent.size:
tuple, default=(500, 400) – Size of the plot in pixels.layout:
str, default=”grid” – Layout of the plot.zoom:
float, default=1.5 – Zoom level for the plot.views: {“lateral”, “medial”} or
list[{"lateral", "medial}], default=[“lateral”, “medial”] – Views to be displayed in the plot.brightness:
float, default=0.5 – Brightness level of the plot.figsize:
tupleorNone, default=None – Size of the figure.scale:
tuple, default=(2, 2) – Scale factors for the plot.surface: {“inflated”, “veryinflated”}, default=”inflated” – The surface atlas that is used for plotting. Options are “inflated” or “veryinflated”.
color_range:
tupleorNone, default=None – The minimum and maximum value to display in plots. For instance, (-1, 1) where minimum value is first. If None, the minimum and maximum values from the image will be used.bbox_inches:
strorNone, default=”tight” – Alters size of the whitespace in the saved image.
- Returns:
self
Note
Parcellation Approach:
parcel_approachmust have the “maps” subkey containing the path to th NifTI file of the parcellation.Assumptions: This function assumes that the background label for the parcellation is zero and that is in MNI space. Additionally, the following approach is taken to map the each CAP onto the parcellation
atlas = nib.load(atlas_file) atlas_fdata = atlas.get_fdata() # Create array of zeroes with same dimensions as atlas atlas_array = np.zeros_like(atlas_fdata) # Get array containing all labels in parcellation in order target_array = sorted(np.unique(atlas_fdata)) # Start at 1 to avoid assigment to the background label for indx, value in enumerate(cap_vector, start=1): atlas_array[atlas_fdata == target_array[indx]] = value