Beginner: tcksift usage

Hi MRtrix community,

I’ve just started to use MRtrix. I was wondering if it is possible to use the command tcksift after having produced the tractography using tckgen with the tracking algorithm Tensor_Prob.

Thanks a lot,

Hi Giulia,

It’s certainly “possible” to apply tcksift to tracks generated using the tensor_prob algorithm: The command will not crash and cause your computer to burst into flames. However I’d be no less critical of the output of SIFT when applied to such a tractogram as I would the tractogram itself. Ultimately SIFT can only try to correct local inaccuracies in streamlines densities caused by reconstruction biases; it cannot correct errors in the streamlines trajectories themselves. Therefore, even if SIFT is able to produce a tractogram where the local streamlines densities vaguely match the underlying fibre densities estimated from spherical deconvolution, that evidence would not support the interpretation of streamline counts between regions in a quantitative manner.

If you were to look closely enough, the underlying model would also highlight how in crossing-fibre regions, the estimated fibre density of the dominant bundle may be appropriately reconstructed by streamlines, but smaller pathways may have no streamlines density whatsoever, and these would contribute significantly to the total model error (even if they do not contribute to the optimisation algorithm).


Hi Robert,

thanks a lot for your answer. However, I am still having troubles using SIFT. I used the following command:
tcksift 5M.tck dt.mif 1M.tck -act 5TT.mif -term_number 1M

  • 5M.tck is a tractography with 5 million streamlines obtained with the algorithm Tensor_Prob
  • dt.mif is the output of dwi2tensor

It seems that nothing happened because I ended up with the same tractography with 5M streamlines instead of 1M as I wanted. Is the problem related to the input file dt.mif?

Thank you for your help,

tcksift requires as its second input argument a Fibre Orientation Distribution image, represented in the Spherical Harmonic (SH) basis. Providing a tensor image as this input unfortunately does not crash the command outright, since it contains 6 volumes (for 6 unique values in a 3x3 symmetric tensor), and this corresponds to an lmax=2 SH image, which is a perfectly legitimate FOD image.

So while I don’t know precisely why the command is exiting without error and without removing any streamlines (providing the terminal output is the best way to help us help you!), providing a tensor image to tcksift is fundamentally incompatible with the SIFT model. This is not actually due to its inability to resolve crossing fibres (theoretically the SIFT model should still apply to lmax=0 isotropic FODs), but because the diffusion tensor does not provide a measure of fibre density. While technically tcksift can be run on streamlines generated using any algorithm, it cannot be run using any arbitrary diffusion model.

Thank you Robert, your answer was really helpful. Since I used the tensor model, I didn’t have a FOD image and so I thought that providing the tensor image to the tcksift algorithm would have been somehow reasonable. However I understand the point and I will change my pipeline.

Thanks again,