Integrating Synb0-DISCO with dwifslpreproc

Hi everyone,

I have two main questions about inhomogeneity distortion correction in MRtrix; one about how to best integrate Synb0-DISCO’s output within dwifslpreproc, and one about a specific error I get when running top-up with Synb0-DISCO.

I am setting up a tractography pipeline for DTI data (1 b0, 64 b1000) without reverse phase encoding direction b0-images, thus for inhomogeneity distortion correction I will use Synb0-DISCO algorithm.

Question 1: Integration Synb0-DISCO with dwifslpreproc
According to this closely related topic (Synb0 for dwifslpreproc: How? - #3 by AmirHussein) - two options are specified. 1) Running top-up within Synb0-DISCO, and using the relevant output as a command in dwifslpreproc. And 2) Using the original b0 in combination with the synthetically created b0-image as input (for -se_epi) in dwifslpreproc, and running top-up within dwifslpreproc.

I am leaning towards the second option (also considering the problem I have running top-up within Synb0-DISCO → Question 2) but only if the two approaches are interchangeable in terms of preprocessing quality. Do you have any advice on this preprocessing integration step?

When I do decide to run top-up inside dwifslpreproc, am I correct in thinking that

  • for -rpe_pair -se_epi I should use the b0_all.nii.gz image(s) created by Synb0-DISCO?
  • eddy_indicec.txt should be 65 1s, since the b0 image and all b1000 images are in the same direction?

Question 2: Top-up error Subsampling levels
When I do try to run top-up within the Synb0-DISCO algorithm, everything seems to run well, leading to almost all output files in the appropriate fashion, except for all the top-up outputs.

In the log.txt file I created, the end of file states:
Topup::topup_clp::topup_clp: Subsampling levels incompatible with image data.
This seems to be the problem that prevents the running of top-up, but I am unsure how to deal with this problem; searching on other fora did not allow me to solve it appropriately.

Any help would be greatly appreciated, thanks a lot!


Hi Bastiaan,

I successfully developed the pipeline using the first approach and provided topup outputs as one of the -eddy_options. I don’t think there may be any differences in the results using either approach. Regarding your question, please check this issue which may explain it: How to pad a slice to data for topup

As far as I know, dwifslpreproc will pad the data before topup if your data has odd dimensions. So I guess Synb0-DISCO cannot handle that, so you can either go with the 2nd approach or pad your raw dMRI before using Synb0-DISCO.


Hi Amir,

Thanks a lot for you advice! I have managed to get everything to work using the second approach and now I’m trying your suggested option by padding a slice, to see what works best.

A question related to the first option:
Using mrgrid pad, do you suggest either padding the DW image to match the T1, or just a uniform number of voxels (e.g. 1 voxel on all sides); or still other options of the mrgrid pad functionality that I am not suggesting?