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!
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.