Results of tckedit vs connectome2tck with custom parcellation


I’m working with macaque data and a custom parcellation after trying out my pipeline on HCP data with the corresponding freesurfer parcellation.
I’m interested in lifting out tracts like the optic radiation/superior thalamic radiation.

I ran two commands that I thought would be comparable to lift out tracts connecting ROI 1 and ROI 2.

tckedit whole_brain.tck -include ROI_1.mif -include ROI_2.mif


tck2connectome whole_brain.tck custom_nodes.mif connectome.csv -out_assignments assignments.txt
connectome2tck whole_brain.tck assignments.txt -nodes 1,2 -exclusive

When I ran this in the human, I found that connectome2tck eliminated many spurious streamlines that were still present when using tckedit.

When I use connectome2tck in my custom dataset, I am not seeing connections that I know exist between 1 and 2 based on my results from tckedit. ROI_1.mif and ROI_2.mif are isolated using mrcalc custom_nodes.mif 1 -eq ROI_1.mif. Since my parcellation was already indexed from 1, I did not use labelconvert. Could this be the problem?

Hi @pmn1113,

This is almost certainly due to the mechanism by which one “assigns” a streamline to a ROI. It’s so often erroneously overlooked that we wrote a whole manuscript on it.

If you were to use tck2connectome -assignment_all_voxels, you should get exactly the same results between connectome2tck and tckedit. The reason you’re seeing a difference currently is because tck2connectome by default only assigns each streamline to two parcels maximum; one at each endpoint. If the streamline “crosses” a ROI partway along its length, tckedit -include will select that streamline, but tck2connectome under default operation will not.

If I’m wrong, we might benefit from screenshots demonstrating the unexpected difference.


That worked for my macaque data, thank you! Out of curiosity, can you explain the difference between tckedit and connectome2tck in HCP data? It seems like connectome2tck reduces many of the spurious streamlines.

I can’t really answer that question, because there is more going on in your example than just "using tckedit vs. using tck2connectome + connectome2tck". I’d need to know exactly how you’re using those commands, what your intended result is, etc… (I need to stop writing speculative essays only to discover that there’s some simpler misunderstanding or misuse)