Response function estimation for quality control


Dear MRtrix3 experts,

I am fairly new to using MRtrix3, so please excuse a fairly basic technical question:

I visualized the response function estimation of my dti data (b=1500, 2x64 directions) with the values 303.4892197 -153.3113817 47.84516512 -10.20100441 1.233455441.

It looks flat and broadest in the axial plane (as I guess it is supposed to).

My question is:
Are there “normal values” (depending on gradient strength / directions) to check the quality of my (individual) DTI data?
Would that even be sensible / intended?

Maybe I did not understand the concept of the response function correctly, so any insights would be appreciated.



So there are certain expectations regarding how the response function ‘should’ look; for instance:

  • The magnitude of the first term should be approximately the mean DWI image intensity in the white matter.
  • From left to right, the values generally decrease by a factor of ~ 3-5, and switch sign between alternate values.
  • Ideally, the magnitude should decrease monotonically from the X-Y plane toward the Z axis, though it’s not uncommon for there to be a little ‘bulb’ along the Z axis.

Regarding the appearance itself, the example that comes to mind is Donald’s paper, where one of the figures shows estimated responses from b=1000-5000 - but as angular plots rather than surfaces.

We’ve toyed with the idea of providing pre-defined response functions for particular b-values, as we expect the shape to be dependent on the b-value only; though receiver coil gain and SNR may also play a part.

Probably the more appropriate test to do for the sake of quality control is to check the locations of the voxels used to estimate the response function (-voxels option in the dwi2response script). These should make sense anatomically as single-fibre regions, and should appear to contain a single fibre following application of CSD.



Hi @TCsquared,

I’ve cross checked the SH coefficients of your response function with those from Donald’s paper (one eye closed, and engineering-wise interpolating a bit between the b=1000 and b=2000 responses in there), and the values definitely sit in the right ballpark!

The shape that you describe is indeed the correct one: the response should look like a softly blown up disk. I’d say, give it a shot and throw your data and response function at dwi2fod: if the FODs look sensible and not too corrupted by false spurious peaks, you should be good.



Dear Rob and Thijs,

Thank you both for your helpful advice! Donald’s paper indeed helped clarifying my questions too!

I a designing a pipeline for data processing and will include a step just to visually check the response function.

Again, thank you for your advice!


Hi Rob and Thijs,

Using the currently available dhollander algorithm on a single shell data (b0 + b=700) I get the following response_wm.txt:

1459.49618465773 0 0 0 0 0
774.990944178362 -204.206544862093 27.5709543467232 -3.01704665781447 -0.0572831028918161 0.303581684085567

Which the second row looks like this:

The drop from first to the second term is about 3 times but afterward is more than 5 times and the last element has a bigger magnitude compared to the one before it.

Is this completely wrong?


Nope, it’s perfectly fine. Take a look at it using shview to confirm: I’ve checked, and it looks good.