PennLINC / qsirecon

Reconstruction of preprocessed q-space images (dMRI)
https://qsirecon.readthedocs.io/
BSD 3-Clause "New" or "Revised" License
5 stars 3 forks source link

[DOC] ss3t_csd_beta1 needs better documentation #37

Open layerConnectome opened 3 years ago

layerConnectome commented 3 years ago

I tried to use the reconstruction option "mrtrix_singleshell_ss3t" of qsiprep and encountered the following error:

ss3t_csd_beta1: 3 unique b-value(s) detected: 5,999,1998 with 8,50,53 volumes ss3t_csd_beta1: [ERROR] Need b=0 data and a single non b=0 shell

Could I do a tensor fit using the b=1000 shell via the reconstruction pipeline of qsiprep? Would you please suggest how to set this up in qsiprep? Thank you.

smeisler commented 3 years ago

Not directly answering your question, but if you have multishell data, why not use the multi-shell multi-tissue (MSMT) pipeline? While typical DTI tensors tend to get wonky at high b-vals (which I suppose is why you wanted to only fit with the b=1000 shell), FODF acts better at multiple (and higher) b-vals. If, at the end of the day, you still want to only use the b=1000 shell, you can use a package from Scilpy to extract only the b=0 and b=1000 shell of the preprocessed image and continue from there https://scilpy.readthedocs.io/en/latest/modules/scilpy.utils.html?highlight=shell#scilpy.utils.bvec_bval_tools.extract_dwi_shell

thijsdhollander commented 3 years ago

Hi there, just chipping in; I'm the developer of SS3T-CSD (ss3t_csd_beta1). I have the feeling there's some confusion here; @layerConnectome, can you clarify your ultimate goals with the data? I would partially echo @smeisler's comments; but there is some nuance. Just to split up between a few distinct goals:

  1. If you're ultimately after a tensor fit, as in "diffusion tensor imaging (DTI)", then yes, you'd preferably use b=0 and b=1000. But again, that's for the DTI model.
  2. If your ultimate purpose is WM fibre orientation distributions (FODs), so the interest is in constrained spherical deconvolution (CSD) techniques, then there are generally two reasonable options with your data: MSMT-CSD using the entire dataset (all b-values, as @smeisler suggested correctly), or alternatively SS3T-CSD --however-- the latter would typically be using the highest b-value (so b=0 and b=2000 here). Both are sensible options. The latter SS3T-CSD choice would be motivated by higher angular contrast-to-noise ratio and/or less extra-axonal signal contributions for the purpose of quantifying apparent fibre density. With 53 gradient directions, you have the data to support it.
  3. As mentioned, SS3T-CSD (for the purpose of WM FODs) using your lowest b-value is generally not advisable and sub-optimal compared to both of the aforementioned two other options (MSMT-CSD using all b-values or SS3T-CSD using the highest b-value). The only reasons for doing such a thing, would be if there are strong concerns or issues with your highest b-value data, such as unusually low SNR and strong Rician biases. I've only seen this in a couple of particularly exceptional scenarios; so this likely doesn't apply to your case.

...but as mentioned, I got the feeling this question arose from a confusion with tensor modelling (DTI). If you do need a specific set of b-values extracted upfront, you can indeed use @smeisler's suggestion via Scilpy, or e.g. the dwiextract command in MRtrix. Other packages probably have similar commands as well.

We described several things related to acquisitions/data for WM FOD reconstruction in our recent fixel-based analysis review paper here: https://www.sciencedirect.com/science/article/pii/S1053811921006923 . A lot of this is based on the original apparent fibre density paper by David Raffelt ( https://www.sciencedirect.com/science/article/pii/S1053811911012092 ), and Sila Genc's work on the impact of b-values on estimating apparent fibre density ( https://onlinelibrary.wiley.com/doi/full/10.1002/hbm.24964 ).

mattcieslak commented 10 months ago

This is worth adding to the documentation