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…
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).
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
dhollander that does that, and then you’ll be able to use those responses with
dwi2fod msmt_csd. Otherwise, you’re stuck with
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.