Difference between FACT and Tensor_Det


Hello everyone,

I am trying to better understand the differences between the deterministic algorithms and don’t think I completely grasp the difference between MRtrix’s FACT and Tensor_Det. Are they both based on the tensor model? If so, why do they require a different input image?



:rofl: I’ve been having this conversation with a couple of people recently…

Straight out of the gate, let me say that “FACT” is a problematic term. People will use it as a precise descriptor, not realising that what they refer to as FACT and what somebody else refers to as FACT are “in fact” (:roll_eyes:) two different things. This is borne out in the literature also, not just in conversation.

tckgen -algorithm fact:

  • Operates on pre-calculated fixels, but does not use the fixel directory format: fixels are stored as N sets of XYZ triplets in each voxel, where N is the maximum number of fixels in any voxel in the image (the number of volumes in the input 4D image is therefore 3N).

  • Does not perform sub-voxel interpolation. How do you interpolate in between voxels when different voxels may have different numbers of fixels?
    (Admittedly, in the specific use case where N=1, it is then technically possible to perform sub-voxel interpolation using the directions stored in the surrounding voxels, as long as antipodal symmetry is accounted for; this just isn’t currently implemented)

tckgen -algorithm tensor_det:

  • Operates on raw DWI data.

  • Performs sub-voxel interpolation on the DWI data; the tensor model is then fit to the interpolated DWI data at each streamline vertex in order to calculate the first eigenvector (for direction) and FA (for termination).