Multi-echo pepolar fieldmaps BIDS spec/SDCFlows grayzone

Hi all,
Sorry if this has been discussed elsewhere, but I have trouble finding info on how to properly use pepolar fieldmaps in multi-echo acquisitions as it is not specified in the BIDS spec. I am posting here rather than on BIDS or fMRIPrep or SDCFlows as it covers both specs and software implementation.

Let say we acquire multi-echo fMRI with the task in one phase-encoding direction and a short phase reversed series, both multi-echo.
This results in a multi-echo AP/PA pepolar fieldmap scheme in the BIDS.
How are we supposed to configure the BIDS jsons for this to be correctly used in fMRIPrep/SDCFlows ?
In that example, let say we want to use SBRefs (CMRR multiband) as sources to estimate the distortions (better contrasts).

We can set each AP/PA SBRef echo to correct the matching echo BOLD file, in that case distortions will be estimated separately and maybe in the worst case diverge to worsen spatial alignment. fMRIPrep seems to be running a topup per echo (provided the following patch is used for SBRef pepolar scheme using SBRef considered as sophisticated. · Issue #2889 · nipreps/fmriprep · GitHub)

To avoid that can we set a single echo AP/PA pair to correct for all other echoes ? Distortion won’t be the same across echoes, but if SDCFlows can use the EchoTime to scale the distortion for each echo that could work. For example, estimating from last echo (most distorted) or first echo (better signal), convert to Hz, then scale it by EchoTime and apply for each echo.

Last option would be to feed topup with all echoes and that it estimates the distortions based on for instance 3 echoes x 2 phase-encoding directions and an encoding files specifying the appropriate readout times and polarity. As in the 2nd option, it would require the estimated distortions to be scaled by the EchoTime when applying the correction. However, I am not sure if SDCFlows (and fMRIPrep) is able to manage that. @oesteban @mgxd

Thanks for your valuable input.


Also pinging @emdupre and @tsalo as multi-echo experts. :wink:

1 Like

I am not sure about the claim that distortion differs between echos. The distortion field itself isn’t so much a function of echo time, as it is the time it takes to readout the image - which is the same for each echo.

If I am incorrect about this, and distortion does vary between echoes, then it is so small as to be negligible and trying to correct for it using the incredibly low signal images at the later echo would likely cause more harm than good. To the best of my knowledge, the first echo’s SBRef image is the best choice in the case of reverse phase encoding fieldmaps.


Thanks @dowdelt !
You are likely very right, I had not considered that the readout was the same for all echoes. So the EchoTime will only influence signal drops, and not the distortions?

Just double checked some 7T data suffering from pronounced distortion - and can confirm. In an area that survives throughout the echoes, which shows clear distortion (for example, when flipping back and forth between dir-AP and PA), the region does not show any displacement over echoes.

Signal drops will absolutely increase over TE, and in areas like the orbitofrontal cortex, this will, in some visual sense, follow the patter of distortion but it isn’t a manifestation of increased distortion over echo time.

There can be effects over echo time, particularly in ultra high resolution MRI (how topical @ofgulban ), but I think for most use cases in fMRI it isn’t worth the worry.


Agree with @dowdlelt The two of us have talked about this before and qualitatively looked into it a while bad. Dropout will increase with later echoes, but distortion should be fairly stable. If you want to calculate distortion using AP/PA then do it on the shortest echo with the least drop out. That said, if your first echo is really show and has lousy gray-white contrast, it might not have enough info to guide alignment (probably not an issue for currently typical multi-echo sequences, but might be a problem if people start using really short echoes)

I’m not currently using the SBRef images, but that’s a good idea that I might want to try.

On a more general level you really want to apply the same spatial transforms to all echoes since multi-echo combination methods assume that the same underlying tissue is in each voxel for each echo. I’d say any small benefits from calculating separate transforms by echoes would be out-weighed by problems caused from disconnecting the echoes.

I’m not an an fmriprep user, but AFNI is already configured to process multi-echo with AP/PA distortion correction. Even if you don’t plan to use afni, you can set up a processing script using with the -blip_forward_dset -blip_reverse_dset and maybe -volreg_align_to MEDIAN_BLIP to generate a processing script to see how they’ve combined these steps.


Thanks for all your insightful answers.
So using the first echo, (or maybe the second one which TE is closer to usual single-echo fMRI in terms of contrasts) to estimate distortions for all echoes is the best option.
I am only using 3T for now, so I should not be worried of varying distortion levels between echoes.

Maybe that should be something to be added in a multi-echo FAQ such as Tedana’s one FAQ — tedana 0.0.12+0.g863304b.dirty documentation ?



Found a nice example set of voxels, hopefully this gif works. On the left is the reversed phase encode image. You can see that the csf at the edge of the brain is pushed out there, but pulled back in the actual data (on the right) - forming a nice, bright, long T2* area - that stays in place as we move through the echoes.


I’ve opened Add info on distortion across echoes to documentation · Issue #894 · ME-ICA/tedana · GitHub.


Hey folks, I’ve been following this discussion with a lot of interest and not a lot of experience with distortion correction. I’ll share some insights. For context, I have dataset A (n=183) with multi-echo rest and single-echo fieldmaps (dir-AP_epi.nii.gz, dir-PA_epi.nii.gz) and dataset B (n=1) with multi-echo rest (dir-AP) and one multi-echo fieldmap encoded in the opposite direction (dir-PA).

  1. For dataset A, I compared fmriprep + tedana classification with and without distortion correction. I used the default implementation by fmriprep - i.e., I did not follow the recommendation to do SDC after denoising. Using the AIC method for mapca, there was a decrease in the number of ignored components (on average, 9 to 6.5) and increase in the number of rejected components without big change in the total or accepted number of components or the % variance explained. My experience with these ignored components is that some are clearly non-BOLD and some are BOLD-ish. I haven’t systematically evaluated if the former are those that seem to be “reclassified” or know how much change to expect just by re-running tedana regardless of SDC or not.

  2. As @bpinsard noted above, my understanding of the fMRIprep logs for dataset A is that SDC is being done to each echo separately based on the same AP/PA fmap pair. In dataset B that has a multi-echo fieldmap, it pairs the dir-AP rest echo with it’s corresponding dir-PA fieldmap. Based on the rationale others have given, it seems the approach in dataset A might be slightly more advantageous in terms of having more consistent effect across echoes, right?

Oh, after re-reading this thread, I think that basically hiding the TE2 and TE3 images from fmriprep and treating the TE1 image (if good contrast) as the only fieldmap is in fact the conclusion that you all came to if you want to stick to current doing distortion correction within the current version of fmriprep.