Estimating macrostructural properties with MRtrix

Hi there,

I recently came across this paper by Schilling et al and I was wondering if it’s possible to estimate white matter macrostructure (e.g., tract length, surface area) using MRtrix?

I realize I can use tckstats to estimate streamline lengths but I’m not sure how to translate that into the length of the entire tract.

Thank you!



Hi Shireen

Looking at the definitions of the various macrostructural features in the original paper that defines them (and also the definitions in this table), it seems like the “length of the fiber bundle” is essentially the mean track length of all streamlines in the bundle, which is what you would get from tckstats. I’d be careful here, as you want to be sure that all of the streamlines in your bundle do in fact traverse its entire length, which depending on the seeding / ROI strategy is not necessarily guaranteed. The tckgen options -seed_unidirectional and/or -stop might be useful there. The endings segmentations functionality provided by TractSeg could also be useful there.
As for the other properties like surface area, those are also defined mathematically so with a bit of creativity you should be able to at least approximate the same proceedures in MRtrix. E.g for the surface area, it looks like that metric is based on the number of surface voxels of the bundle segmentation. You could use maskfilter erode -npass 2 and subtract result from the original segmentation to get the “surface” voxels (similar to the process for creating a glass brain), and then count them up using mrstats -ignorezero.
(disclaimer: these suggestions don’t claim to be able to exactly reproduce the methodology of the paper in question :slight_smile:)
Hope that’s helpful!

Hi Fiona,

Thanks so much! Some of the streamlines do not traverse the entire length and the mean length is quite short, but I suppose I could use the max length as an indicator of the distance between two endpoints in the WM. Many of the shape features are based on length so the rest of it should be calculable.

I will try out your suggestion for estimating surface area. Thank you so much for your help!


Hi Shireen

I’d also be wary of this, as often streamlines can take pretty indirect routes from A to B that don’t reflect the actual anatomical pathway (e.g. by temporarily switching to follow a different tract), and max length is likely going to give you the length of an outlier that’s not representative of the tract.
If you absolutely have to use an existing set of streamlines then I’d still suggest filtering them with start and end point include ROIs before using the mean track length as reported by tckstats.

Ah I see! I’ve already used tckedit on a whole-brain tractogram using include ROIs to get these streamlines - would it be okay in that case?

That depends on your include ROIs. If they specifically select for the endings of your tract, i.e. any streamline that traverses all include regions, you’re satisfied will have traversed the entire length of the tract, then that should be fine. This would apply for example if you selected tracts that hit two cortical regions.

If your include regions don’t guarantee that, then like you mentioned above, you’ll end up with short streamlines which will skew the average streamline length away from might expect. This would apply for example if you were trying to reconstruct the CST, and used the internal capsule as your include ROI.

1 Like

Hi all,

Yes - this is certainly possibly using MRtrix functions. After binarizing a bundle and its endpoints (at a chosen resolution, we typically use 1mm isotropic discretization) all of these geometrical measures are calculated using pretty simple arithmetic that I imagine could be worked out using mrcalc/mrmath/mrstats. We have previously used functions from SCILPY lab, I believe it’s now called in this repository.

As Fiona pointed out - it is wise to carefully consider the streamlines within your bundle for your ‘length’ calculation (from which many other geometrical features are derived). We have used this on bundles derived from algorithms that constrain endpoints (for example TractSeg) so we know all streamlines traverse the entire pathway length.

Second - if you care about distinguishing features of ‘endpoint 1’ from ‘endpoint 2’ it is important to ensure your streamlines are all oriented appropriately (i.e., all streamlines for example pathway X ‘start’ in the temporal lobe and ‘end’ in the occipital lobe) . The function above ‘uniformizes’ or orients the streamlines before calculating features of each endpoint.

The original paper that defines these is now published in NeuroImage with a nice Table 1 that summarizes these shape descriptors and calculations. Happy to try to help make MRtrix-equivalent functions if this would be useful to others.


It’s the former, so the ROIs are cortical regions that I’ve specified as the endpoints. I used tckedit on the whole-brain tractogram and specified multiple cortical ROIs with -include. That is probably why the mean length is quite short, as some ROIs are closer to each other than others and might have a higher density of streamlines between them as well. I figured the max length might provide an estimate of the length of the track but as you said, the streamline might meander/take an indirect route from A to B.

I’ve also been thinking about whether it’s appropriate to do a shape analysis in the first place here because I’m interested in characterizing frontoparietal white matter in general, rather than a specific tract (even though the white matter most likely includes portions of tracts like the superior longitudinal fasciculus).

Thank you for all your help with this. Reading through your answers has given me pause as I realize I need to figure out how to go about characterizing frontoparietal macrostructure.