Single shell vs. "Single tissue"

I have a functional question as relates to the fixel based analysis pipelines because I have a single shell acquisition that I’m working with (b = 1000). There seems to be mixed usage of terminology across posts and I hoping broader clarity.

Currently there are three different ways that I see to run FBA:

  • Single tissue CSD that uses dwi2response tournier and dwi2fod msmt_csd. This is appropriate for single shell data.

  • Multi-tissue CSD that uses dwi2response dhollander and dwi2fod msmt_csd. This is appropriate for multi-shell data.

  • Mrtrix 3Tissue that uses dwi2response dhollander to estimate 3-tissue response functions and then runs ss3t_csd_beta1 to generate the FODs. This is specifically intended for single shell data and appears to feed into the multi-tissue CSD.

Assuming that I have this right to this point, then my understanding would be I can either:

  1. Use the single tissue CSD approach (potentially less ideal).
  2. Use the 3Tissue + multi-tissue CSD, replacing step #7 (Fibre Orientation Distribution estimation (multi-spherical deconvolution) with ss3t_csd_beta1 and then proceeding as “normal” (mtnormalise, population_template , etc).

Do I have the general workflow for a single shell acquisition correctly identified? Obviously, I recognize issues with crossing fibers, lack of better tissue discrimination because it’s a single, low b-value shell, etc. But I think it will be a nice complement with appropriate acknowledgement of the limitations.

1 Like

I’ve working through this myself, and appreciate your post! I hate to add to the confusion, but from reading the forum, I think another option is to use the multi-tissue CSD approach you mention above (#2), but only input the WM and CSF RFs into the CSD step. This approach is possible if you have b=0 data in addition to the b=1000 you mention (so I guess the b=0 data is considered another “shell” in this context). Experts should correct me if I’m wrong please!

I’d recommend doing your second option.

And a quick clarification:

If you do the most basic single tissue CSD, then your dwi2fod algorithm should be csd, not msmt_csd.

single/multi shell refers to how many non-b0 shells you have. So only b=1000 and b0 is a single shell acquisition and should ideally go through ST CSD or SS3t CSD, from my understanding.


1 Like

I should have linked to this discussion, take a look.

Hi @smeisler,

I agree with your suggestion and it is the approach that I am taking. The motivation for the post was for some broader clarity as the terminology for “single tissue,” “single shell,” and “single fiber” is used either A) inconsistently or B) interchangeably across posts (both original posts and responses) and so getting a clear answer as to what the specifically relevant pipelines is for a single-shell (b=1000 + b0s) seemed meritorious.

Almost seems like a good wiki post (pipelines to use, specific limitations in interpretation depending on pipeline)… not like @rsmith doesn’t have 100,000 other things to do to keep us all happy :smiley: .


I’m posting because some have encouraged me to clarify. I will do a brief effort to clarify some things; don’t hesitate to ask if not clear.

Minor error in there: using the “single-tissue” approach, you’d use dwi2response tournier and dwi2fod csd. What this does is (using your b=1000 dataset as an example): dwi2response tournier uses only your b=1000 data (i.e. not b=0) and extracts a single-fibre white matter response function for the b=1000 signal. Then dwi2fod csd uses only your b=1000 data, and deconvolves your b=1000 single-fibre white matter response function form that data, resulting in an FOD. This assumes that all signal in the brain is “100% WM”, i.e., the resulting FOD fits all that signal using the (single-tissue) WM response function. For example in the cortex, this means all the non-axonal signal will also be part of that FOD, which you often see as a “too large” FOD that has many random false positive peaks. There’s then also less WM-GM contrast, somewhat limiting the precision of other steps in the FBA pipeline, including registration, but also what you can do for bias field correction and intensity normalisation, etc… In any case, all of this is called “single-tissue”, because only a single WM fibre response was used. The response just also happens to only represent your b=1000 data (not including b=0), making it a single-shell or single-b-value technique.

