Does MRtrix have water compartment modeling similar to NODDI?


I’ve just begun using MRtrix for image processing and really enjoy it. I’m working on creating a processing pipeline am curious if MRtrix has the ability to do NODDI-type analysis on brain images, or if I need to incorporate separate commands to get the type of water compartment images NODDI provides. Thank you in advance!

Hi @aszymanski,

Good to hear you’re enjoying using MRtrix!

As to a water compartment: multi-tissue CSD variants, with a compartment for CSF (free water), do this for you (and in contrast to NODDI, they account for the difference in T2; NODDI has a tendency to overestimate free water).

If you have multi-shell data (at least 3 distinct b-values, including b=0; i.e. same prerequisite as for NODDI), then you can use multi-shell multi-tissue CSD for this purpose. Have a read of the paper about the method. To use the method, you’ll need the dwi2fod command with the msmt_csd algorithm.

If you have single-shell data (a single, preferably high, b-value and b=0 image(s)), then there’s a new method I came up with last year, called single-shell 3-tissue CSD (abstract). This one is not publicly available yet in MRtrix though, but it will be eventually.

Both of these methods require you to obtain multi-tissue response functions from your data beforehand: typically this will be a single-fibre white matter response function, a grey matter response function and a CSF (free water) response function. To obtain these without any hassle caused by distortions, alignment of a T1w image or segmentation thereof, I’ve recently introduced an algorithm (abstract) that only requires your DWI data as input, and manages everything using just that. This algorithm can be used via the dwi2response script with the dhollander algorithm.

The result of dwi2response dhollander followed up by, e.g. dwi2fod msmt_csd (for multi-shell data) will give you WM FODs, a GM compartment image and a CSF (free water) compartment image!

Hope this helps. :slight_smile:


Thank you for the thorough explanation! This is very helpful & quite exciting. Will test it out today!

Have a good one :sunny:

1 Like


So I’m running into a little bit of trouble with my script. I’m getting errors related to dwi2fod, and I was hoping you (or someone) could clarify things for me. I’ve searched the community forum and have found some posts related to my problem, but I haven’t quite fixed the issue. This is my script & the related error messages:

dwi2fod msmt_csd ${OUTPUT}/cbedm${SUBJ2}_dwi.nii.gz ${OUTPUT}/${SUBJ2}_out_sfwm.txt ${OUTPUT}/${SUBJ2}_out_gm.txt ${OUTPUT}/${SUBJ2}_out_csf.txt ${OUTPUT}/cbedm${SUBJ2}_dwi_FOD.nii.gz -mask ${OUTPUT}/cbedm${SUBJ2}_mask.nii.gz -fslgrad ${OUTPUT}/e${SUBJ2}_bvecs ${OUTPUT}/e${SUBJ2}_bvals

dwi2fod: [ERROR] unknown format for image "/mnt/BIAC/" (unsupported file extension: .txt)
dwi2fod: [ERROR] error creating image "/mnt/BIAC/"

And here is my dwi2response script:

dwi2response dhollander ${OUTPUT}/cbedm${SUBJ2}_dwi.nii.gz ${OUTPUT}/${SUBJ2}_out_sfwm.txt ${OUTPUT}/${SUBJ2}_out_gm.txt ${OUTPUT}/${SUBJ2}_out_csf.txt -fslgrad ${OUTPUT}/e${SUBJ2}_bvecs ${OUTPUT}/e${SUBJ2}_bvals

I’m sure I’m missing something but I’m not quite sure what. Also, slightly related question, would there be any benefit to using dwi2response msmt_5tt? Or is dhollander better suited for what I’m trying to accomplish?

Many thanks in advance :slight_smile:

dwi2fod msmt_csd requires pairs of images and text files as arguments. You provided image txt txt txt image. So for three tissue types you would need: dwi2fod msmt_csd input_image tt1_txt tt1_image tt2_txt tt2_image tt3_txt tt3_image.

1 Like

I see, so to be clear, do I assign the same _ dwi _ FOD image to each text file, or do I need to create new images for each text file in order for it to work correctly?

No, the single DWI image is the input (first argument), and then you provide one input response (text) file for each output FOD image. This may not be crystal clear on the documentation page for dwi2fod, but the multi-tissue CSD page does give example usage, this might be easier to follow.


Thanks, I actually just found that CSD page you linked! Would be helpful if you could include that on the dwi2fod page for the future :grin: Appreciate the help!

dwi2response dhollander is easier to use, but we’ve also found it’s often (much) more accurate than msmt_5tt, especially for the CSF response function in general (see the abstract), and in a range of pathologies also for the GM response function (probably soon more info on that)!

So for most applications, dwi2response dhollander should serve you well (for humans older than 3 years of age).


Hi @Thijs, do you have a timeline of when your single-shell 3 tissue CSD method will be available in MRtrix? Very curious to use it! :slight_smile:

1 Like

Thanks for the interest. :smile: …but yes, it’s still going to be a while sadly… other projects have come up in the mean time to spend time on (too). No strict timeline for the moment I’m afraid, but I’ll keep you posted! When I get something going that is decent enough for a range of scenarios, I may make it available in a separate branch for people who want to get an early peek!

1 Like

Thank you very much for your amazing multi-shell algorithm! We are now using it in our center on a clinical machine and it works wonderfully well, the tracts are a LOT more precise and diverse!

Do you have any news on the single-shell multi-tissues algorithm? It would be wonderful to have it to be able to compare the data of our new multi-shell protocol with data from our old single-shell protocol (we have tons of them and we have no way to compare the results since it was single-shell!).