Tcktransform and tckresample doubts

Dear all,

I have a couple of doubts about tcktransform and tckresample.

-The first one is about the definitions of the warp involved in tcktransform and mrtransform. I did a template using population_template then if I want to warp the template to an image I have to use:

mrtransform wmfod_template.mif -warp template2subject_warp.mif fod_template_in_subject_space.mif

but if I do some tracking in the atlas space and I want to warp the tracts to the subject space, then I have to do:

tcktransform tracts_template.tck subject2template_warp.mif tracts_subject_space.tck

Is there any reason, for this difference between the warp definitions used by tcktransform and mrtransform?

The second question is about the best approach to perform the resample of a tract. I want to do somethin similar to this post to create some tract profiles. I was considering two options:

-The first one is to perform the tracking in the template space and define there the sampling points using tckresample, and after warp the resampled tract to each subject and use the tcksample.

-Second option, define the ROIs for resampling in the template space and warp the ROIs to the native space and perform all the tracking in the native space

I’m quite inclined to do the firs option, as it will be more automated and faster, but my question is: will tcktransform warp the resampled tracts correctly? with for example only 20 points of the resampled tracts? Thanks in advance!

Best regards,


Yes, images are resampled via pull operations defined on the target image grid: input image intensity lookup at the target voxel location with the offset relative to this reference grid, whereas point coordinates are transformed via push operations (defined on the input image grid): move the input coordinate to the target space.

tcktransform and mrtransform can warp track files and masks between both spaces given forward and backward warps.

As for, normalised space vs native space tracking: Technically you could do either but in general, it is more than a computational consideration and depends on the question you are asking.

1 Like

This post will hopefully shed some light here.

Depending on what you mean by ‘correctly’, yes. It will not add or remove any point in the streamlines, all it does is take each point, read the values in the deformation field at that location to figure out its new coordinates in the target space, and write out the streamlines again with the updated positions.

Thanks @jdtournier and @maxpietsch! as usual really helpful information.