Mraverageheader with population_template | spatial location of particular fixels


I’ve come across two peculiar issues with the fixel-based pipeline.

The first is with the resultant voxel size from population_template. I see that it looks through all the image headers (via mraverageheader) to create the final template image. With that being said, the resultant voxel size does not match those of what is expected across the input images.

For example, I have inputted all FOD images with an upsampled voxel resolution of 1.5 mm (stride +1,2,3,4) cubic squared. However, the resultant voxel dimensions are 1.63718 x 1.73726 x 1.72173 mm, with the strides now [ 2 3 4 1 ].

I’ve doubled checked the image headers (of the upsampled FODS), and all image headers have voxel resolution of 1.5.

One more thing.

Across my single patient cohort - I’ve extracted the “fixels” with a peak of 0.33 - resulting in 71900 voxels for subsequent analysis.

I’ve looked at the fdc amplitudes across the subjects, and a lot of individuals are not consistently exhibiting non-zero values for the initial voxel-populations (i.e. the first 80 or so voxels).

Here i’ve represented the log of the fdc values, for better visualisation:

This is merged with the above issue as I believe the spatial resolution/reorientation could make the fd/fc values to be calculated outside of the brain tissue?

I was wondering whether there was a way to determine the spatial location of the above-threshold fixels? The resultant fdc.mif images are in the dimensions [71900 1 1], and hence are not easily able to visualize.

Of course, this is a heterogeneous clinical population (Parkinson’s), and perhaps these zero fdc values are not surprising.

Again @rsmith, you can check my github repos for further information.



1 Like

Hey Alistair,

Regarding point 1: I believe that this is something the relevant experts are aware of, and are looking into ways to handle appropriately; e.g. see this GitHub issue. The way that an “average” header is computed from a set of input headers is trickier than one might expect, and can result in behaviour that one might not expect.

Point 2 I’m maybe in a better position to comment on. Getting fixel data defined in template space across subjects requires explicitly achieving fixel correspondence, i.e. finding “matching” fixels between segmentation of subject FOD data in template space, and segmentation of the FOD template. In some cases, for a template fixel there simply won’t be a corresponding fixel in subject space; in this case a value of 0 is assigned to that template fixel for that particular subject. That’s what you’re seeing in your plot. If it’s more prevalent in your “initial” voxel populations, it’s probably because the FOD segmentation algorithm (fod2fixel) is being applied from inferior to superior, and therefore the first voxels to be processed are in the cerebellum, where fixel correspondence is even harder.

Could this issue be handled better? I say yes, and am already working on it :smiling_imp:

I was wondering whether there was a way to determine the spatial location of the above-threshold fixels? The resultant fdc.mif images are in the dimensions [71900 1 1], and hence are not easily able to visualize.

Best way to visualise is to load the fixel template in mrview, select a subject fixel data file of interest using the “threshold by” option, and apply a lower threshold of e.g. 0.001. Perhaps more interesting would be to set an upper threshold of e.g. 0.001 and see those fixels where the subject value is zero.

Watch this space…

1 Like

@rsmith - thanks for the very honest reply - and will wait upon there is a definite working solution (I should also be more aware of the github pulls).

Hello Alistair,

If you expect the template to share the same voxel size as every input image then yes, that is unexpected. The problem is that one might expect different things depending on the exact situation one uses the average header command. If you’re interested in the details, have a look at the issue Rob has linked to but the short answer is that for FBA, you probably want to define the resolution yourself. population_template in the next release of mrtrix3 (RC2) will have an option for this. We’ll announce it on the blog when we make these changes. In the meantime, you could regrid (with sinc interpolation) your template to 1.5mm isotropic and register the subjects to that followed by FBA.

A coarser spatial resolution might cause problems due to blurring/interpolation if your data genuinely has a higher resolution than the template’s resolution. I don’t have proof for it as I don’t do FBA myself but I suspect that it will have little to no effect on upsampled images. Let us know the effect if you rerun the pipeline with a different voxel size!


@Alistair_Perry, it’s probably worth mentioning this release has happened in the mean time: see this post for more information.