B-value precision corruption during mrconvert

Hi guys!
I’m experiencing consistent b-value corruption during mrconvert operations. My original gradient files contain correct b-values (4 volumes at b=0, 42 volumes at b=2800), but after conversion, mrinfo -shell_bvalues shows 0 2011.85 instead of 0 2800.
I tried using the nii.gz format during mrconvert as well as the mif format, but none seems to work:
mrconvert sample_subjects/35_S_M_30_preproc.nii.gz
temp_clean_header.mif -force
mrconvert temp_clean_header.mif
dwi_clean_gradients.mif
-fslgrad bvec_bval/MEAN.bvec bvec_bval/MEAN_2800.bval
-force
mrinfo dwi_clean_gradients.mif -shell_bvalues

I also looked at another post which uses things like: mrinfo test_new_version.mif -dwgrad -raw_dwgrad, but the -raw_dwgrad option is not found in my mrtrix.

I was wondering if anybody have tips for how to solve this & if it will influnence my next step greatly (bias correct).

Thank you so much!

Hi @Jingyue,

Most likely what’s happening is that your “original” gradient table contains the correct b-values but incorrect vector directions in that they are not of unit norm. When MRtrix3 reads those data, it normalises those vectors, and appropriately scales the b-values correspondingly, which you are then perceiving as corruption. Providing diffusion sensitisation directions with less than unit norm is a common approach for achieving multi-shell acquisitions, based on the relationship between gradient amplitude and b-value.

-raw_dwgrad was removed in #2015 as part of version 3.0.0, because you can achieve the exact same thing using mrinfo -property dw_scheme.

If you are convinced that the default MRtrix3 interpretation of these data is incorrect, and that the b-values should remain unchanged despite the vector directions not being of unit norm, then you can modify this behaviour using option -bvalue_scaling. However it’s quite possible that the achieved b-value of your acquisition was in fact 2000 and not 2800.

Regards
Rob