Correct. For completeness sake, what this does is: dwi2response dhollander extracts 3 tissue response functions, i.e. for single-fibre WM, isotropic GM and isotropic CSF, from your complete multi-shell dataset. The latter means all your b-values, including b=0! Then dwi2fod msmt_csd deconvolves these 3 (WM/GM/CSF) response functions from your full multi-shell dataset (including b=0), resulting in 3 tissue maps or compartments. The WM map/compartment is a full WM FOD, whereas the GM and CSF map/compartments are a single scalar number (not an orientational function). For FBA, you only use the WM FOD, but now the benefit is that the GM/CSF compartment have “filtered out” the signal of those tissues from the WM FOD. Put simple: the WM FOD is “cleaned up”, most markedly in cortical and subcortical GM. Technically, also in CSF, but even single-tissue CSD (as above) already has little to no false positive WM FOD in CSF due to CSF having very little DWI signal anyway. So the main benefit for e.g. FBA, lies arguably in the removal of the GM signal. This improves things like image registration, but the WM/GM/CSF compartments also allow for better bias field correction and intensity normalisation, etc.

This can also just be called a “multi-tissue” pipeline. I sometimes call it more specifically a “3-tissue” pipeline, to distinguish is more overtly from MSMT-CSD, but also to make clear that this is strictly 3 tissues only; not more, not less. But indeed, this does correspond to what you do most of the time with MSMT-CSD arguably. Only difference: it can do so on single-shell data. However, don’t forget that single-shell data is actually “2 b-value data”, if you include b=0. That’s what this pipeline also does. So in practice: dwi2response dhollander still estimates 3 tissue response functions (single-fibre WM, isotropic GM and CSF), but from your single-shell +b=0 data. So each of these 3 response functions is based on, and includes, your b=1000 as well as your b=0 signal. The SS3T-CSD method then (ss3t_csd_beta1 in the external fork that shall not be named) deconvolves this again from the full (b=1000 and b=0) data, with a bit of a trick to make this work, resulting in a WM FOD and GM/CSF compartment maps, just like the MSMT-CSD pipeline. Same benefits also, of filtering out GM, leading to better WM FODs, better registration, and all compartment images allowing better intensity normalisation and bias field correction, etc…

For completeness sake, another variant that you will or might have seen on the forum, or even seen me describe long ago, would be “2-tissue CSD”. This is what was done before with single-shell (+b=0) data and the MSMT-CSD algorithm. Since this algorithm typically needs x b-values to estimate x tissues, having only 2 b-values would limit you to 2 tissues. To be able to fit all signal then, these typically have to be WM and CSF (simplified reason being that these 2 have the lowest and highest diffusivities, whereas GM sits in between them). You can then still use the more advanced method (mtnormalise) for bias field correction and intensity normalisation, however, it works slightly less accurately, mostly for the bias field correction (and a little bit for the intensity normalisation). Also, most other benefits such as improved registration, etc… do not follow here, because those are mostly the benefit of modelling GM, which this approach does not. Sometimes people link to these old posts of me describing the 2-tissue approach, however, this was long ago and the context has changed.

Basically, with the availability of the SS3T-CSD technique, you can always follow the multi-tissue (or “3-tissue”) CSD pipeline. If you have good multi-shell data, then you can use MSMT-CSD as long as you take responsibility for inclusion of low b-values (if these are relatively many and/or very low b-values on average, they bring in extra-axonal signal into the FD metric). If you have good single-shell (+b=0) data, you can use SS3T-CSD; but similarly always take into account your b-value for the purpose of interpreting the FD metric. Apart from the CSD technique then, the actual pipeline is always the same (the “multi-tissue” pipeline), and includes all benefits from GM removal and using all tissues for e.g. bias field correction, etc…

We have also documented this pipeline, along with in-depth discussion on e.g. the aforementioned impact of that/those b-value(s) mentioned above, etc… in a recent review paper:
"Fixel-based Analysis of Diffusion MRI: Methods, Applications, Challenges and Opportunities" NeuroImage Volume 241, 118417
Google the title or copy-paste this link: (as last time I checked, my account here was not allowed to post links of any kind).

