3Tissue / MRtrix3Tissue

MRtrix3Tissue adds capabilities for 3-Tissue CSD modelling and analysis to a complete version of MRtrix3.
https://3Tissue.github.io
Mozilla Public License 2.0
10 stars 6 forks source link

Adjusting bzero_pct option when GM and CSF maps are near zero #17

Closed nicdc closed 4 years ago

nicdc commented 4 years ago

Dear Thijs,

Thanks for this amazing tool, we're using it on single shell (B=1300), 60 direction diffusion data (single no diffusion volume). It runs perfectly for most of my participants but for one I see that the gm.mif and csf.mif values are near zero, which causes mtnormalise to throw an error.

Would you recommend adjusting the bzero_pct to prevent the script from assigning all the voxels as WM-like? In which direction and to what degree would you suggest?

Thanks,

Nick

nicdc commented 4 years ago

I found the root of the error, had nothing to do with your script, sorry!

Cheers, Nick

thijsdhollander commented 4 years ago

Hi Nick,

Yep, that should all work in principle. Just to briefly add for future reference:

Thanks for this amazing tool, we're using it on single shell (B=1300), 60 direction diffusion data (single no diffusion volume).

All good, in line with other feedback! This b-value should certainly work; 60 directions is perfect; the single b=0 volume is in principle not an issue. The only risk here really is in that single b=0 volume, since "everything" depends on it; that's the only reason why multiple b=0 images are safer: if one of them has any issue at all, the other ones would make up for it. But other than that, b=0 images have the best SNR of the dataset, so a single one is technically fine.

It runs perfectly for most of my participants but for one I see that the gm.mif and csf.mif values are near zero, which causes mtnormalise to throw an error.

Yes, something like that would indeed mess up mtnormalise. Even if it would finish without an error, it shouldn't be trusted in such a scenario.

Would you recommend adjusting the bzero_pct to prevent the script from assigning all the voxels as WM-like? In which direction and to what degree would you suggest?

So even though, in the end, you found the source of the issue, this would've not been a proper solution in any case actually. This mostly because you mentioned that the csf.mif also had all values near zero: that indicated something was "really wrong" in some way. The bzero_pct has an impact on the speed with which GM is traded for "WM+CSF". So over iterations, GM decreases, but WM as well as CSF increase "in turn". The fact that the CSF was near zero here, didn't fit that scenario.

Besides this bit, I'm also more and more realising that bzero_pct probably needs no tweaking at all for a wide range of scenarios. At the moment, the documentation still describes this in quite a bit of detail, and carefully suggests that this might be needed for some scenarios. But in the mean time, the feedback here has shown that even for those cases where I thought tweaking might be desirable, it actually works just fine out of the box! If I find some time, I'll update the documentation to simplify things a bit (and take some worries away that people might otherwise have). The only scenario where I can currently still imagine to tweak this, would be e.g. ex vivo data, likely for low b-values; (however, there you could then argue that if this happens, maybe the b-value was rather (too) low).

One other side point: you'd also never want to change this parameter for an individual participant in a study, if you aim to be able to compare (quantitatively) among them; similar to how you also want to use a single set of 3-tissue response functions for all your participants (again, if they should be compared quantitatively). So after preprocessing, always run SS3T-CSD across all participants in a group (with the same acquisition parameters), with one unique set of 3-tissue response functions, and all with the exact same SS3T-CSD parameters. The latter should be able to be left at the default values for almost all scenarios I've encountered to date!

Always feel free to post a screenshot or two as feedback, even if you're just looking for confirmation that everything looks fine / up to expectations. 🙂

Cheers, Thijs

nicdc commented 4 years ago

Thanks Thijs,

These are all really helpful points.

Here are some screenshots of the data from this participant. Pre-processing included standard MRtrix RC3 single-shell pipeline plus eddy outlier replacement, slice to volume correction, and unwarping with fieldmaps (using FSL epi_reg).

B0 - before preproc ss3t_csd_B0_orig0000

B0 - after preproc ss3t_csd_b00000

CSF-like ss3t_csd_CSF0000

GM-like ss3t_csd_GM0000

WM-like ss3t_csd_WM0000

Best, Nick

thijsdhollander commented 4 years ago

Hi Nick / @nicdc,

Thanks for the feedback. As you might've noticed, I've re-posted it as a "feedback" topic over at #20. It looks really good!

Cheers, Thijs