Full unmyelinated new-born brain - 3 shells 46 directions each. [ERROR] number of rows in response function must match number of b-value shells

dwi2response

#1

Hi there,
Thanks for the software!

Here I am exploring some new-born brain with multiple shells.
As far as I can understand there are three options available:

  • csd: standard single-shell single-tissue CSD (SSST-CSD);
  • msmt_csd: multi-shell multi-tissue CSD (MSMT-CSD)
  • ss3t_csd: single-shell 3-tissue CSD

As the tissue is not myelinated, this case seems to fall in the missing one: multi-shell single tissue.
Do you have any suggestion for this?

What I tried so far was:

dwi2response fa <dwi.nii.gz>  <output_average_response.txt> -grad  <bvals_bvects.txt> -shell  844,1048,1570 

Where dwi is a 199 timepoints with 7 b=0 and 64 for each shell.

The <output_average_response.txt> is a single row with 6 floats.

Therefore when running

dwi2fod msmt_csd  <dwi.nii.gz> <output_average_response.txt> -grad  <bvals_bvects.txt> -mask <mask.nii.gz> -shell  844,1048,1570 

What I got is:

[ERROR] number of rows in response function must match number of b-value shells

Have not tried dwi2response msmt_5tt as there is no clear distinction between WM and GM, moreover they are ex vivo data, so no CSF…

Thanks!


#2

So the issue here is that the csd algorithm in dwi2fod is expressly single-shell, so will use only the highest b-value shell in your data set, and expects the response function to also provide the diffusion profile for a single shell (i.e. a single row).

In contrast, the msmt_CSD algorithm in dwi2fod is expressly multi-shell, and will use all b-values in your dataset, and expects the response function file to provide the diffusion profile for each shell (i.e. one row per b-value). Note that in this context, the b=0 volumes constitute their own shell (they have their own distinct b-value).

The fa algorithm in dwi2response provides a single-shell response (as will the tournier algorithm), so can’t be used as-is with the msmt_csd algorithm in dwi2fod, if the data are multi-shell (and even single-shell data are considered multi-shell is the b=0 volumes are included – confused yet?).

To get full multi-shell responses, you’ll need to use a dwi2response algorithm like msmt_5tt or dhollander that does that, and then you’ll be able to use those responses with dwi2fod msmt_csd. Otherwise, you’re stuck with dwi2fod csd.

Unless, if you really want to use the msmt_csd algorithm with a single-shell response, you use dwiextract to pull out just the highest shell from your dataset, and feed that to dwi2fod msmt_csd – this is fact what is done in the current single-shell FBA instructions.

So there’s lots of ways of operating here… In general, I would say that your best bet currently would be to use dwi2response dhollander followed by dwi2fod msmt_csd, even for single-shell data (in this case, use the WM and CSF responses only). I’d only consider other approaches if that doesn’t work well for some reason.