Estimate response function for multi-shell ex-vivo marmoset data

Hi, J-Donald,

Thanks for your reply. I am much clear now.

The scaling issue is weird since the data was directly converted from 2dseq raw data and the RG and slope were directly read from the raw data (acq and method from the scanner).

The difference between b7200 and other shells (b=0,2400,4800), is that the b7200 have the number of average = 2, and the others are 1. I think this setting may cause the scaling issue. Most possible reason is that when the Bruker acquired the data with 2 averages, it only sum-up the values but didn’t divide the value by 2.

Your answers reminded me of checking the noise.

I calcuated the mean and the std of the background values (noise) for different shells using a mask shown in the red:

One DWI image:
b0 = (mean) 15139.66 +/-  (std)6974.30
b2400 =     14833.24 +/-       6991.54    
b4800 =     14724.05  +/-      6944.20
b7200 =     20905.63 +/-       9887.80

From this table, we can see:

  1. The std of noise (also the denominator term for SNR) is not changed across different shells (b0, b2400,b4800)
  2. The b7200 indeed has a higher noise scaling (about 1.42x) than the other shells.

Since the b7200 has 2 averages, it should have √2 = 1.42x less noise std than the other shells.
If the scanner did not divide the value by 2, the noise level of b7200 would be 2/√2 =1.42x higher noise than other shells, consistent with the observation.

Based on the above estimation, there are two methods to rescale the b7200.

  1. Dividing by 1.42x: the b7200 will have the same noise level as the other shells. However, since the b2700 have two average, this may be not the real noise level. After rescaling, the FA of b7200 is reduced with few voxels > 1, but the overall FA level is still larger than the b2400&b4800.

  2. Dividing by 2 : this may be the real noise and signal level for b7200, but in this case, the noise level of b7200 will be different from other shells. After rescaling, The FA of b7200 come to a similar level to b4800!

Which method should I use to rescale the b7200 for Mrtrix(csd)-based tracking?

Should I keep the same noise level across shells, or keep the normal fitting (real noise and signal level of b7200)?

If the later case, should I perform dwidenoise directly on all shells, or perform it seperately on different shells?
(After dividing by 2, the noise level of b7200 will be different from the other shells. However, from my understanding, the PCA will also normalize the data. Thus it should be OK to performed dwidenoise directly on all shells?)

The data will be used for tractography and reconstructing all white matter tracts in marmosets. Meanwhile, I also hope to use it to construct a super-resolution TDI image to help me manually drew or delineated some small white matter ROIs, and also for qualitative visualization.

There will be NO quantitative statistically comparison (for example between two groups). Thus, the real value of the fitting mapping won’t be a big issue for me.

Sorry to bother the issue that less related to Mrtrix.

Another question is about dwi2fod, if I want to set the lmax = 12 for example.

dwi2response manual dwi.mif wm.nii.gz wm.txt -lmax 0,8,10,12 
dwi2response manual dwi.mif gm.nii.gz gm.txt -lmax 0,8,10,12 

dwi2fod msmt_csd dwi.mif wm.txt fod_wm.mif gm.txt fod_gm.mif -lmax ???? -mask mask.mif

Should I set lmax of dwi2fod to 12,0 or 12,12, or anything else?

Thanks!