Seed-based tractography

Hi,

First of all, I am sorry for the lengthy question and I am a newbie Tractography analysis. In addition, I have read previous posts about generating streamlines from ROI to ROI. The purpose of my analysis is to perform a seed-based tractography from source ROI to other regions of shen atlas, I have tried two different methods but I am not sure if they are corrected.

1.Method_01

1>Create a binarized source mask from co-registered atlas(atlas.nii.gz)
2>tckgen FOD.mif tracked.tck -act 5TT.mif -seed_image source_roi.nii.gz -seeds 0 -select 5000000 - seed_unidirectional
3>tcksift2 tracked.tck FOD.mif prob_weights.txt
4>tck2connectome tracked.tck atlas.nii.gz conmat.csv -vector -scale_invlength -tck_weights_in prob_weights.txt -assignment_radial_search 2 -scale_invnodevol. By completed all these steps, would it generate a 1-D connectivity matrix that contain structural connectivity from seed region to the rest of regions in the atlas.

2.Method_02:

1>whole-brain tractography tckgen FOD.mif tracked.tck -act 5TT.mif -seed_gmwmi gmwmi.mif -select 5000000
2>tcksift2 tracked.tck FOD.mif prob_weights.txt
3>tck2connectome tracked.tck atlas.nii.gz connmat.csv -zero_diagonal -symmetric -assignment_out assignment_atlas.csv -scale_invlength -tck_weights_in prob_weights.txt -assignment_radial_search 2 -scale_invnodevol
4> **connectome2tck -nodes 146 tracked.tck assignment_atlas.csv -files per_node source_146_tracked.tck -tck_weights_in prob_weight.txt -prefix_tck_weights_out source_tracked_weights.txt. This would give me all streamlines emerge from source ROI to the rest of atlas region.
5>**tck2connectome source_146_tracked.tck atlas.nii.gz connmat.csv -scale_invlength -tck_weights_in source_tracked_weights.txt -assignment_radial_search 2 -scale_invnodevol -vector. Is this last step plausible since I originally wanted to obtain a structural connectivity value from the source region to the all other regions of atlas.

Thanks,
Thomas

Hi Thomas,

1.Method_01
2> tckgen FOD.mif tracked.tck -act 5TT.mif -seed_image source_roi.nii.gz -seeds 0 -select 5000000 -seed_unidirectional
3> tcksift2 tracked.tck FOD.mif prob_weights.txt

:no_good_man:

You cannot apply the model underlying SIFT to the output of a targeted tracking experiment; it can only be applied to a tractogram that includes the reconstruction of all plausible pathways. In retrospect I failed to adequately assert this in the corresponding manuscripts…

E.g. Consider a voxel where just one streamline from your targeted tracking experiment traverses, but if you were to do whole-brain tractography, you could see that that voxel is predominantly traversed by other white matter pathways. If you were to apply the model underlying SIFT to just the targeted tracking reconstruction, it would attribute all of the fibre density in that voxel to the pathway of interest, which is clearly not reflective of the underlying reality.

2.Method_02:
3> tck2connectome tracked.tck atlas.nii.gz connmat.csv -zero_diagonal -symmetric -assignment_out assignment_atlas.csv -scale_invlength -tck_weights_in prob_weights.txt -assignment_radial_search 2 -scale_invnodevol
4> connectome2tck -nodes 146 tracked.tck assignment_atlas.csv -files per_node source_146_tracked.tck -tck_weights_in prob_weight.txt -prefix_tck_weights_out source_tracked_weights.txt.
This would give me all streamlines emerge from source ROI to the rest of atlas region.
5> tck2connectome source_146_tracked.tck atlas.nii.gz connmat.csv -scale_invlength -tck_weights_in source_tracked_weights.txt -assignment_radial_search 2 -scale_invnodevol -vector.
Is this last step plausible since I originally wanted to obtain a structural connectivity value from the source region to the all other regions of atlas.

If you are interested only in the connectivity between node 146 and every other node in the parcellation, why not just manually extract line 146 from the full (symmetric) connectivity matrix, and completely omit steps 4 and 5? It seems to me that step 3 already generates the data you want, and steps 4 and 5 are a very convoluted way of trying to access the specific subset of connection strengths in which you are interested.

Rob

Hi, rsmith

