Preprocessing pipeline for multiband multi-echo resting state fMRI

Hello Experts,

I was hoping someone could help me with my resting state fMRI preprocessing pipeline. I have acquired multiband multi-echo (3 echos) fMRI data and given my lack of experience with this type of data I wanted to see if someone here could offer advice. I’m a bit of a novice using Python based tools and scripting so I will probably be using a combination of SPM and AFNI.

This data comes off an GE PET/MR 3T scanner and I’ve already processed and analysed the PET data which involved segmentation of the T1 images with CAT12. Based on some reading and other publications I thought I would:

  1. Remove first 4-5 TRs (TR = 2 s) from all echos (3dTcat)
  2. De-spike data in each echo (3dDespike)
  3. Estimate motion from first echo and apply to all echos (3dvolreg)
  4. Run #tedana with a specified mask to get denoised, optimally combined (OC) data.
  5. Unwarp OC dataset (may do this with SPM).
  6. Bandpass filter (0.01 < f < 0.1 Hz) → I’m not entirely sure if there is any difference with doing bandpass filtering on an OC dataset? (3dTproject).
  7. Register OC dataset to T1.
  8. Warp OC dataset to MNI using deformation fields generated by CAT12 T1 segmentation.
  9. Smooth (4/6 mm) (3dBlurToFWHM)

Thanks!
Hilmar

Hi Hilmar,

If you’re already somewhat familiar with AFNI, I’d suggest you use afni_proc.py since that’s already designed to handle multi-echo data. Given that this sounds like task data, I’d suggest using example 12B at AFNI program: afni_proc.py as your starting point. It pretty much follows your list except the motion correction and alignment to a template are done before optimal combination and tedana. I have some concerns regarding doing agressive non-linear warping before tedana denoising, but, as of now, I think it’s still better to combine all spatial transforms into one step over having two separate transforms.
The one additional quirk is that I’m not sure the -combine_method option is designed to use the current version of tedana. We changed default output file names recently and I/we should check if that messed up the afni_proc pipeline. You should be able to run afni_proc.py through optimal combination and then separately run: tedana, bandpass filtering, and spatial smoothing. The ranges for bandpass filtering and the smoothing amount are study-specific so I don’t want to comment on those, but hopefully this gives you some guidance on the order of the steps.

Hope this helps

Dan

2 Likes

I’ll match @handwerkerd on most points, but offer my take on it. Looks like you have resting state data and I’m also not keen to give strong opinions on bandpass options.

I’m also thinking you have fieldmaps which don’t play so nicely with afni_proc. In addition, I’m less worried about multiple interpolations (this one time) because you are smoothing and probably want to match the transform you did on the PET data .

Your processing steps seem fine to me, though note that tedana will give you the OC data and also denoised OC data. One has components identified as noise removed - you can use the visual reports to see if you are happy with the performance.

3 Likes

Hi,

I never used it myself for multi-echo data, but wouldn’t FMRIPREP do the some of the preprocessing steps including optimal combination? Would that be interesting to you?

See here:

T2*-driven echo combination

init_bold_t2s_wf()

If multi-echo BOLD data is supplied, this workflow uses the tedana T2* workflow to generate an adaptive T2* map and optimally weighted combination of all supplied single echo time series. This optimally combined time series is then carried forward for all subsequent preprocessing steps.

https://fmriprep.org/en/stable/workflows.html

1 Like

Thanks all (sorry I can only tag 2 people being a new user) for your helpful comments and glad to see that I am on the right path with this. This is indeed resting state, acquired simultaneously with FDG-PET. I thought about using afni_proc.py but I’ve seen on here some concerns that they haven’t adopted the newest version of tedana? I also see that AFNI contains the ME-ICA.py routine that runs Tedana as well, but I think that is a bit out of date? Yes, we have fieldmaps, or rather than a fieldmap, we collected two spin-echo epi with reverse phase encoding which I’m combining with topup.

Yes, I thought about fmriprep as well but I wasn’t sure about (a) how well tedana was embedded in fmriprep and (b) how easy/difficult it would be to implement my own warping to standard space.

Thanks again for very helpful inputs!
Hilmar

Howdy-

There are a lot of options for processing multi-echo FMRI data using afni_proc.py. Here is a recent OHBM poster showing some of them, and you can include blip up/down correction (and physio data, if you have it), too:

NB: the full demo isn’t quiiiiite available for download yet, but we hope it will be soon.

Specifically about ME-ICA: at the moment, the one used is the original one by Kundu et al.; however, we are aiming to implement the more recent Tedana one, as well.

–pt

1 Like