So for clarity sake: that is outdated advice from me, back from 2017. I highly recommend reading the aforementioned review paper for more details and references.

As mentioned, don’t hesitate to ask if anything is unclear. I agree the terminology has been running a bit wild, and it doesn’t help that we have used very similar sounding phrases such as “single-shell”, “single-tissue”, “single-fibre”, etc… :wink: . That said, if you read it carefully, and know that “shell” refers to the data and b-values, whereas “tissue” refers to the number of tissue compartments, and “single-fibre” is just a thing we always say together with “WM response”, it should hopefully still make sense! :partying_face:

All the best,
Thijs (Thursday, 19-May-22 11:40:28 UTC)


Hi @ThijsDhollander

Thank you for clarifying all of this. It is, I think, what I was looking for. I do think that there can be some confusion because of the various ways of talking about it. I do have a few follow-up questions that I think would be beneficial not only to me but hopefully others reading/looking for this specific information (especially since you note that there is some outdated advice).

In the tutorial for the single tissue CSD ( uses dwi2response tournier and then states the following:

When performing fixel-based analysis, constrained spherical deconvolution (CSD) should be performed using the unique (average) white matter response function obtained before. Note that dwi2fod csd can be used, however here we use dwi2fod msmt_csd (even with single shell data) to benefit from the hard non-negativity constraint, which has been observed to lead to more robust outcomes

So is the recommendation for dwi2fod msmt_csd not an “across the board” recommendation but rather just for purposes of the tutorial or is there something that I’m missing in it? The tutorial does obviously only output the white matter FOD but the explanation isn’t clear.

And thanks for the link to the review paper. I did read it prior but again, it seems like the various “single xxx” that get discussed here in the community forum often seem to be used somewhat interchangeably so a clear definition of what can/cannot be used for a single shell (always assuming that single shell means b0 + some b shell) is very helpful.

Ah yes, that is true. I’d already forgotten about that. This is something I once also advocated for, but my experiences on that have become more mixed in recent years. The reasons for that are more complicated; and since the forced moderation of my posts, I don’t think I’ve shared that in any recent times here. I personally wouldn’t always use the “hard-constrained” version (i.e. the MSMT-CSD code, but within the single-tissue pipeline as you linked to above) for a single-tissue scenario anymore; it lacks an amount of flexibility that can be surprisingly relevant for certain specific applications or contexts.

However, that would indeed still be a single-tissue approach (i.e. fitting everything as if it were WM only); something which itself is arguably no longer necessary in any scenario. That said, I can now also better appreciate your possible confusion when you saw MSMT-CSD in the single-tissue FBA pipeline.

But to indeed be 100% clear: I don’t consider the above to be necessary anymore regardless. Put differently: the whole “single-tissue” FBA pipeline, I would strongly advice, should no longer be used. With the availability of both MSMT-CSD and SS3T-CSD, it’s always possible to use 3 tissues (WM/GM/CSF) with the “multi-tissue” FBA pipeline. In some exceptionally challenging or problematic scenarios (we’re talking combinations of non-human, ex-vivo and/or before birth here; or very unfavourable acquisitions), this could be limited to 2 tissues, often WM and CSF/fluid. But even in those scenarios, some manual work in getting the right response functions can overcome that (though you’ll need some technical expertise there to dig in). But to be clear also on this point: the necessity of the latter is extremely exceptional. Long story short: 3-tissue modelling, be it with MSMT-CSD or SS3T-CSD is almost always possible, and I would strongly advise to use always use the “multi-tissue” FBA pipeline, combined with the appropriate CSD technique. That’s the pipeline we also described in the review paper: regardless of single-shell (+b=0) or multi-shell data, the pipeline is always “multi-tissue”, allowing for the use of the best methods throughout. If it were up to me, I’d remove the single-tissue FBA pipeline from the online manual at this stage, or at least don’t link it directly from the main menu. It only tends to confuse people unnecessarily.

Thijs (Wednesday, 08-Jun-22 03:21:41 UTC)

1 Like