Segmenting white matter tracts for FBA metric computation

Hello, I am a student who is fairly new to Mrtrix/dMRI in general.

I am interested in studying degeneration of specific white matter tracts and computing FD for each tract.

I understand that the use of an atlas to segment different tracts is required, and looked at this thread: Fixel-based analysis - assign significant fixels to tracks, but I was confused at how to where to obtain the white matter atlases. Is there a specific one recommended for FBA? As well, I am unsure how to manually create the inclusion and exclusion ROIs. Are these ROIs sourced from other publications, or are they derived from one’s subject data using Mrtrix commands?

Lastly, I’m assuming that one can use the WM atlas to ‘guide’ categorization of fixels into a specific ROI/tract of interest, as was mentioned in the thread. Is there a command in Mrtrix to do this?

Thank you so much!

2 Likes

Potential alternative approach - I’ve had success using TractSeg to derive tract masks by segmenting the FOD template created according to the FBA pipeline instructions(https://mrtrix.readthedocs.io/en/latest/fixel_based_analysis/st_fibre_density_cross-section.html). You could then pass the tract masks you’re interested in to fixelcfestats?

1 Like

Hey @Ana_Han,

Hope you’re doing well!

The questions you’re asking are indeed quite broad, and there’s many different ways to go about it. There’s certainly no single way that is best here: it’s about choosing what works best for your data, hypothesis/es and even just practically (or pragmatically).

If indeed you’re looking to get FD per tract “a priori”, you might want go get a fixel masks for each tract of your interest. Note this is a bit different from the post you link to: Remika Mito’s (@rmito) work there performed a whole-brain fixel-based analysis first: i.e. without hypothesising a set of tracts. Once the fixel-wise results were obtained, they were essentially labelled by identifying structures/tracts present in those results. So on an abstract level, it’s a bit the other way around, you could say. :slightly_smiling_face: I’ll highlight your question to Remika: she might be able to clarify some details of the atlases used. But in the end, this was quite a bit of manual work; it’s not an automated approach combining an existing atlas to get that kind of output.

So sadly, no, there’s no simple solution available: it takes some manual work. A PhD student is working on creating a fixel-wise tract atlas that might eventually serve this purpose, but it’s still a ways off.

Yes, approaches using TractSeg might help you quite a bit along the road to make a few things more automated or simpler. In the end, the challenge will still partially be that the main TractSeg output is voxel-wise maps: so you need to bridge a gap to link it to the fixels in the FOD template (and a tract shouldn’t contain all fixels in each voxel it passes through of course!). These days, TractSeg also outputs “tract orientation maps” ("TOM"s): I can imagine with a slight bit of trickery you could use that output and correspond it with the fixel in your fixel analysis mask, as derived from the FOD template. @jpalm, how did you go about it in practice? (again, I can imagine some alternatives, but would be great to hear some experiences!)

@Ana_Han, there was another recent question on this topic you might’ve missed: see also some of the things I wrote over here, as well as the follow-up replies. That might also inspire a few options. :wink: @jpalm, take a look as well: might be interesting to see how it relates to your approach to deal with this!

Cheers & take care,
Thijs

1 Like

These days, TractSeg also outputs “tract orientation maps” ("TOM"s): I can imagine with a slight bit of trickery you could use that output and correspond it with the fixel in your fixel analysis mask, as derived from the FOD template. @jpalm, how did you go about it in practice?

@jpalm @ThijsDhollander I’m interested in what this trickery may be.
I’ve segemented via TractSeg and now want to map the tracts back to the fixels.
Do I use tck2fixel?

No worries. :smile: The “trickery” I was referring to was actually something slightly differently: TractSeg outputs “tract orientation maps” (they call them “TOMs” as I wrote, I believe). Together with the voxel-masks of the tracts, those TOMs are actually the “real” output from TractSeg itself. They’re basically peak orientations, which indeed makes them very much like fixels! So the trickery I was hinting at would be first making those peaks into actual fixels (this only refers to the data format, nothing really changes to what they are otherwise) via peaks2fixel. That would then be a “stand-alone” fixel image so as to say, with it’s own index.mif and directions.mif (with only fixels for a given tract/bundle). Then I’d make some handy use of fixelcorrespondence to “map” those onto the fixel analysis mask (the one that you’d have derived earlier in the pipeline from your FOD template).

However, in the meantime TractSeg also outputs streamlines (.tck) itself indeed. This is not a “direct” TractSeg output, in a strict sense: those streamlines don’t pop out the neural net itself, but they’re computed via the TOMs actually. In short, the TOMs are turned into “FOD-like” ODFs, and those are then fed to tckgen (all wrapped in the TractSeg code).

But in some ways, the latter is actually a great thing: by applying actual streamline tractography on those ODFs-derived-from-TOMs, the “tract” (streamlines) you get is inherently more regularised, i.e., smoother; whereas the TOMs themselves might be (slightly) more noisy depending on the original data quality. So then using those streamlines with tck2fixel, as you suggest, will actually be more robust in the end.

In practice, this has now also become much more convenient since the TractSeg package itself directly does all the steps up until and including generating streamlines for you, and it does it very well (in my experience). So I’d say: for most purposes, ignore the the “trickery” I was originally referring to, and go with tck2fixel; for both practical simplicity as well as improved robustness. We’ve been using this in our lab now routinely to generate fixel ROIs in templates; both for (fixel) ROI-based analyses as well as almost fully automatically labelling whole-brain FBA results themselves, i.e., as a somewhat more objective and standardised way of reporting FBA results. It works extremely well if your data has been processed with any form of 3-tissue CSD (either MSMT-CSD or SS3T-CSD), since that’s the kind / quality of WM FODs TractSeg has effectively been trained on.

Hope that helps; feel free to ask if not clear. :wink:

Cheers,
Thijs

1 Like