Voxel-wise Structural Connectivity matrix via tck2connectome

Hello all, I hope all is well. I am currently attempting to construct a voxel-wise connectivity matrix between, however, I have been running into some issues pertaining to the implementation of the node image (which I am creating from scratch by assigning varying intensity values to each non-zero voxel within the image of interest being used). The image itself is a binarized version of the gmwmi mask used for the tractography generation via tckgen which has been given a different value for each non-zero voxel (thus creating, for example, an n-number of voxels x n-number of voxels connectivity matrix in theory). It has been ensured that both the image used and the tracts used are in the same space. The images used have all undergone supsamp2 via fsl in an attempt to reduce the dimensionality
of the matrix. However, I do keep getting a warning that states poor registration may be the cause. This consequently leads to inability to map the tracts tot he desired segments of the image. I have been trying to figure a solution but alas I have hit a wall. Any suggestions or insight on this issue would be immensely appreciated. Additionally, if you have any suggestions on how to perform the voxelwise segmentation of my image of interest that would also be very helpful. Thank you for your time.

Kind Regards,

Image: voxel-wise Parcellation image (node image for tck2connectome) overlayed diffusion map and subset of tracts.

tck2connectome command-line usage:


You will get this warning (and it is just a warning) if any of your parcels end up with no streamlines assigned to them (i.e. no streamlines actually get to them). Given what your image looks like, I’m not at all surprised to find a very large number of ROIs (i.e. individual voxels) with no streamlines, given that many of them seem to be some distance away from the nearest streamline.

But I would also expect that the connectome matrix produced will nonetheless contain many non-zero entries for those voxels that are reached by streamlines. I expect that will turn out to be a pretty massive matrix though, and probably quite difficult to inspect… Have you actually looked to check whether there are non-zero connections in there? Or to frame this another way: does the list of ROIs with no streamlines assigned include all of the voxels in the parcellation image…? If that’s the case, then there may indeed be something else going on there…

The image itself is a binarized version of the gmwmi mask used for the tractography generation via tckgen which has been given a different value for each non-zero voxel

The image generated by 5tt2gmwmi includes any voxel for which any part of the voxel contains a gradient between grey and white matter. As such, there will be many voxels with a non-zero value that are actually a fair way away from that interface; and importantly, will be impossible for streamlines to reach.

A better way would be:

  1. Generate a white matter partial volume image on the intended voxel grid (however you choose to do this).

  2. Repeat step 1 but for cortical grey matter.

  3. Select voxels for which the partial volume fractions of both WM and cortical GM are neither exactly 0 nor exactly 1 (mrcalc trickery).

  4. Add all voxels for which the sub-cortical partial volume fraction is non-zero.

That will give you the set of voxels within which all streamlines reside, assuming you used the -crop_at_gmwmi option in tckgen (which I’d consider essential for this sort of analysis), and would exclude the streamline terminations at the bottom of the spinal column unless you add them explicitly.

This may not remove that error entirely, but it would drastically reduce the number of entries, and it would probably reduce your RAM requirements as well.