(sorry for the long intro)
Instead of running statistical analysis for every fixel in the brain, I am interested in exploring patterns of covariation in FD across individuals to potentially elucidate the underlying neurobiological processes of these coordinated changes. Thus I am using a data reduction technique to fixel’s FD to look at FD covariance networks. Therefore, for this type of analysis, I did not run the fixelcfestats and stop the fixel-based analysis pipeline at segmenting FODs to estimated FD.
However, for my data reduction technique to work in optimal conditions, I would very much like to use the smoothing procedure implemented in fixelcfestats based on the whole-brain tractography for my FD data.
My question is: would there be an easy way to add a little code in fixelcfestats to ask it to output the smoothed metrics?
thanks in advance for your responses/comments/suggestions !
All the best,
Hi Josie, cool project! I think I’ve already been in touch to provide the answer, but in any case, if others are wondering too: there’s a fixelfilter command in the dev branch to do exactly what you’re after. See the documentation of it here: https://mrtrix.readthedocs.io/en/dev/reference/commands/fixelfilter.html . You’ll need to run another command (fixelconnectivity) before it, and use the output of the latter as an input to fixelfilter; because fixelfilter needs to know about how fixel are connected to each other to have a proper notion of a “neighbourhood” of fixels (and then smooth over that neighbourhood).
If you’re running your analyses with an existing installation, it’s safest to not touch that (for reproducibility and stability), and install a dev branch version somewhere separately. I tend to then not put that dev branch version in my PATH, but rather specify the few commands (e.g. fixelconnectivity and fixelfilter) via their full path. If you need them frequently, you can create an alias on your system for those few commands as well. In my experience, this is the safest way to make sure you’re always well aware of exactly what version of commands you’re running.
thanks again for this very clear advice. I am running fixelfilter now…!
In the fixelfilter documentation, the default smoothing filter is 10mm, which seems pretty big considering the FBA pipeline recommend upsampling the voxels to approximately 1.3mm (in our case 1.25mm). Is there a rationale for using 10mm filter? I just wanted to read your opinions on this.
Separate from this: this likely has little to do with the upsampling resolution though; I reckon this is more wrt the anatomy. Also, wrt the anatomy implies also wrt the “anatomy of the pathology”: smoothing more will increase sensitivity to slightly spatially (along the tract) more variable effects (i.e. in location). Smoothing less will retain more sensitivity to spatially less variable pathology or effects in general. So it depends.
Finally, note that from a given voxel / fixel streamlines will disperse rather quickly over distance: so the immediately neighbouring fixels with weigh almost always far more than the distant ones, which are visited by far less streamlines per (distant) fixel. This aspect isn’t present in a spatial voxel-wise filter.
So in conclusion, the paper provides the rationale of why likely the default was set like that. But as always, these things aren’t set in stone and depend on context. You could (and maybe even should) evaluate this even for your application specifically! I fully agree with you its a good thing to be critical of this for sure.