Multi-echo data and distortion correction

Hi there,

I got the following error when processing multi-echo data.

** when using multi-echo data and distortion correction,
   -blip_reverse_dset requires corresponding -blip_forward_dset
** invalid block : blip

We acquired only the reverse-direction EPI data and assigned it to -blip_reverse_dset. As the AFNI blip note says, "If no forward blip time series (volume?) is provided by the user, the first time points from the first run will be used (using the same number of time points as in the reverse blip time series).". It seems couldn't automatically determine which echo to use for this default. To address this, should I simply assign the second echo data as the forward blip dset? My understanding is AFNI uses the favorite echo as the reference for all registration related processes, so I guess it does not make sense to expect that distortion correction could be conducted for each echo using its own reversed dset. We do have reversed dset for all 3 echoes. However, the blip block proceeds the volreg block, probably AFNI could do distortion correction echo wise? If so, how do I set up I am not familar with MRI physics, if distortion is not so TE specific, may be using the 2nd echo is sufficient. Thanks a lot.

Also in Example 13 it seems the same dset is assigned to forward and reverse dset, probably it is just a demonstration?

-blip_forward_dset         'FT/FT_epi_r1+orig.HEAD[0]'           \
-blip_reverse_dset         'FT/FT_epi_r1+orig.HEAD[0]'           \


Hi, Zhengchen-

Is your reverse phase encode data multi-echo as well? You could just select one volume (say, the [0]th in time) from your main input EPIs to be the corresponding forward reverse data by selecting the echo that has the closest TE. That would mean the blip forward and reverse volumes would have most similar contrast for the alignment that occurs, which I believe is the important consideration here.

If your primary EPI dataset is ME-FMRI, and your phase reverse EPI is also ME-FMRI, then I think you have a choice of which volumes to use for the blip forward/reverse entries. You should select matching echoes across the two datasets (so the contrasts are similar), and then I would select specifically the echo that best tissue contrast within the EPI volume, to drive a more detailed alignment between the volumes (hopefully providing the best distortion correction).

Re. Example 13, indeed, the values of the datasets just come from the AFNI_data6/FT subject in the Bootcamp data, which is neither ME-FMRI nor blip up/down. This note there applies:

 Note: lacking good sample data for this example, it is simply faked
       for demonstration (echoes are identical, fake ricor parameters
       are not part of this data tree).

... mentioning that the values of the datasets should be ignored---indeed, in a real case, you would likely have something like:

-blip_forward_dset         'sub-001_r01_e02_forward-acq+orig.HEAD[0]'           \
-blip_reverse_dset         'sub-001_r01_e02_reverse-acq+orig.HEAD[0]'           \


1 Like

Hi Paul,

Thanks for your explanation. Yes, my reverse pahse encode data are also multi-echo. I will use the 2nd echo which uses the conventional TE.


Hi Zhengchen,

If that is what you are using for -reg_echo ($fave_echo), it seems like a fine way to go. If you wanted to get fancy, it would be conceivable to use @compute_OC_weights (possibly duplicating the weights for both directions) to combine the echoes for the forward and reverse sets. But using the -reg_echo pair seems more straightforward.

  • rick
1 Like

Hi Rick,

Thanks. Yes I am using the echo of -reg_echo as forward and inverse dset. Using combined image may be a good idea, however, for the reverse dset, I only acquired 10 frames which may not be enough to provide a robust decay fitting to estimate the weight. I was thinking if it is necessary to do the distortion correction for each echo separately before combining them: echo01 forward + echo01 reverse for echo01 correction, echo02 forward + echo02 reverse for echo 02 correction… Maybe this is not necessary if distortion is not so different across echoes.


Distortion correction is not such a robust operation, which is why it is only applied once per analysis. So it seems dangerous to try to apply the correction separately across the echoes. The weight estimation would become uglier if the voxels were no longer in the same locations across echoes.

  • rick
1 Like

To add on here - I would absolutely not do distortion correction for each echo separately. You want the transformed applied to each echo to be identical so that a voxel in one echo stays the same as a voxel in another echo. In addition, unless there is something very strange going on, your echoes should have identical distortions over TEs. The dropout will differ, and late echoes may appear more distorted, but this is not the case - its additional dropout which is more likely in the regions where distortion is large.

In fact, for this reason, I tend to use the first echo for motion and distortion correction (fave echo). It has the most signal and usually more than sufficient contrast.

Thanks a lot @dowdlelt, this is really good to know.

Do you know any article discussing on this point? I found this make sense and would like to know some more details. Thanks.

I am unaware of any articles that do an in depth examination. I think the logic is reasonable - it mirrors the argument for using Spin Echo data for distortion correction in some ways - it is easier to correct for distortions when the distortions can be measured/seen.