Help interpreting FBA results

Hello MRtrixers,

I used the FBA pipeline to analyze a specific white matter tract, and I need help understanding what the results (FD/FC/FDC) really mean on a microstructural and/or morphological level.

So for the tract I’m analyzing, I got a significant difference between a control group and a patient group for some metrics but not others. The FD was lower in the patient group, which I take it means the fiber density of that specific tract is significantly lower in the patient group. The FC showed no significant difference between the 2 groups, which is also easily understandable, the tract cross section shows no difference in size between the 2 groups. Finally, the FDC (like the FD) was significantly lower in the patient group, which is the part I’m struggling to wrap my head around. To summarize: decrease of FD and FDC, no difference of FC.

I’m having trouble interpreting what the decrease in FDC (with the no decrease in FC) says about the tract of interest. As far as I understand, FDC is basically a combination of both FD and FC, so the only interpretation that comes to mind is that perhaps the FD was much lower in the patient group that it “dragged down” the FDC enough to compensate for the lack of difference in FC. Does that make any sense? I’m not quite sure how the FDC is calculated, to be honest, so maybe I’m way off. What do you think such a result means??

As always, thanks for the help!


That seems to make perfect sense to me. The FDC measure combines both FD and FC, so is sensitive to both sources of a reduction in the overall ‘connectivity’ of the tract (for want of a better word): reduction in cross-section (smaller breadth of tract) or reduction in the density of the white matter within that tract. If the effect is genuinely a reduction in density with no impact on cross-section, then it will manifest in both FD & FDC – as is the case in your study. The reason we test these separately is that often there can be large differences in the variance between both measures, e.g. large variance in FC, but relatively low variance in FD. So this means that an effect in FD can be statistically significant, but once FD is combined with FC, this can lead to relatively large variance in FDC. This means it’s not uncommon to get significance on FD but not FDC, even though you’d think there should be an effect (since you see it in FD).

But in your case, it’s actually all self-consistent, and all points at a reduction in FD with little or no change in FC.

Great! That’s exactly what I was thinking, just needed confirmation :sweat_smile:

Small follow-up question, if you don’t mind :sweat_smile:

To analyze the WM tract I’m interested in, I first “extracted” the tract from the population template SIFT file using tckedit, then I created a fixel mask from the track using tck2fixel, and then used that fixel mask with fixelcfestats.

Is it safe to assume that the resulting fixel mask delineates the WM tract in all the population subjects, or do I need to create a separate fixel mask for each subject and then warp the separate masks to the population template?

Thanks for the help! (hope I’m not pushing my luck with all the questions :sweat_smile:)


As far as I can tell, that seems correct. The concept of restricting the stats to a tract of interest has come up a few times before, and I think this was more or less what was recommended at the time. Maybe @rsmith or @ThijsDhollander might be in a position to confirm…?

1 Like

Is it safe to assume that the resulting fixel mask delineates the WM tract in all the population subjects, or do I need to create a separate fixel mask for each subject and then warp the separate masks to the population template?

