fixel2voxel: how to extract primary, secondary, and tertiary voxel-based FD maps

Hi,

I am trying to convert fixel data such as FD, FC and FDC into voxel-based metrics. I believe the fixel2voxel command is best suited for that purpose. The complexity metric is interesting to me as well and this paper:


explains its meaning well.
For the other metrics I am unsure what makes the most sense. I am considering using the sum option for FD, FC (log) and FDC but debating whether it is more appropriate to use the weighted option. Are there some recommendations depending on the type of study? We are planning to look at multiple metrics in a large group of individuals.
I have not found much on the topic in the literature. What I have found in literature, in this paper:

is that they are using the primary, secondary, and tertiary voxel-based FD maps, apparently extracting these with fixel2voxel, but I cannot find how to get these metrics from the Mrtrix documentation.
Is it done using the -none option and -number 3 (to get the 3 largest fiber bundles)? I read in a previous post on this forum that the peaks are actually ordered by peak amplitude and not by fiber density. Has this been changed?

To summarize here are my 2 questions:

  • If/when to use the weighted option of fixel2voxel
  • If FD can be extracted for the 3 main peaks (ordered in terms of FD)

Thank you,

Stefanie

Hi Stefanie,

Okay, there’s a few things to cover here… <stretches>

The complexity metric is interesting to me as well

Free tip: If investigating the complexity metric, I would advocate using the -fmls_no_thresholds option in fod2fixel. Whether or not an FOD lobe other than the largest one does or does not survive thresholding has a drastic effect on this metric. By preserving all positive FOD lobes, no such thresholding effects arise. These manifest as erroneous-looking sudden transitions in the value of complexity between adjacent voxels, and it wouldn’t surprise me if it also falsely increases variance within a cohort.

I am considering using the sum option for FD, FC (log) and FDC but debating whether it is more appropriate to use the weighted option. Are there some recommendations depending on the type of study?

I would say that the recommendations would depend moreso on the physical nature of those metrics rather than any details of the study.

FD is a measure of volume; while it’s unitless due to the way we typically perform spherical deconvolution, it can nevertheless be thought of as having dimensions L3. Now if you want a voxel-wise measure, probably the most sensible is “the total fibre density”, which would be a sum. Note however that rather than going through the process of FOD segmentation, you could just take the l=0 term of the WM FOD spherical harmonic expansion, and that would give you the same measure but without annoying fixel thresholding effects; see also this manuscript on voxel-wise total fibre density. But that’s not to say that this is the only statistic across fixels that can be taken: selecting the maximal FD across fixels in each voxel gives you the maximal FD in each voxel (funnily enough); the mean FD is probably not a good choice, as it will be strongly dependent on the FOD segmentation thresholds as to how many smaller FOD lobes get included and hence drag that average down.

FC is interesting. If you want a voxel-wise measure of morphological change, you could just take the determinant of the Jacobian of the non-linear warp field. This would be ignoring fibre orientation information entirely; which is of lower complexity, but would give a different result to FC in a voxel with a single fixel only. So it’s possible to do a bit better. But here’s where the -weighted option comes into play.

Imagine a voxel with two fixels A and B, with FD values of 0.9 and 0.1 respectively. The non-linear warp field is such that the values of log(FC) for these fixels are -0.5 and 0.5 respectively. Now you want to collapse all of this information into a single scalar value of log(FC) for the voxel. What should that value be? If you use fixel2voxel to take a mean, you’ll get 0.0. If you provide the FD values via the -weighted option, you’ll get -0.4.

Now imagine that fixel C just survives fixel segmentation, with a value of FD of 0.01 and a value of log(FC) of 0.5. With the first method, the voxel mean changes from 0.0 to 0.167; with the second method, it changes from -0.4 to -0.395.

So weighting the averaging process by the fixel fibre densities not only gives greater precedence to larger fixels, but also mitigates the influence of FOD segmentation thresholding.

Now back to your original text. Let’s say you have a voxel with three fixels, each with log(FC) = -0.5. Now you take the sum within the voxel, to produce a value of log(FC) = -1.5. Does that value make any physical sense? FC encodes an expansion / contraction; yet here the result is suggesting that the expansion / contraction of the voxel is three times as severe as that of any individual fixel contained within…

they are using the primary, secondary, and tertiary voxel-based FD maps, apparently extracting these with fixel2voxel, but I cannot find how to get these metrics from the Mrtrix documentation.
Is it done using the -none option and -number 3 (to get the 3 largest fiber bundles)?

Yes, that will give you a 4D image where each of the 3 voxels contains the FD value of the first / second / third tallest FOD peak.

I read in a previous post on this forum that the peaks are actually ordered by peak amplitude and not by fiber density. Has this been changed?

Correct; and no, it has not (yet) been changed. The ordering by peak amplitude is a natural consequence of the way in which the FOD segmentation algorithm works. However given that we advocate use of the FD metric rather than peak amplitude, it probably does make more sense for them to be in the fixel directory output in order of decreasing FD… Any objections to changing this in the next minor update?

That’s not to say that there’s anything stopping you from interacting with the fixel data in your own code, performing whatever reordering or other manipulations that you wish; the format is fully documented. This decision purely influences whether or not certain intuitions or assumptions about the data hold up when performing existing data manipulations.

Cheers
Rob

Thank you @rsmith for the very detailed response.

I will definitely implement the -fmls_no_thresholds option in fod2fixel, it indeed makes a lot of sense to compute complexity. I imagine this will also impact the other metrics (sum FC and FD voxel-wise). Any reasons why we would not want to include smaller lobes for these other metrics?

For FD, you recommended using the l=0 term of the WM FOD spherical harmonic expansion. This corresponds to the first volume of the WM FOD image, correct?

For FC, I am still very unsure which measure makes most sense physiologically. When computing FC, we are using the warps (which were used to warp fixels into a common “template fixel space”, shrinking or expanding each fixel in order to align it with the template fixel). So the FC metric is in fact a measure of how much smaller or how much bigger a fixel is compared to the “norm” (is the size of the template fixel pre-determined or is it based on the average fixel size?). Essentially, I would want a metric that is the equivalent (or as close as possible) to summing absolute cross-sections values (in micrometer squared let’s say) of all fixels in a voxel, if that’s at all possible.

Lastly, I did not really understand what the advantage of taking the determinant of the Jacobian of the non-linear warp field would be. Could I just take the value of the subject2template.mif image file at a given voxel as an indication of the total deformation that was applied to the fixels contained in that voxel? I apologize for the perhaps naive question, I am not used to working with warps for anything else than applying to an image in registration and I don’t fully understand what the “determinant of the Jacobian” means.

I greatly appreciate your help,

Stefanie

Hi @rsmith,

I hope you are doing well.

I was wondering if you had a chance to look into this. I would like to get a clearer idea of how to set up my voxel-based “fixel metrics” and ensure I fully understand what they represent before going forward.

Thank you,

Stefanie