Questions for Generating Tractogram for Cingulate bundle

Hi MRtrix Community,

I’m new to diffusion MRI and just started using MRtrix for fiber-tracking. I’m trying to create specific tractogram for the cingulate bundle using HCP data and not sure if I approached it in the right way. I tried the following two methods and would really appreciate any feedback or advice on my work below.

  1. I used the tckgen seed_image option to include a mask of cingulate and run tractogram using the following command:

tckgen -act 5TT.mif -maxlength 250 -backtrack -cutoff 0.2 -seed_image cingulate_l_combined.mif -select 1M fod.mif cingulate_l.tck

Here’s my result:


The tracts extending from cingulate look much messier that I expect…I also tried the same command using cutoff of 0.06 and the resulting tracts are even more messy as the tracts extended to the entire brain. I’m not sure if there’s a standard range of cutoff value recommend for generating tractogram? (changing cutoff value impacted my result greatly) In addition, I’m not sure how to interpret what I see, does the command I used generate all streamlines that intersect with the region of cingulate? Although cingulate is clearly shown in the tractogram, it seems to be much messier than how cingulate bundle should look like.

  1. I generated whole brain connectome first and then used tck2connectome to find tracts between four ROIs (used FreeSurfer parcellation) within cingulate (rostral anterior, caudal anterior, posterior and isthmus cingulate). After I combined the individual tractogram between each ROI using tckedit, I got the following tractogram.

tck2connectome -symmetric -zero_diagonal -scale_invnodevol whole_brain_sift.tck aparc2diff_order.mif aparc_connectome.csv -out_assignment assignments_aparc.csv

connectome2tck –nodes 2,9,21,25, –exclusive whole_brain_sift.tck assignment_aparc.csv nodes_cingulate

Although the tracts within cingulate are shown, there are some tracts that does “U-turn”, coming out from the cingulate and return back in. I’m not sure if this an accurate way of generating cingulate bundle tracts and have no idea how to clean up what look like to be unreliable tracts on the edge. Does connectome2tck generate streamlines between the two ROIs (or end points) specifically while tckgen seed_image option generate all streamlines that intersect with selected ROI, thus resulting in greater number of streamlines?

I’m not sure which approach, or if there’s other approach that would help me generate tractogram for cingulate bundle.

Any suggestion or advice is greatly appreciated and thank you so much in advance!!

The tracts extending from cingulate look much messier that I expect…

Welcome to tractography :sweat_smile:

does the command I used generate all streamlines that intersect with the region of cingulate?

The only constraints you have placed within your tckgen call are:

  • Streamline seed must be placed within the cingulate mask you have provided.

  • Streamline length must not exceed 250mm.

  • Streamline terminations must be appropriate as dictated by ACT.

So your output streamlines reflect the outcomes of the tracking experiment with these criteria imposed.

For a specific pathway like this, it’s probably more common to, instead of seeding in one location and allowing streamlines to project anywhere in the brain, define both the start and end points of your pathway of interest, and only accept streamlines that bridge the pathway between those two.

I would first briefly clarify:

Although cingulate is clearly shown in the tractogram, it seems to be much messier than how cingulate bundle should look like.

My understanding is that the relevant grey matter is the cingulate cortex, whereas the adjacent white matter is the cingulum bundle. Just need to make sure we have a common understanding of what is being referred to.

Part of the reason for this clarification is that if you are providing a mask that is defined entirely within the cortical ribbon, but using -seed_image, then the command will be generating a lot of streamline seeds that it cannot use, because ACT does not by default permit streamlines within the cortical GM. If this is the case you may get better performance using -seed_gmwmi; but I would much rather improve the handling of GM ROIs more fundamentally…

Although the tracts within cingulate are shown, there are some tracts that does “U-turn”, coming out from the cingulate and return back in.

Welcome to tractography :sweat_smile:

Does connectome2tck generate streamlines between the two ROIs (or end points) specifically, while tckgen seed_image option generate all streamlines that intersect with selected ROI, thus resulting in greater number of streamlines?

  • connectome2tck selects pre-generated tracks that are determined to connect each pair of ROIs.

  • As such, the number of streamlines in the files output by connectome2tck will never have more streamlines than what was generated by tckgen.

I’m not sure which approach, or if there’s other approach that would help me generate tractogram for cingulate bundle.

In general, if merely selecting streamlines corresponding to a bundle of interest based on the two ROIs at the endpoints does not give you a satisfactory result, you can look into improving the delineation of the bundle in two ways:

  • Changing tracking parameters (which is a thesis in its own right);

  • Introducing additional constraints on which streamlines are deemed to belong to that bundle and which are not; whether manually-defined or based on some automated process (e.g.; WMQL).

Hope that at least provides a starting point to think about how you might proceed

Rob

Hi Rob,

Thank you so much for your detailed reply! I tried a different tckgen option by selecting a seed within anterior cingulate region and exclude corpus callosum, the results look better though still need to be refined. Below is the command I used:

tckgen -act 5TT.mif -maxlength 250 -minlength 10 -backtrack -cutoff 0.15 -seed_sphere -7.41,6.12,31.59,2 -select 10k -exclude corpuscallosum_mask.mif fod.mif cingulate_l.tck

Regarding your suggestion to run streamlines between two ROIs, how can I do that with tckgen options? By adding -include option with another seed or is there a better way to approach this?

I’m also checking out the automated process you suggested to see if I can extract cingulum bundle from the whole brain tractogram generated using MRtrix.

Thank you so much for your advices!

Best,

Luie

Regarding your suggestion to run streamlines between two ROIs, how can I do that with tckgen options? By adding -include option with another seed or is there a better way to approach this?

When describing such, I’d advise clearly separating between “seed” and “include” ROIs. The former defines where vertices in 3D space will be placed in order to commence streamline generation (and so by definition all streamlines generated from such a region will intersect that region); the latter defines an additional criterion by which any streamline that fails to intersect such a region once it is completely generated will not be written to the output file.

So for instance, in a case where streamlines emanating from a seed point bifurcate into two separate pathways, and you want to keep only one of those pathways, you could achieve this either by excluding those streamlines that pass through a region you do not wish streamlines to pass through, or including only those streamlines that pass through a region you do wish streamlines to pass through.

One advantage of defining a white matter pathway of interest using a seed region and a “target” include region is that you can repeat the experiment in the opposite direction; that is, turn the seed region into an include region, and the include region into a seed region. So the pathway of interest will be reconstructed in both directions.

Thank you so much for your detailed reply!