What does the derivatives=['func_preproc'] means in nilearn.datasets.fetch_abide_pcp

Hi,

I have three question.

Q1
I am confused what does it mean by the derivatives=[‘func_preproc’] when downloading data from ABIDE database. I can understand the other atlases like AAL or CC, but what does [‘func_preproc’] means here, as after downloading we have to apply the certain atlas.

Q2
Also in ABIDE website it is stated In every case the final resolution of the calculated derivatives is 3x3x3 mm3 and spatially smoothed with a 6-mm FWHM Gaussian kernel. Link to web-page is http://preprocessed-connectomes-project.org/abide/Pipelines.html, please look for section derivates, Approach 1 and 2.

I would like to know whether the resolution of 3x3x3 and smoothing of 6FWHM is done for all the dataset irrespective of atlas used, the data is already convert to MNI space, so we don’t have convert it to MNI space again or (ourself) by using this function fetch_icbm152_2009 from nilearn.

So in that case, I can use various atlases like Glasser, basc64,basc122,basc197, and Power 264 just by using the function glassermasker = NiftiLabelsMasker(labels_img='Glasser_masker.nii.gz',detrend=True, standardize=True) glassermasker.fit(), and no need to explicitly define the resolution or smoothing factor.

Q3
What is the effect of detrend and standardize for classification task ASD vs NC?

Thanks in advance.

Hi @Saqib_Mamoon

  1. derivatives=[‘func_preproc’] refers to functional preprocessed data from the ABIDE PCP data. There are other derivatives you can access by setting different options as detailed in the docstrings here: https://github.com/nilearn/nilearn/blob/960589c05b6a63ed612f2feb749ee4472e5aa43f/nilearn/datasets/func.py#L1052-L1058.

  2. I’m not sure I understand the exact question but yes all the resulting derivatives are in 3mm³ resolution, smoothed, and in MNI space. Just the approach to get the derivatives in that state differed. Note that in Nilearn you cannot “convert” (usually called “register”) the data into another space but only resample to get the data into the same resolution. So indeed if your data and atlas are in the same space (like MNI) and the same resolution (affine) and shape you do not need to explicitly define anything to resample the data to the atlas or vice versa. In any case the masker will by default check the resolution and do resampling by default if needed.

  3. Detrend and standardize are two parameters passed to signal.clean to improve the SNR by removing noise related to the scanner (e.g. drift) or the subject (e.g. physiological, motion). Usually they are needed to some extent because fMRI data is noisy but this is depending on what you are trying to do. In terms of needing to define it here in addition to what was already done to the preprocessed data from ABIDE, I’m not sure. It’s not my area of expertise so perhaps someone else can further chime in on this (@bthirion ).

Hope this was of some help!

1 Like

@ymzayek Thank you for the detailed answer.

So this means that the atlases provided by the ABIDE like ALL is ready to be used parcellation, or we can think they already provided the maskd the ALL on “func_preproc”.

This means that when using nilearn, we should have both atlases and data in MNI space, as data is already in MNI space, 3x3x3 and smoothed, so we also have to take the atlas to MNI space, I understand to this point.

My next question, as Glasser atlas’s default resolution is 1x1x1, how could I resample the atlas resolution to 3x3x3 before transformation on data.

Thanks a lot.

@Saqib_Mamoon

So this means that the atlases provided by the ABIDE like ALL is ready to be used parcellation, or we can think they already provided the maskd the ALL on “func_preproc”.

To be clear, as part of their derivatives data they provide extracted mean time series from several atlases like AAL. And yes this is all done in standard MNI space. The altases themselves you can get from other sources or in the case of AAL simply use datasets.fetch_atlas_aal from nilearn.

My next question, as Glasser atlas’s default resolution is 1x1x1, how could I resample the atlas resolution to 3x3x3 before transformation on data.

You can use nilearn.image.resample_img or nilearn.image.resample_to_img if you have a target image with the resolution you want to resample any atlas that is already in the space you want. This example: Resample an image to a template - Nilearn and this part of the user guide 9.2. Manipulating images: resampling, smoothing, masking, ROIs… - Nilearn might also be helpful

1 Like

@ymzayek Thank you for great explanation. I got it and it does answer my question. Moreover, I looked through the documentation link your shared and I also went through the documentation of the NiftiLabelsMasker, it states in the documentation that setting resampling_target = ‘data’ will resmaple the atlas is reshaped to data. Will this do the same resampling as in nilearn.image.resample_img or nilearn.image.resample_to_img. Like resampling atlas 1x1x1 resolution to data’s 3x3x3 resolution.
Thanks a lot.
Regards,