Tck2connectome and atlas resolution

Hi all,

I have a question about atlas resolution in tck2connectome. We did regridding and upscaling of the atlas to the resolution of the DWI, using nearest-neighbor interpolation.
We did tckgen using 100M tracks. Then, we tried running tck2connectome using both the original and the upscaled atlases. The resulting connectomes from the two atlases (original & upscaled) turned out to be quite different. The values differ by around 15% on average.
My question is, what is happening when the atlas resolution does not match the DWI resolution? Why are the resulting connectomes so different?

For regriding & upscaling the atlas we used:

for_each * : mrgrid IN/ANO_DTI.nii regrid -vox 0.1 -interp nearest IN/mrtrix/ANO_DTI_up.mif 
for_each * : labelconvert IN/mrtrix/ANO_DTI_up.mif IN/ANO_DTI.txt IN/atlas_lut.txt IN/mrtrix/atlas.mif

You can find the .tck file and atlases here
(we uploaded a .tck file with 100k streamlines (instead of 100m) due to file size reasons)

Best,
Jeehye

Hello,
based on this topic it appears that resampling your atlas is not needed for Tck2connectome

To me, your different results are the consequence of your resampling that modified your atlas segmentation.

Cheers

1 Like

Welcome Jeehye!

We did regridding and upscaling of the atlas to the resolution of the DWI, using nearest-neighbor interpolation.

Your parcellation in template space is of a lower spatial resolution than your DWIs? :face_vomiting:

My question is, what is happening when the atlas resolution does not match the DWI resolution?

tck2connectome doesn’t actually care about the spatial resolution of the parcellation image with which it is provided. All it does (by default) is look for the voxel that is closest to the streamline endpoint that has a non-zero value. It does this at a sub-voxel resolution, minimising the distance between the exact streamline endpoint and the voxel centres.

Consider that the original image has two voxels, A and B, with parcel labels 1 and 2. Voxel A is slightly closer to the streamline endpoint than voxel B, and so the streamline is assigned to parcel 1. Now you perform an image re-gridding using nearest-neighbour interpolation. In this new image, the centre of voxel C lies within the volume of voxel A, and so takes the value 1; the centre of voxel D lies within the volume of voxel B, and so takes the value 2. But the locations of these voxels are different, and due to these changes in location, the streamline endpoint is now closer to voxel D than voxel C, and so is assigned to parcel 2.

Where this might also have an influence is if there is some non-linear transformation step involved in the process of getting the parcellation from template space to subject space. The more coarse the spatial resolution of the target voxel grid of that transformation, the greater the influence of nearest-neighbour interpolation resampling on the output image. Whether you are performing such a transformation upstream or downstream of your change in spatial resolution may be important.

If you use the -out_assignments option in tck2connectome, you could actually post hoc identify which streamlines are assigned to different parcels between the two images, and then look more closely at those within mrview to see how these interpolation effects manifest.

Cheers
Rob