Question on Tensor Fitting with Single vs. Multishell Data in MRtrix3

Dear MRtrix3 experts,

I have a question regarding the tensor fitting process for analyzing diffusion maps, specifically about how it differs between single shell and multishell data.

According to the mrtrix3 manual, I understand that tensor fitting is achieved by first applying Weighted Linear Least Squares (WLS) followed by Iterated Weighted Linear Least Squares (IWLS).

DWI data I am working with consists of images acquired at eight b-zero, b=800 and b=2800 (with 30 directions each), and I intend to calculate FA, ADC, AD, and RD using these images.

In this case, does the fitting process primarily utilize the lower b=800 data only, or if both shells are used for tensor fitting, could you explain how this fitting is conducted?

dwi2tensor uses all available images (i.e. across all shells).

If you wish to only use the images corresponding to specific b-values you have to select them yourself in a separate command, typically dwiextract.

E.g. to fit the diffusion tensor to the b<=800 data only, discarding the b=2800 data you would run:

dwiextract -shells 0,800 dwi.mif dwi_lowb.mif
dwi2tensor -mask mask.mif dwi_lowb.mif dt.mif 

or you could string these commands together using pipes as:

dwiextract -shells 0,800 dwi.mif - | dwi2tensor -mask mask.mif - dt.mif 

To get a list of the b-value shells available in your dataset, you could use:

mrinfo dwi.mif -shell_bvalues 

Thank you! :smiley:

Hi @bjeurissen

As a follow-up question: as I understand with multi shell data (0, 1000, 2000) dwi2tensor calculates the tensor on all b-values. However, I’m told that on higher b-values tensor fitting can get dicey (right?). For a between subjects-study, is there any reason not to use dwi2tensor on 0,1000,2000?

Thanks in advance :pray:


@jdtournier @ThijsDhollander
somebody else that could weigh in?

Hi Jon,

In terms of what the software does, you can refer to @bjeurissen’s answer. As to what’s the right thing to do, well… You will find a variety of opinions on the topic!

In general, most experts will agree that the diffusion tensor is only ‘valid’ in the limit of low b. By ‘valid’ here, we mean that higher order terms become negligible, and the tensor model fits the signal well. So most experts will strongly advise against using b-values much larger than ~1,000 s/mm² in the tensor fit.

The other argument is that the overwhelming majority of the literature provides values derived from regular single-shell b=1,000s/mm² data. If you need your tensor metrics to be comparable to literature values, you’d be well advised to use the b=1,000 s/mm² shell only.

In practice, the impact of including higher b-values in the fit depends strongly on the fitting strategy used. Many implementations (including previous versions of MRtrix) use a straight least-squares fit to the log-signal – sometimes referred to as an ordinary least-squares (OLS) fit. But that tends to dramatically inflate the noise contributions from the low signals (as would typically be observed in the high b-value shells), and that can lead to instabilities and biased estimates.

More modern fitting strategies employ a weighted least-squares strategy – in our case, we use an iteratively re-weighted least-squares strategy. These will appropriately down-weight the low-signal contributions to ensure the noise in those values does not affect the estimated metrics more than would be expected. I suspect the values derived using these fitting strategies should be much more stable and closer to the single-shell values – but bear in mind I don’t have data to back that up, I’ve not looked into the problem in any great detail. And either way, I think the first two points above should already settle the issue…

Hope that helps!

Thanks a lot, Donald!