Estimating Response functions from the DWI-data using an unsupervised method


Hello all,

Could someone please let me know which function in MRTRIX deploys this method: " Unsupervised 3-tissue response function estimation from single-shell or multi-shell diffusion MR data without a co-registered T1 image" and how can I change the default value of FA?

Thank you,


Hi Mahmoud,
That appears to refer to dwi2response with the dhollander algorithm. There is an -fa argument to change the default FA value. If I’m not mistaken, this is only used in the initial “crude” separation of WM from CSF/GM, with the separations being refined later using other methods.


Note: I am not an mrtrix developer; you may get more detailed responses from them.


Just to confirm: @johncplass is entirely correct (and complete). To add to that: for most scenarios, there’s no reason to touch the -fa option (and you’d be best advised to leave it at it’s default of 0.2). The only real scenarios I’ve come across where it is advised to change it (and hence why it’s available as a tweakable option) is overall low anisotropy in your dataset as a whole. In practice, this could be:

  • low(er) myeline content, or increased extra-axonal content of the tissue; that would e.g. be babies and beyond (neonates, …). I suppose you were asking about this option in the first place because you already came across this, but just to document it for other forum readers, here’s such a case in practice: . That’s 5 month old (counting from birth) babies, and at a “decent” b-value (ballpark 2800~3000).

  • ex-vivo acquisitions at a b-value that is a bit “too low” for ex-vivo data. E.g. an ex-vivo acquisition at b=3000 may surprise you in the sense that the anisotropy is quite a bit lower compared to its in-vivo equivalent. I’ve got mouse data here, both in-vivo and ex-vivo, where b=3000 has more than enough anisotropy in-vivo (and the default -fa is fine there, even for a mouse!), but ex-vivo b=3000 is far from adequate for a sharp signal profile. But at b = in a ballpark of 8000, this is again enough to work with the default -fa of 0.2 for the purpose of getting the 3-tissue response functions.

As @johncplass also correctly states, the role of the -fa threshold is only a very crude separation of WM from “the rest” (GM/CSF/…). Based on FA, it’s certainly not going to be perfect (and at e.g. 0.2, some WM crossing areas are already going to be considered in “the rest”, not in the WM); but that’s entirely fine. The later steps of the algorithm refine the stuff that needs to be refined (and those crossing WM areas we don’t need for anything at all, in fact; neither single-fibre WM, nor GM or CSF).

And while all of this is great (it really is! :wink:), I have to probably start to highlight at this stage that exactly for those scenarios I described above (and others, but those above are probably affected the most), there may be another challenge lurking, where the final responses you’d get at the moment aren’t quite optimal yet. I’ve improved and further generalised the dwi2response dhollander algorithm to take that into account, both for single- as well as full multi-shell data. The resulting improvement sits literally ready in an offline MRtrix branch on my computer; I only need to decide when and how I’ll hit the button and throw it at MRtrix online. :slightly_smiling_face:

Finally, completely apart from the above, I’ll take this opportunity to link to this post again as well: Wm ODF and response function with dhollander option _ single shell versus multi shell , because asking about references, I sometimes notice people confuse the response function selection algorithm(s) with the CSD techniques; especially for the case of the dwi2response dhollander algorithm versus the SS3T-CSD method (where the former sits in MRtrix3, and the latter doesn’t (yet)). While the linked post (and all posts in that topic) are a little dated, it’s still a decent overview for those that feel they’re getting confused about these methods.