Using cortical ROIs to reconstruct the fornix

Dear mrtrix community,

I would like to use cortical ROIs to reconstruct a tract of interest. In my case, I have mammilary bodies and hippocampus ROI in the goal of reconstructing the fornix. The thing is that the fornix is poorly drawn on the white matter mask from 5ttgen.

As a result, reconstruction of the fornix with the mammilary bodies as seed_image and the hippocampus as an include image with the -act option gives no results:

By not using the -act option in tckgen (and a lot of exclusion ROIs), I obtain a reconstruction of the fornix. But there are a lot of ‘messy’ streamlines, possibly because of the absence of -act.

To reconstruct the Fornix while using -act, would it make sense to replace the white matter mask from the 5tt file with a dilated white matter mask? If I dilate the wm mask by 1 voxel, the white matter corresponding to the location of the fornix is visible:

I have read elsewhere on the forum that the use of tck2connectome + connectome2tck on a whole-brain tractogram was advised in the case of cortical ROIs instead of tckgen because tck2connectome performs a 2mm radial search to assign streamlines to cortical ROIs.

However I would prefer to use tckgen with cortical ROIs to reconstruct the fornix as I feel that I have more control on the tracking options (e.g., I set a low max length and a high cutoff value to reconstruct only the wanted streamlines). Obviously, i could set these optimal tckgen parameters while doing whole-brain tractography with my edited 5ttgen file (containing a dilated white matter mask to allow reconstruction of streamlines at the location of the fornix) and then feed this tractogram to tck2connectome, but does this make sense?

Would the use of tckgen + -act + with a dilated white matter mask + cortical ROIs solve the streamlines assignment problem? Should I dilate my cortical ROIs as well? Or dou you advise using tck2connectome after whole-brain tractography on the dilated white matter mask?

Many thanks,

Antoine

Hi Antoine,

To reconstruct the Fornix while using -act , would it make sense to replace the white matter mask from the 5tt file with a dilated white matter mask?

You can certainly try; the difficulty is that dilation is a natively boolean operation, so doing so at the native image resolution will result in the discarding of partial volume fractions, which will then lead to “blocky” tracking results.

Ideally one would obtain a surface-based representation of the shape of the fornix, and then morphologically alter that representation. Bit tricky.

Alternatively, I have a stand-alone command 5ttregrid, which does the same thing as what happens internally in tcksift / tcksift2 when re-gridding the 5TT image to diffusion image space: draws a lattice of points in each voxel, each voxel gets labelled as one specific tissue type, and then take the mean of these throughout the voxel. This allows transfer of the tissue segmentation information between image grids without blurring / loss of information. Theoretically what you could do is:

  1. Generate a higher resolution template image.

  2. Run 5ttregrid to map the tissue segmentation to the super-resolution image.

  3. Binarise the resulting image.

  4. Dilate the white matter mask

  5. Resolve the white matter mask with the other tissue images (e.g. ideally only allow that WM dilation to encroach on CSF)

  6. Run 5ttregrid to take that result back to the original image space (or at least an image of lower resolution so that tractography does not slow to a crawl).


Also:

  1. Have you used back-tracking?

  2. I would be very curious to know whether or not this code branch performs any better for your data. It’s a different back-tracking algorithm, which I think is conceptually superior but I never got around to doing the requisite experimentation to prove such.

However I would prefer to use tckgen with cortical ROIs to reconstruct the fornix …

Yes, I know, I need to finish my code branch that enables cortical ROIs… :sweat_smile:

Probably the best way to deal with this for the time being is simply to dilate your cortical ROIs enough so that they overlap with the interface where the streamlines are terminated. This is comparable to the radial search in tck2connectome, it just suffers from discretisation a little more.

Hi Rob,

Thank you very much for your detailed answer.

What I tried so far:

  • regular 5tt image, dilated cortical ROIs, backtrack:

The lasso shape of the fornix + fimbria is visible, although the streamlines corresponding to the body of the fornix (where the crossbar is) are sparse.

  • 5tt image with dilated wm mask, regular cortical ROIs, backtrack:

Option #1 seems to give better results, although there are not enough streamlines at the crossbar level.

I’d be very happy to try the different back-tracking algorithm, but how to do this? :sweat_smile: Would temporarily replacing the mrtrix3/src/dwi/tractography/ACT/act.h file of my mrtrix installation with the act.h of the branch you linked do the trick?

Similarly, I’ll try to install 5ttregrid and try it on my data as advised.

I thought about creating a binary mask of the fornix (e.g., obtained via a white-matter atlas projected to native space, or via a manual segmentation of the FA map), adding this fornix mask to to the binary WM mask from 5ttgen, and substracting it from the GM and CSF masks from 5ttgen (to avoid discarding of partial volume fractions). Do you think this could work?

The other thing you probably want to check closely is the tissue segmentation at the outer edge of the fornix. Ideally these voxels should transition from WM to CSF, but with intensity-based tissue segmentation such voxels can erroneously be labelled as grey matter, which can lead to streamlines deviating from the trajectory of the fornix being terminated prematurely and deemed anatomically acceptable, in which case the back-tracking mechanism will not be engaged.

I’d be very happy to try the different back-tracking algorithm, but how to do this?

The code for the alternative algorithm is implemented in a different branch within the git version control framework. The branch is called “backtrack_recursive”. You could “check out” that branch and re-compile MRtrix3, or you could create a separate clone of the MRtrix3 repository elsewhere on your filesystem dedicated to testing just this functionality.

We should probably have a little documentation page somewhere describing how to do this…

I thought about creating a binary mask of the fornix (e.g., obtained via a white-matter atlas projected to native space, or via a manual segmentation of the FA map), adding this fornix mask to to the binary WM mask from 5ttgen, and subtracting it from the GM and CSF masks from 5ttgen (to avoid discarding of partial volume fractions). Do you think this could work?

You can do manual manipulations of the segmentation using the 5ttedit command. That will ensure that the sum of tissue partial volume fractions is 1.0.