Assuming the registration is correct, and the overall WM crossing-fibre geometry isn’t grossly variable, then the former is fine. The latter leaves some slight ambiguity: if you delineate the bundle individually for each subject, and then warp those masks to template space, how would you plan to combine the masks across subjects? You could e.g. take the intersection, and then you’d only be including template fixels that you are confident lie within the bundle of interest (for all subjects*; but that’s not the only option.

The other thing you can do is simply feed the fixel data to mrstats along with the fixel mask via the -mask option. This will give you e.g. the mean of your quantitative measure within the mask, to which you can then apply more conventional statistical algorithms. This would lose the potential for identifying effects only specifically within a subset of the cross-section of a bundle and/or only a segment of its length, but may have improved statistical power and may in fact be a more direct realisation of your intended hypothesis test. This could theoretically be done either in subject or template space, but that choice (as with any other) has consequences in terms of how subject differences manifest in the outcomes and what measures are available (e.g. the FC metric is not typically quantified in subject space).

1 Like

Yep, all of this makes sense. I’m not so worried about a few “reasonable” misalignments here: they should just add a bit of variance; so if you still find statistically significant differences, then that should be quite a reliable indicator of an actual effect being present. Note that FBA itself also fully (if not much more!) relies on a “decent enough” alignment. Using the either the same fixel (“same” being the outcome from fixelcorrespondence) or the same (fixel-)ROI / mask is the closest, most unassuming, approach to comparing “like with like”. …and, potentially more importantly even, it avoids all the hassle of…

…or other more and less similar strategies you might think of to overcome this. No strategy is perfect in this regard, and relying on the registration rather than other more manual interventions (or automated ones driven by tractography, which I’d trust a whole lot less than registration) is, as I mentioned, probably erring more on the unassuming (unbiased) side.

This is indeed what I’d also mostly recommend for a post-hoc analysis (using a mask from significant fixels from another FBA), but also quite often for a hypothesis-driven analysis of a (set of) tract(s). It may be wise to include a control tract as well, where you do not expect or hypothesise to find a difference.

Finally, if you take the mean of metrics for a tract, and you’re wondering whether to go for FC or log(FC), the answer is always log(FC). Thought I’d just add that already; it’s a question that often comes up for these (fixel) ROI-wise analyses.

1 Like

One more question regarding the matter, if you don’t mind :grin:

Would tracking the fiber bundle I’m interested in straight from the WM FOD template using tckgen and then creating a fixel mask from the tract be another viable option?

I understand that tckedit and tckgen have completely different functions, but I feel like I have much more control over fiber tracking using tckgen. I was able to extract the fiber bundle I’m interested in from the SIFT file using tckedit, but I’m not very happy with the results. A lot of unwanted fibers were tracked, and I’m not a fan of manual editing of tracked fibers.

Appreciate the help, thanks!

This is come up a few times before, and there’s no reason it can’t be done. See this thread for example (I think there’s others too if you have a search through the forum).

If you’re asking whether it’s only valid to use the (edited) streamlines post-SIFT, rather than directly out of tckgen, I’m not sure. But intuitively I don’t see any major issues with that – there may be minor issues with some parts of the pathway being over-represented compared to others, but I don’t think there’d be too much to worry about if you’re satisfied your pathway is well-delineated. Others may have opinions on this too… (?)

1 Like

Yes, that’s exactly what I’m asking.

I agree, but just wanted to double check. I hope the others think so too?

Thanks for the input :grin:

If all you’re looking for is a fixel mask, then the erroneous mismatches between streamlines densities and fibre densities that SIFT aims to correct for are not hugely relevant. Fundamentally you’re making a decision for each fixel as to whether it is or is not included in your analysis; how that decision is made is entirely up to you (though you need to be able to convince reviewers that it was appropriate!).

Selection of a subset of the whole-brain tractogram corresponding to your pathway of interest, getting a track density per fixel, and thresholding, is probably the marginally preferable approach, since the density of streamlines throughout the volume of that bundle may be somewhat “balanced” by SIFT and therefore a track-density-based threshold is more likely to behave appropriately. However any other approach for choosing which fixels to include and which to exclude - whether it be explicit tracking of the bundle, or manually “colouring in” the fixels that you want - is entirely “valid”; the difference is how defensible the approach is to critique.

I am curious about these:

I feel like I have much more control over fiber tracking using tckgen.

I was able to extract the fiber bundle I’m interested in from the SIFT file using tckedit, but I’m not very happy with the results.

Generating a more “liberal” tractogram (even whole-brain) and then selecting a subset of streamlines using tckedit should be more-or-less identical to running tckgen with stringent ROIs. So in what way do you feel that tckgen gives you more “control”? Is this related to adjusting tracking parameters?

When you say that you’re “not happy with the results” when using tckedit, is this related to the density of the reconstruction? Because if using tckedit yields “unwanted fibers”, then I would expect that running tckgen using identical tracking parameters would yield comparable unwanted trajectories if the inclusion / exclusion ROIs used within tckgen are also identical to those being used in tckedit.

First of all, thanks for taking the time to reply.

This was my line of thinking, thanks for the confirmation!

Yes, exactly. I rely a lot on tckgen options like -seed_unidirectional and -stop, which are not possible to use with tckedit as far as I understand. So even if I use the exact same ROIs, I end up with unwanted fibers on both ends of my inclusion ROIs.

I considered tracking the fiber bundles I’m interested in using tckgen, then creating a mask from those stremlines using tckmap, then using that mask to constrain fiber tracking using tckedit, but I felt like it would be too messy. Do you think that would be a good idea?? Or at least somehow better then simply using the tckgen produced streamlines directly to produce a fixel-mask?

This is very much up to personal preference, I’d say. There’s definitely no general advice that everyone would probably jointly endorse here. I personally find that using tckgen directly for this particular task (delineating structures, e.g. with the intent of creating a (fixel or other) mask from them) indeed gives you the best control… exactly for the very reasons you’re mentioning: there’s a range of tractography (tckgen) parameters you’d optimally want to be in direct control of, especially for certain very specific structures (many of which bring their own little challenges to track them well). There is simply no general “whole brain” optimal set of setting for options like -cutoff, -angle, etc… and indeed, as you mention, -seed_unidirectional (quite a specialised option; not many people actually use it) provides unique possibilities otherwise not directly possible (or at least not without unnecessary hassle). And even for the sake of having enough “density” for your bundle, to allow you to optimally turn it into e.g. a fixel mask, using tckgen has its benefits: you can first optimise your tracking parameters and regions by running a few times with a lower number of streamlines (so as to more “interactively” evaluate the quality of the resulting bundle or structure), and once you’re happy with what you’re generally getting, just crank up the streamline count a final time for a nice and dense representation, which will serve you better when creating e.g. a fixel mask from it. This whole process is very much the definition of “targeted tractography” (in my opinion), and that’s exactly what you’re after for this task.

1 Like

I think I’ll go with the tckgen-produced streamlines after all. Thanks for the help!

Hello :slight_smile:

I also have difficulty interpreting FBA results and more importantly characterizing them with histology :confused:

Good news is that FD seem to corroborate with changes in histology!! But, I see reductions in FC in bundles where there is hardly any change in bundle cross-section (shrinking) in histology, assessed qualitatively. Ofcourse, FDC seems to aggravate the combined effects of FD (matching with histology) and FC (not matching with histology). I used ANTS for both the template building and co-registration, and warped the images by converting the warps to an MRtrix compatible warp.

Besides, for performing a quality check for co-registration (I’m slightly confused from the MRtrix Workshop slides :stuck_out_tongue_closed_eyes:)
Lets say if image A is fixed template, image B is moving subject, I should calculate the determinant of the jacobian from the AtoB warp, and then overlay it on top of the template, and check for values that have shrunk (>1), expanded (<1)?

Looking forward to your comments :slightly_smiling_face:

Best regards,

Hi Karthik,

Obviously image registration is a can of worms, so any number of things could be driving a false positive result. You mention that you used ANTs for template building & registration; what images did you use for driving the registration? This could have a huge influence on how registration behaves, both at the interfaces between tissues (due to differences in tissue contrast & how this interacts with a registration metric) and within the WM (e.g. if using FA to drive registration rather than FODs).

Looking at the determinants is definitely a good idea; you could also look at the average determinant images across the groups rather than individuals.


HI Rob :),

Yes, I used FA images and figured that might be an issue. So, I repeated the template building and coregistration steps with the total voxel-wise FD maps. The results make more sense biologically now :wink:


1 Like