There’s indeed a crucial confusion here (thanks for highlighting that; I’ll have to take care communicating things well in the near future!). There are two main (different) steps we’re talking about here:
- Response function estimation (
- CSD (
In this work (that Donald linked to too), I proposed a new CSD method (i.e. for step 2 in the above). This method is not yet publicly available in MRtrix3 (so there’s no readily available way you can do that yet). You are correct that this would indeed be "a different
dwi2fod", but when implemented properly, I’ll offer it as another choice of algorithm in
dwi2fod. That will then result in
dwi2fod offering 3 distinct algorithms (of which at this moment, only the first two are available):
csd: standard single-shell single-tissue CSD (SSST-CSD); requires single-shell data without b=0 images (the algorithm ignores b=0 images itself) and only a single WM-response; will give you a “WM FOD”, but treats all signal as if WM, so the “WM FOD” will be inappropriate when partial voluming with GM/CSF is present.
msmt_csd: multi-shell multi-tissue CSD (MSMT-CSD); requires data with as many distinct b-values as the number of response functions you give it (and hence, the number of tissue (FO)Ds you ask it for). The most common application/scenario is WM-GM-CSF responses, so that means you need 3 distinct b-values. Note that this includes b=0 data; some people don’t refer to this part of the data as a shell, hence some confusion around this terminology sadly. If you do apply MSMT-CSD to “single-shell + b=0 data”, and you give it 3 responses, but the data only has 2 b-values (including b=0), then you’ll get a result exactly like the one you showed. Taking into account what, GM and CSF responses typically look like, it makes sense that the GM inherently ends up not being used in the fit; i.e. the most optimal least-squares fit literally is one that has GM=0, even for hypothetical voxels that are actual 100% GM. This is the case I illustrated in the 3rd (middle) column of figure 1 in that abstract.
ss3t_csd (not available yet): single-shell 3-tissue CSD (SS3T-CSD); requires single-shell + b=0 data, i.e. data that have 2 distinct b-values; requires 3 response functions that have certain particular qualities relative to each other (WM, GM and CSF responses obtained from a developed human brain have these qualities, so are ok); will give you 3 tissue (FO)Ds that go with these responses. Due to the different way this optimiser is initialised and the path it traverses when looking for a decent solution, the outcome is not the same as MSMT-CSD for this case of data and responses. It will not end up with GM=0 for all voxels, but give a result more akin to MSMT-CSD on “true multi-shell” data. There’s some other particularities as well, but those go beyond most normal expected scenarios (and uncover some crucial aspects, even for MSMT-CSD).
All of these CSD algorithms need (a) response function(s) as part of the input. The algorithms in
dwi2response offer several ways of obtaining them. In this work I proposed such an algorithm (i.e. the “
dhollander” algorithm) that specifically looks for good WM, GM and CSF responses. It works on both multi-shell data as well as single-shell (+b=0) data, and can thus provide you with WM, GM and CSF responses suitable for both MSMT-CSD as well as SS3T-CSD. The further choice of MSMT-CSD or SS3T-CSD depends on the data you have, as explained above. The choice of
dwi2response algorithm depends on what kind of responses you want:
tournier: all designed to give you just a single-shell WM response, i.e. these are the algorithms to go for if you’re looking to proceed with
dwi2fod csd thereafter.
fa is very dated and quite suboptimal, but included for historical reasons, and potentially still useful if you’re faced with certain very unusual scenarios.
tax was supposed to be better, and also is in some cases, but can unexpectedly fail (spectacularly) too, even in a lot of quite “normal” cases. The
tournier algorithm is vaguely inspired by the same iterative idea as
tax, but is much more robust and would be what most/all of us would happily advise as the standard and safest go-to solution.
dhollander: both designed to give you WM, GM and CSF responses; both work on multi-shell data as well as single-shell + b=0 data.
msmt_5tt needs an additional 5tt segmentation file as the input, which typically comes from a T1 weighted anatomical image that has to be registered to the DWI data up to sub-voxel precision, for every single voxel in the image. Not only is that a bit of a hassle, it’s also a challenge and ends up being a potential weakness for this algorithm, since it’s so very, very dependent on (the precision of) this. My intention with the
dhollander algorithm was mainly to be more convenient, i.e., do away with the practical hassle of that T1 image, its segmentation and registration, undoing of all relative artefacts in both T1 and DWI data, etc… However, slightly unexpectedly, I figured out that the
dhollander algorithm also ends up being more accurate. More recent tests at our end show that this is even true in the case of super-high quality data in an optimal scenario (preprocessed HCP data), and even much more so in the presence of a (certain) range of pathologies.
So in your case, if you’re looking for optimal processing of that particular data set, I’d personally happily advise you:
Once the SS3T-CSD is publicly released, we could in principle speak again; however, given mostly the low maximal b-value of 1500 in that dataset, I would with 99% certainty still advise MSMT-CSD in this scenario; but not without an important warning to be a bit careful with the quantitative interpretation of the outcome. That set of quite low b-values will mean the apparent fibre density interpretation is a little bit less valid…