Which dwi2response algorithm will work best


I would like people’s opinions on which algorithm will work best. For the condition. As you can see the image I have attached below

It is a sheep brain FA map after fsl generation in 3d view, the whiter areas of the brain (or the cortex) outer region of the brain have relatively higher FA values 0.2-0.3. The insde or the white matter regions have lower FA values <0.1 and are dark/black in this map. The problem is most FA values in the guides say high FA is 0.7 onwardsm whereas the highest FA here is 0.25…So confused if i should class that as a high FA
If someone with expertise could point me in the right direction it would be much appreciated.

These look like neonatal / preterm brains to me… How old are these animals?

If they are preterm, things get a bit weird… But you’ll probably find that running dwi2response with default parameters will work just as well as anything else - at least for standard CSD. Things get very messy for the multi-shell variant - this is something that I’m looking into in the context of the developing human connectome project…

Yes, they are fetal. Sorry I am using multi shell many b values, so how would this affect the analysis? And when you mean default you mean tournier?

That changes things quite a bit… The problem is that in fetal brains, the GM looks more like adult WM, and the fetal WM has very low density. This means the nice simple analyses that we use in adults using multi-shell responses estimated from GM, WM & CSF don’t really apply - certainly not as cleanly as in the adult case.

If all you’re interested in is tractography, I’d actually recommend sticking to the standard single-shell CSD analysis, using just the highest b-value shell. But that depends on you having enough directions/SNR in that shell alone. If you want to do something more fancy using the multi-shell framework, they you’ll have to think about it some more. I’ve been looking into this for a while now, and it’s not obvious to me what’s the best thing to do…

Yes, that’s what I meant. But only if you’re going to do a simple single-shell CSD analysis.

Yes I am just interested in tractography so I will go with single shell but i want to re clarify for this…
My current -grad encoding file has first 10 volumes containing [ 0 0 0 0] (non diff weighted) with the 3 bvecs and1 bvals respectively making the 4 values shown in the bracket, and the next 81 (diffusion weighted volumes) with the respective bvecs and bvals. Do I find the highest bval value and replace it for all the bvals for the 81 diffusion weighted volumes in single shell?

Not sure what you’re asking exactly, I can’t see your DW encoding (?), but if I understand correctly, the answer is a clear ‘no’: please don’t mix different b-values together, that’s not an appropriate thing to do. If you provide the data as-is to dwi2response with the tournier algorithm, it should default to using the data in the outermost shell only - all the other data will simply be ignored. This is why I’d mentioned that this may not be a great solution for you if you end up having too few volumes in the highest b-value shell…

Maybe if you can provide the output of mrinfo dwi.mif -shells -shellcount, I could give you more useful feedback…

What do you mean by the outer shell for default? and also by too few volumes?

Anyway the output of mrinfo gave this…

So what should be my recommended course of action now in terms of tractography, is there any chance I can get some good results with my data, thats all I need to do.

Ok, for that previous command, the reason it’s failing is presumably because the DW gradient info isn’t included in the image header itself. You’d need to add the -grad grad.b if you have the DW gradient info in MRtrix3 format, or the -fslgrad bvecs bvals if you have it in FSL format.

What I mean by the outer shell is the set of volumes with the highest b-value. That would be the set that contains the most angular contrast, and would be most likely to give you some sensible information for tracking. The problem there is if you end up with very few volumes in that shell, you might struggle with SNR, and maybe also struggle to properly characterise the DW signal’s angular dependence.

Ultimately, the main problem is that tracking in fetal data is really hard. I can probably give you a touch more advice once you post the output of that mrinfo command, but realistically not a great deal more…

Ok here it is

OK, you actually have single-shell data, not multi-shell. This makes life simpler… The only thing you can reasonably do here is to use the tournier algorithm for the dwi2response step (although you should feel free to explore the fa and tax approaches too if you want), and use that for a single-shell CSD analysis using dwi2fod. You should be able to get some reasonable tracking with that, see how you go.

OK thanks, but just out of curiosity (I am very new to this program and environment) how did you tell that was a single shell, and what would a multi shell output have looked like.
Thanks a lot again.

The output of mrinfo gave a breakdown of the numbers of volumes per b-value. You have 10 b=0 volumes, and 81 b=6070 s/mm² volumes. This is a fairly typical single-shell, high angular resolution diffusion imaging (HARDI) scan (although with a higher b-value than would typically be acquired in vivo, but appropriate for ex vivo imaging). Single-shell in this context refers to the fact that all your DW images (i.e. those with b>0) are acquired at the same b-value.

A multi-shell sequence would have looked something like this:

$ mrinfo dwi.mif
0 400 1000 2600 
20 64 88 128 

