How to know the response is correct (for Bruker data)

Hi,
I am starting using now MRtrix with a multishell sequence (on a mouse acquisition from a Bruker machine), how do I know my response is correct. I browsed previous posts but there is no simple answer to this question. I mean I am supposed to see a perfect sphere? A spherical harmonics? a torus?

I have run the following commands, and obviously the results are terrible

dwi2mask alpha8_eddycorrect.nii.gz alpha8mask.nii.gz -fslgrad Alphasyn_8_DwGradVec.txt Alphasyn_8_DwEffBval.txt

dwi2response dhollander alpha8_eddycorrect.nii.gz alpha8.response -fslgrad Alphasyn_8_DwGradVec.txt Alphasyn_8_DwEffBval.txt -mask alpha8mask.nii.gz

dwi2fod msct_csd alpha8_eddycorrect.nii.gz alpha8.response alpha8.fod -mask alpha8mask.nii.gz

tckgen alpha8_fod.nii.gz alpha8_trk.nii.gz -seed_image alpha8mask.nii.gz -mask alpha8mask.nii.gz -select 2000

A torus would be cool. :blush:

No, just like with human data, you want to see increasingly sharper “disk” shapes for higher b-values, at least for the WM response. You can open it in shview and use left/right arrow buttons to go through each b-value. For b=0 it’ll be a perfect sphere (by definition).

More importantly, you’ll want to check the voxels selected to see they make sense for each tissue type (WM GM CSF). That’s possible by adding the -voxels myvoxels.mif option to dwi2response dhollander when you run it. And then view those voxels by overlaying them with e.g. your dMRI data (e.g. a b=0 image) for reference. If the voxels selected aren’t sensible, this most likely is corrected by setting a good value via the -fa option to the dwi2response dhollander algorithm. By default, it’s set to 0.2, which works fine for a wide range of applications, mostly human ones. Depending on your b-values, whether it’s in vivo or ex vivo, etc… you sometimes might want to consider lowering that, to e.g. 0.15 or even lower. That value needs to be set to an FA value that roughly separates WM and GM for your data. It doesn’t have to be perfect (the rest of the algorithm fixes everything for you), but at least roughly ok-ish.

And in general, always look at images (and show them to us!). From your commands, it’s hard to tell what is terrible about the results, or at which step it became terrible (and once something becomes terrible, it’s trash-in trash-out for all subsequent steps; so we need to identify where things are going wrong).

It’s definitely possible to get good results for challenging animal data; we were recently able to apply these techniques even to growth restricted newborn lambs. Note that, for that to be a success, we had to rely on the new 2019 version of the dwi2response dhollander algorithm (also talk here). In the current RC3 release of MRtrix3, still the older 2016 version is used. The newer 2019 version is already released here. It might also possibly make it into the next MRtrix3 release, but I can’t guarantee that (if or when) personally. Let’s hope so.

Other than that, do show us those selected voxels overlaid with e.g. a b=0 image for reference. Also maybe show us all outputs from MSMT-CSD.

Another tip: convert our data to .mif format right at the start of the pipeline, i.e. when importing the data, so you don’t have to work with .nii.gz and bvals and bvecs throughout. Too many opportunities for things to go wrong there; simply avoid.

Some of your commands to look strange though (and can’t even work): you need to get 3 tissue responses from dwi2response dhollander, and use 3 pairs of responses and FODs/compartments with MSMT-CSD. As you wrote your commands here, they would’ve error’ed out for sure.

And yet another tip: importing Bruker data is a nightmare; so first check e.g. with a simple DTI fit and FA and MD maps whether importing worked fine.

Good luck,
Thijs

No matter which tags I use I cannot put images.
Hi,
thanks for your reply.
according to what you said the response is correct, or at least it makes sense!
These are the results for B0 and the other two bvalues

Then this is the output of hte -odf.load_sh which is weird even after che myvoxel check:

and this is the results of the tractography for 2000 fibers, I haven’t changed the FA threshold or the angle limit but definetely it doesn’t look good
I will move to mif

I don’t understand the part about the three responses from dwi2response dhollander. I am not getting errors or warning though. And Above all I am only interested in axons, so the WM. How do I ignore the rest?

Lastly, you mention a check of the FA maps, how would you do that?

dwi2response dhollander provides you with a WM, GM and CSF response at the output. Even if you don’t need them all, it always estimates them all (as estimating some depends on parts of the estimation process for others; i.e. you could say there’s interactions between their estimation processes). Also, even if you’re only interested in axons, you still want to account for as many other tissues as possible. The WM (“axons”) will be estimated better if other tissues are accounted for in the model. “ignoring the rest” would also make the WM estimation worse.

Just using dwi2tensor and tensor2metric. This is merely a basic assessment of your data, so as to say. I’m mentioning this mostly because it’s Bruker data, which others have had different issues with in the past to import well. Nothing per se wrong with the data, it can just be a hassle to import it correctly. I’m not an expert on Bruker data though; so that’s about all I can say about it here.

If you want us to check anything further though, you’ll have to provide images; otherwise it’s a guessing game. You can simply drag an image from whatever file explorer you use on your computer to the editing field where you create your message here. It should upload an insert the correct tags/code for you.

on a mouse acquisition from a Bruker machine

For such data I would suggest running dwigradcheck as well. Both one-off and systematic mistakes in manual handling of the diffusion gradient tables are quite common, and I know the data formats from Bruker can be challenging. If the gradient tables are way off, then the data across single-fibre voxels are not combined correctly, and the WM response comes out way more isotropic than it should.