Single shell multiple b-values

Dear experts,

I have single shell data, with b=100 acting as the b=0 scan accounting for “effective” b-value from the imaging gradients. And I also have b=1600 and 1650, with 1650 including the effect of imaging gradients.

When I run the following commands;
dwi2response dhollander DWI.mif RF_WM.txt RF_GM.txt RF_CSF.txt -force
dwi2fod msmt_csd DWI.mif RF_WM.txt WM_FODs.mif RF_GM.txt GM.mif RF_CSF.txt CSF.mif -force

I do not get any errors and the output looks okay, I just wanted to check it is appropriate to do so with single shell data or should I use a different approach?

Thank you so much for your help.

Peter

So there’s a couple of considerations here. First is whether the response function estimation will work out of the box with data that do not have actual b=0 data, but nonetheless do have a low b shell. There needs to be at least two distinct b-values in the data since the dhollander approach relies on a tensor fit. I can’t think of any reasons why this would not work (I expect @ThijsDhollander will correct me if that’s not the case), but the best way to answer that would be to inspect the voxels selected by the procedure and check that they are located in sensible locations, and also look at the estimated responses to make sure they make sense.

The second consideration is whether you can do a full 3-tissue decomposition in the dwi2fod msmt_csd call, given your 2-b-value acquisition (I expect the b=1600 & 1650 shells will be treated as one by the algorithm, which is fair enough since I expect the difference is likely down to rounding errors, rather than having been introduced by design?). The answer to that is a resounding ‘no’ - you should really use a 2-tissue approach (WM + CSF would be the most sensible here). I’m surprised to hear that the results look OK nonetheless? I’d expect that would require a bespoke approach like the single-shell approach presented recently by @ThijsDhollander. No doubt @ThijsDhollander will also be able to provide more insightful comments on this issue…

It might be worthwhile first double-checking that the “shells” (b-value clusters) are detected decently. I think they should be, but you never know. To do so, you could go with:

mrinfo DWI.mif -shells -shellcounts

You should get an output that indicates both b-values (but only just 2, not more than that) and the count of number of images / gradient directions per b-value.

Yep, it should work by design. It could potentially struggle slightly more due to reduced contrast between b=100 and b=1600 (versus the contrast one would have with b=0 versus something else), but I reckon b=100 should still be sufficiently low. By the way, it’s not only the tensor fit that imposes this requirement; but the main mechanism (that a big part of the algorithm relies upon) to home in on the GM and CSF responses is based on a signal decay metric; so a relative balance between at least 2 b-values is always at the core of this algorithm. It’s for the latter that a high “decay contrast” is preferable. But I’ve seen it perform in much more challenging scenarios than the one described here, so I’m not particularly worried. :slight_smile:

Yep, that would be a good idea indeed. @mccolgan, obtain these voxels via the -voxels option to dwi2response dhollander and see these posts for a few ways to visualise these voxels:

Yes, I suppose when @mccolgan said that the output looks okay, this might have been referring to potentially just the (WM) FODs? Sure these would still look decent, but the GM would indeed not be filtered out. If you’d look at all 3 tissue components, the GM is probably empty / unused, and all the signal is fit by WM and CSF. This is simply the limitation using MSMT-CSD with 3 response functions out of the box on single-shell data. Doing 2-tissue CSD (only WM and CSF) will give you virtually the same result, but it’s important to still be actively aware of this and don’t describe your WM FODs as if they came from a proper 3-tissue decomposition. To be able to get the latter from just single-shell data, you’d indeed need single-shell 3-tissue CSD (SS3T-CSD), which sadly isn’t publicly available yet.

@mccolgan, to get some further insights on this front, I’d recommend to start reading this post: Wm ODF and response function with dhollander option _ single shell versus multi shell and maybe this one as well: SS3T (or 2S3T) CSD Implementation … and clicking on every single link you’ll find in there (to other posts as well, and even in those other posts click on links as well, and so on…). There’s an emerging semi-dark web of SS3T-CSD intra-linked posts throughout the community forum. The search functionality (at the top right) may come in handy too. :wink: Let us know if you’ve got any further questions.

Cheers,
Thijs

1 Like