Why does each line in the response function wm.txt contain 6 values?

Hi MRtrix Community,

My dMRI data includes 4 b-values: 0, 1000, 2000, and 3000.

I used the following command to calculate the response function and generate the FOD file.

dwi2response dhollander \
    dwi.mif \
    response_wm.txt response_gm.txt response_csf.txt
dwi2fod msmt_csd \
    dwi.mif \
    response_wm.txt wmfod.mif \
    response_gm.txt gm.mif  \
    response_csf.txt csf.mif \
    -mask dwi_mask.mif

According to this document (Spherical Harmonics — MRtrix3 3.0 documentation), when I check the dimensions of wmfod.mif, it shows 145 174 145 45. Therefore, I suspect that l_{max} is 8.

So, shouldn’t there be only 5 values in each line of the response function file (i.e., 1 + l_{max} / 2)? Why does my file contain 6 values? The content of my wm.txt file is as follows.

# Shells: 5,998,1998,2996
# command_history: /home/rr/anaconda3/bin/amp2response dwi.mif voxels_sfwm.mif safe_vecs.mif response_sfwm.txt -shells '5,998,1998,2996'  (version=3.0.3)
11009.2560615839 0 0 0 0 0
6037.55573930394 -2289.90088912079 529.350973959199 -77.6262513457664 8.64688628339599 -1.14942618531947
4327.16454907292 -2129.59244441192 914.253226044538 -265.86783763817 44.1929393364695 -2.43375670482871
3596.3938085167 -1797.68230125644 976.522942683336 -392.039779502504 111.548103880026 -19.8471604296524

I would greatly appreciate it if someone could explain this.

By default, dwi2response will estimate the response up to l_max = 10. This sounds impossible with only 45 directions, but you have to realize that the response is estimated from exemplar voxels which can have arbitrary underlying fiber directions. After aligning the signals from all exemplar voxels such that the fiber direction aligns with the z-axis and reorienting the gradient directions correspondingly, there will be much more than 45 directions to go by.

1 Like

Thank you for your response. The help documentation for dwi2response does not mention the default value of l_{max}, but the option -lmax in dwi2fod specifies a maximum of 8. So, I naively assumed that the default value of l_{max} in dwi2response was also 8. Now that you mention ‘dwi2response will estimate the response up to l_max = 10,’ everything makes sense.