It seems that the problem of method_01 is using sift to seed-based tractography, am I right?
I was doing a similar research to generate tracks seeded from VTA to whole GM, thus can get a connection map of GM for VTA.
Is there any problem with this pipeline:

  1. tckgen FOD.mif VTA_seed_tracks.tck -seed_image VTA.nii -act 5TT.mif -backtrack -crop_at_gmwmi -seed_unidirectional
  2. tckmap VTA_seed_tracks.tck -template dwi.nii -ends_only connection_map.nii

Hi @LiuYuchen,

Correct: SIFT is fundamentally not applicable to seed-based tractography, only to whole-brain tractography. I’m hoping that my (updated) preprint adequately explains why this is the case (this is one of many threads on this forum that motivated writing it).

I was doing a similar research to generate tracks seeded from VTA to whole GM, thus can get a connection map of GM for VTA. … Is there any problem with this pipeline?

What you’re doing there seems to be fundamentally different to the original question in this topic. The original question related to wanting to quantify connection strength from one region to others, which is the context in which SIFT2 is applicable. In your case, you’re simply generating an image of the density of streamlines terminations, where the streamlines were seeded from a specific region. There’s nothing intrinsically wrong with this, as long as the result is interpreted in accordance with the way in which they were generated. However if you are aiming for these to have an alternative quantitative interpretation to that I just described, then you would need to go about the experiment in a different way:

  • Just seeding from one (ideally very small) region of interest, and seeing where the streamlines propagate to, would typically be interpreted as representing the probability that that region is structurally connected to any other region of the brain;

  • Performing whole-brain tracking, applying a method such as SIFT2, isolating those streamlines connecting to your region of interest, and seeing the density of streamlines traversing from there to other regions, would typically be interpreted as representing the density of structural connections from the region of interest to any other region of the brain.

Obviously both of these have caveats. Unfortunately I’ve on multiple occasions seen people start talking cross-purposes because each did not realise that the other party was implicitly applying the converse interpretation to “probabilistic streamlines”. But I thought I’d elucidate here given there’s a reasonable chance that it’s related to your uncertainty here, and my publication where I explain this is still not out yet so I couldn’t just refer you to it…

Rob

Thanks again for your reply!

I was using the HCP data to process this seed-based tractography, could you please recommend the parameters for -select and -seeds (or -seed_random_per_voxel image num_per_voxel)?

For your consideration, my command did not provide the -select and -seeds option:
tckgen WM_FODs.mif VTA_seed_tracks.tck -seed_image AAL3_VTA_2DWI_bin.nii.gz -algorithm iFOD2 -fslgrad bvecs bvals -minlength 3 -maxlength 250 -angle 45 -step 0.2 -cutoff 0.06 -act 5TT.mif -backtrack -crop_at_gmwmi -force
Tracks seeding from VTA are shown as below:

could you please recommend the parameters for -select and -seeds (or -seed_random_per_voxel image num_per_voxel)?

In the absence of using the -select or -seeds option, it will generate a maximum of 5,000 streamlines, from a maximum of 5,000,000 seed points (the latter of which is basically irrelevant in the absence of inclusion / exclusion regions, but it’s there to prevent tckgen from running forever in cases where it’s almost impossible to generate streamlines given the criteria imposed).

In terms of what is an “appropriate” number of streamlines, I’ve tried to express my point in as generalised a way as possible in a few different threads, but it warrants reiteration. The basic premise is that if you re-perform the tractography experiment, and the “outcome of the experiment” changes “to an unacceptable degree” due to the stochastic nature of probabilistic streamlines tractography, then too few streamlines were generated. The questions then are: what is the “outcome of your experiment”? What is an “acceptable degree” of variability? The former depends entirely on the context of what you are deriving from the streamlines data. The latter is somewhat subjective, but fundamentally there’s a certain minimum amount of variability across participants that could be achieved even with an infinite number of streamlines, and with a finite number of streamlines that variability will be larger, but you don’t want it to become so much larger that you become insensitive to the effects you’re trying to observe.

For the seeding mechanism, for sufficiently large numbers there won’t be any observable difference between the three mechanisms you listed. They’re there for feature completeness and to be able to reproduce the experiments of others, and they do operate in different ways, but your streamline trajectories won’t drastically change because of differences in the esoteric ways in which streamline seeds are determined within a pre-defined mask.