Hi mrtrix experts,
I posted the question below to the fsl forum, but I’d like your opinion as well…
My question relates to the optimal number of b0 up/down pairs for topup.
I have a rather large dMRI dataset, with 11 b0 up/down pairs.
The b0s are interspersed in the > 200 directions dMRI acquisition to correct for scanner drifts (acquisition takes > 20 minutes).
topup --imain=all_my_b0_images.nii --datain=acquisition_parameters.txt --config=b02b0.cnf --out=my_output
works fine on the data (as does eddy_cuda), but topup takes a huge amount of time to complete (several hours).
On a single pair of up/down b0s it takes about 10 minutes to compute.
Having 11 pairs is probably overkill, and doesn’t reach a significantly better estimation of the field.
What can I safely do to speed up topup?
1/ Reduce the number of pairs, e.g. only use each third acquired pair. This will not significantly impact the estimation of the field, right?
2/ Use all b0 pairs, but come up with a faster topup version. Topup seems to be a single core process (not openmp designed, at least not on osx). What loop in the source code can benefit from openmp?
3/ Come up with a non-standard config file, for faster computation? How?
I run into the use of all b0 up/down pairs because I call dwipreproc with the -rpe_header option.
I think solution 1/ reduce the number of b0 pairs used, is the best option.
Do you agree?
If so, I would propose adding an option to dwipreproc, something like -rpe_reduce_pairs to select a subset of b0s.
Would this be useful?