Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
nicdc opened this issue Feb 20, 2020 · 4 comments
Closed

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

nicdc opened this issue Feb 20, 2020 · 4 comments
Labels
question Question

Comments

@nicdc
Copy link

nicdc commented Feb 20, 2020

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 nicdc added the question Question label Feb 20, 2020
@nicdc
Copy link
Author

nicdc commented Feb 20, 2020

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

Cheers,
Nick

@nicdc nicdc closed this as completed Feb 20, 2020
@thijsdhollander
Copy link
Collaborator

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
Copy link
Author

nicdc commented Feb 21, 2020

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
Copy link
Collaborator

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Question
Development

No branches or pull requests

2 participants