Fmriprep - further preproc options that are recommended? (ica_aroma, etc) (task connectivity)

Hello all :slightly_smiling_face:

I try to preproc 3T fmri task data to do task connectivity analyses. I intend to use fmriprep to preproc the data. There are some optional preproc options I could use, but I am not yet familiar whether they are good practices. Anyone with experience in regards?

  1. ica_aroma. Would you strognly recommend using this approach to improve motion correction? What other steps would you recommend apart to denoise etc in fmriprep?

  2. I have seen that smoothing and scaling is not implemented by fmriprep and I will need to do that. By any else steps you happen to know I need to include for robust outcome?

Thanks very much in advance for any input!


1 Like

This is highly dependent on what kind of connectivity analysis you are doing, as well as your subject cohort. This paper and those cited within should help you decide.

I would say, based on the paper, that ACompCor+some head motion parameters+Framewise Displacement censoring should be good, especially if you have enough subjects and long acquisitions ( so you can spare losing some temporal degrees of freedom).

In regards to the second point, smoothing and denoising should be the only steps you need to apply to your images after fMRIPrep before beginning your 1st level analyses.

Hope this helps,


Thank you a lot Steven.

1)Temporal high pass filtering is another step I have to implement (I have seen that this is typically done in fmri preproc); it seems to me that fmriprep does not implement that already. Is this right?

-e.g. in a previous project preproc (matlab) I was running fslmaths for that:

%% temporal high pass filtering on MNI space data
    tmpfilt = 100;
    zcmd= sprintf('fslmaths %s -bptf %s -1 %s', ...
                funcSmooth, hp_sigma, funcHp);  %(-t in ip.c) Bandpass temporal filtering; nonlinear highpass and Gaussian linear lowpass (with sigmas in volumes, not seconds); set either sigma<0 to skip that filter`
  1. In my 1st level GLM, I understand I could use some AComCor dimensions (these are given in the .tsv files by fmriprep) + FD. Choice for which AComCor dimensions to include is a bit complicated.
  • I could add GSL (global signal); it is said to be controversial (see 4.4. section; paper you cited Mascali et al. 2021), though from that paper it seems positive to include it (vs not including it). Any view on that? :slight_smile:
  1. Yes, fmriprep does not implement filtering by default. Empirically, most connectivity studies tend to use bandpass filtering (as opposed just highpass) on the signal. fMRIPrep also does not filter confounds by default, but includes the cosine regressors to do so (which you need to include if using a compcor approach).

  2. As you mention there are several choices for acompcor. You can either choose the combined WM/CSF mask or separate WM and CSF masks, or choose top X components or 50% variance explained components. Again, this depends on your scanning parameters. For the combined vs. separate masks, this might just be a personal preference. If you have longer acquisitions and can spare temporal degrees of freedom, then you can opt for the 50% variance explained, if not choose top X (5 or 10 maybe)

  3. The paper will do a better job than me at explaining this, but regressing out GS may improve specificity in results, but also introduce distance-dependent artifacts. That is, connectivity between more distant regions will tend to be smaller, and closer regions will tend to have more connectivity. Whether or not you can tolerate this is based on your hypotheses and approaches. You might be best served looking at previous papers doing similar things to you to see what has been done before.

1 Like
  1. how long the acquisition has to be to be considered adequate for the 50% aCompCor you mention?

  2. Beginner-level question: is sth wrong by using both ICA_aroma and aCompCor+GS? Is it thought to be either the one or the other? or using both should not be a problem? I found this kind of open from the search I did so far.

In this post, Confounds from fmriprep: which one would you use for GLM?
I see this point: (no mention for ica_aroma here).


Mar '17

Opinions on this topic are divided and this is why FMRIPREP provides those regressors instead of cleaning up the data for you. I personally would include 6 motion parameters, FD, and aCompCor on run level and mean FD on group level (for both task and rest).

Thank you so much again.

There isn’t a good guideline about how long scans should be, also because the number of components that explains 50% variance is different across individuals. If in doubt, just use top 10.

I would suggest not using both, because a pipeline like that hasn’t been benchmarked, as far as I’m aware.

XCP_ABCD (XCP-ABCD: A Robust Postprocessing Pipeline of fMRI data — xcp_abcd version documentation) can take care of your filtering and denoising needs, employing prebuilt pipelines based on those used in the literature. Takes the guesswork out of it :slight_smile:


Thank you so much again Steven.

In continuation of our discussion, I found this post

where if I understand correctly, the developers state that by including the cosine columns from the confound.tsv file to the 1st level GLM high-pass filtering is applied (thus I conclude we do not need to apply separately high-pass filtering to the BOLD data by using another tool (e.g. afni, spm etc)).

Do you understand the same? :slight_smile:


You can either filter your data before the design matrix (apply a high- or band-pass filter to all signals, and then pass that filtered signal into the GLM) or include (as suggested above) the cosine filters in the GLM, which will act as a high-pass filter.

You can read more about the cosine regressors here: Outputs of fMRIPrep — fmriprep version documentation

Of note:

1 Like

Thank you so much again for all your input. It has been valuable.

I made some reading & decided to try the 24P + acompcor, via using the xcp_abcd as you suggested me :slight_smile:

I try:

    singularity --verbose run -B /storage/ /usr/local/bin/xcp_abcd-0.0.8.simg $input_dir $out_dir participant \
    --participant_label $subj \
    -w $workdir \
    -t itemobject \
    --smoothing 4 \
    -p acompcor \

However, I get this error:

usage: xcp_abcd [-h] [–version]
[-t TASK_ID] [-s] [–nthreads NTHREADS]
[–omp-nthreads OMP_NTHREADS] [–mem_gb MEM_GB]
[–use-plugin USE_PLUGIN] [-v] [–input-type INPUT_TYPE]
[–brain-template BRAIN_TEMPLATE] [–smoothing SMOOTHING]
[-d DUMMYTIME] [–lower-bpf LOWER_BPF] [–upper-bpf UPPER_BPF]
[–bpf-order BPF_ORDER] [–motion-filter-type {lp,notch}]
[–band-stop-min BAND_STOP_MIN]
[–band-stop-max BAND_STOP_MAX]
[–motion-filter-order MOTION_FILTER_ORDER] [-r HEAD_RADIUS]
[-f FD_THRESH] [–contigvol CONTIGVOL] [-w WORK_DIR]
[–clean-workdir] [–resource-monitor] [–notrack]
fmriprep_dir output_dir {participant}
xcp_abcd: error: the following arguments are required: analysis_level

My goal is to use both acompocor+24P. Did I get right that it should be as follow?

-p {24P,acompcor}

For now I omit this, since I already get an error with the simpler form (using only acompcor).

I tried using 24P (only, or both 24P+acompcor) as well as omitting the “participant”, or placing it in {} {participant}, but nothing has worked so far.

Any idea here?

Thank you in advance,


I think only one pipeline can be used at a time. Also see