The above would correspond to a protocal with 3 b>0 shells, with b-values of 400, 1000 & 2600 s/mm², comprising of 64, 88 & 128 volumes respectively. There are also 20 b=0 volumes in there (the first column).

Yep cheers, got it.

@jdtournier does this still apply for the updated dhollander command, since WM response function estimation also got improved for single shell data? Would you still recommend using high bvalue single shell data over multishell data in fetal MRI, or have there been any major changes one should be aware of?

Cheers, Philip

Hi Philip,

The default behavior of dwi2fod csd when you run dwi2response tournier on multishell data is indeed automatically selecting largest b-value

I am also curious to know what could be the rationalle behind the focusing on the largest b-value since there are also views against this approach vs the msmt_csd.

1 Like

Hey both,

This is a bit of a controversial topic. I’m just stating some conservative bits. My posts are otherwise moderated, so I am not speaking entirely freely by choice. But in any case, to do away with damaging for/against rhetoric, some general principles:

  • dwi2response tournier is an older approach, which was at the time simply just designed for single-shell data, for the purpose of the original “single-tissue” CSD (i.e. called just “CSD”). This only uses the largest b-value, no others and no b=0 data. But note critically that this was simply only a single-shell technique, hence it’s simply not designed for multi-shell data. There’s no other reasons behind why it chooses thus naturally only a single shell (highest b-value then being the best, because superior angular contrast).

  • dwi2response dhollander can work with any number of b-values. If you give it a multi-shell dataset, you’ll get 3 (WM-GM-CSF) multi-shell responses. If you give it a typical single-shell dataset (which typically also includes b=0 data), you get a “single-shell + b=0” set of 3 responses. Note that this is itself also different from `dwi2response tournier’, which doesn’t get the b=0 part, because the original CSD also doesn’t use that part by design.

  • Thus, you can use dwi2response dhollander outputs for a range of stuff, going from MSMT-CSD on multi-shell data, to “2 tissue” CSD (WM-CSF) on single-shell +b=0 data using the MSMT-CSD algorithm, to (and pray this doesn’t get blocked) SS3T-CSD on single-shell +b=0 data. The latter SS3T-CSD uses an external fork of the software that is not supported by the MRtrix3 team, but that I put out there to make that method available to you.

So, that’s the possibilities. On kids all the way to adult and elderly human data, and a range of animal data, all the above is realistically possible, fits well, and leads to good results. Using different parts of data (i.e. particular shells, etc…) has different properties; there’s lots of discussion in the literature for consideration. I’m not going to comment on it here.

On fetal and neonatal data, we’re getting further into controversial areas due to our obvious involvements with such data and small or big projects, hence arguably conflicts of interest all over the place. I won’t comment on it, but very carefully I can at least suggest that different approaches are also possible, several (but not all) which have been referred to on this forum. When I say “possible”, I mean that these different approaches will all fit the full or consciously selected parts of the data quite well. So arguably, they’re all “valid signal representations”. However, when choosing response functions based on different types of definitions, this will obviously imply different interpretations of those signal representations in the end. Some might try to represent “WM-like, GM-like and CSF-like” tissue, others might try to represent “young / less developed WM-like”, “older / more developed WM-like” and “CSF-like” tissue, and yet others might represent something else entirely again. I would encourage people to play around with different options and not necessarily rely on the one or the other or yet other sets of rhetorics necessarily. We’re all very capable researchers (including you all).

This exercise doesn’t have to be daunting even, if you fall back on what all CSD approaches have in common: you model / fit your diffusion signal in function of your set of response functions. The resulting maps or FODs represent the amount of signal that respectively resembles each of the corresponding response functions. Hence why I like talking about concepts like “GM-like” tissue, etc… If the response function comes e.g. from actual GM regions, then the corresponding fitted map will tell you where in the entire brain similar diffusion signals appear, and in what amounts. So think in terms of those response functions that you happen to use in whichever approach takes your fancy. You can almost think of it as pattern matching, if that helps to make sense of it (don’t take that too literally though; just a vague intuition). That’s CSD approaches for you. You can also contrast that set of (CSD) approaches with microstructure types of modelling, like NODDI, where the assumptions of compartments are more a priori defined in the model, and might clash with the reality of the data in unusual scenarios. With CSD, you’ve got more powers and flexibility as to the definition of your model in your own hands, I would say; but you have to think wisely to make sure it makes sense in the end when you write discussion sections in papers.

Good luck & have fun.

Thijs (Wednesday, 27-Oct-21 08:42:45 UTC)


Dear Thijs,
Thank you very much for your thorough reply! It’s very much appreciated

Thanks to both of you! Very much appreciated indeed!