Dwi2response fails

Dear all,

I tried to estimate response functions using the latest version of dwi2response, but get the following errors:

dwi2response tournier -voxels voxels.mif -shell 2 -lmax 8 -fslgrad dwi.bvec dwi.bval dwi.nii response-tournier.txt
dwi2response: [ERROR] Command failed: fixel2voxel iter0_peaks.msf split_value iter0_amps.mif
dwi2response: Output of failed command:
fixel2voxel: [ERROR] fixel image is empty

When I run

dwi2fod csd dwi.mif init_RF.txt iter0_FOD.mif -mask mask.mif -lmax 4

in the tmp directory to reconstruct the FOD file and inspect it with mrstats, I find that it is empty (i.e., it contains 0 values everywhere). The input data looks sensible in fslview and I was able to do CSD on it using my own in-house software. Any ideas on this are appreciated.

By the way, when I try to run the “tax” algorithm, it fails with another message:

dwi2response: [ERROR] Command failed: dwiextract dwi.mif shell.mif
dwi2response: Output of failed command:
dwiextract: [ERROR] No dwi volumes present

Thank you and have a nice weekend

Hi Thomas,

I’d suggest this will be the issue:

-shell 2

The -shell option expects the b-value, not a shell index. MRtrix3 expects b-values to be stored in s/mm^2, just as in DICOM. Moreover, we use a default threshold of 10 s/mm^2 to classify volumes as ‘b=0’ (since volumes intended to represent zero diffusion weighting often have a value of ~5 in the gradient table). So by specifying -shell 2, you’re actually instructing the script to estimate an anisotropic response function based on b=0 diffusion volumes (which won’t work). The two algorithms giving different error messages is probably just two different symptoms of the same mistake.


Hi Rob,

thank you, my fault. I recently experimented with DTI-TK, which uses different units of diffusivity, thus the confusion.