How to normalise to MNI space

Dear experts,

Using MRtrix3 I performed a tractography from all voxels in an ROI to cortical targets as defined by a parcellated image, all that in subject space.
The output is a 4D image that contains, at each voxel, the number of connections to each target, and now I need to normalize this latter image to MNI space.

I previously estimated deformation fields using SPM for a separate analysis, and I thought to simply apply the SPM deformation field to the image mentioned above (the “number of connections” image).

I heard that spatial normalisation of diffusion data is not recommended, especially before performing the tractography. However the latter is done already, and in my case I think that the connectome type of analysis is not an option : I want to look at connectivity profiles of voxels to cortical targets, and I need MNI coordinates comparable across subjects for all these voxels.

I could of course use SPM but the latter is not especially meant for diffusion data, and while MRtrix seems more appropriate I am new to it.

What procedure would you recommmend? Shall I use mrtransform, mrregister, or something else? What shall I use as interpolation options?

Many thanks for your help

Hi there,

The general recommendation would be to normalize the streamlines to template space, and then generate the ‘number of connections’ image in template space. This is preferable to warping a density image, as the orientation dependence of density modulation based on expansion / contraction in the warp field will be performed correctly.

There is however a little trickery in deriving the appropriate warp images to perform that normalization, and it also depends on the software used to perform the registration. Unfortunately we still haven’t added a tutorial on this point to the documentation… the post here would be a good starting point.

Cheers
Rob

Many thanks for your advice Rob!
I didn’t see the post on warping tck files, I will have a look at it and try to adapt it to SPM.

Many thanks again
Best

Hello all,
Thanks to the helpful tutorial on analyzing the HCP DWI, I have constructed the connectome. Since I would like to have the result in the MNI coordination system, could you help me based on the tutorial, http://mrtrix.readthedocs.io/en/latest/tutorials/hcp_connectome.html, that which part of the code needs to get changed?
Thanks

Hi @mehdy,

Have you seen this thread? Hopefully somewhere in there is a response that relates to specifically what you’re trying to achieve (since it’s slightly unclear from your question).

Cheers
Rob

Hi Robert
Thanks for the reply. I am using HCP dataset to study the relation between functional and structural connectivity. Since now I have computed the functional connectivity in the brain by using AAL 116; now I would like to investigate the relation between those by having the structural connectivity result in the same parcellation, AAL 116. I follow all the tutorial for analyzing the HCP. However, I could not understand how to use the connectome results to compute that 116 *116 matrix which shows the connection between 116 ROI.
Thanks

OK, I think the misunderstanding here is in line with what I originally thought may have been the issue in the earlier thread.

Fundamentally what you’re wanting to do is generate the structural connectome using the same parcellation as that used when generating the functional connectome. This doesn’t actually require a projection of functional / structural data into the same space: it only requires that the same parcellation be used for both modalities. So what you need to do is remove the steps in that tutorial where the pre-calculated FreeSurfer-based parcellation is used, and replace them with the necessary steps to instead use the AAL parcellation.

Generally it’s recommended to estimate the transformation from subject space to template space, but then use the inverse of that transformation to resample the template parcellation in subject space. That way streamlines are generated and the connectome is constructed entirely in subject space. The structural connectivity matrix can then be used in conjunction with the corresponding functional connectome as they are based on the same parcellation, even though they were never explicitly ‘overlaid’ spatially.

Cheers
Rob

1 Like

Thanks Robert. I appreciate for your help.
Mehdy

Dear Robert,
Thanks to your help I figure out how to use the AAL. So I have two questions which need your attention :slight_smile:
1- since I am working on Human connectom project DTI and based on the tutorial, I find out that I just need to change the fs_default.txt to aal.txt which is provided by mrtrix, I mean labelconvert aparc+aseg.nii.gz FreeSurferColorLUT.txt aal.txt nodes.mif

so I would like to know I am right or not? or do I need to make any segmentation to aal 116?

2- If we assume the first step is correct, I get an error which says: Unexpected values detected in input image (negative values?); suggest checking input image thoroughly

which it does not get appear when I use fs_deafult.txt instead of aal.txt.

Thanks

1- since I am working on Human connectom project DTI and based on the tutorial, I find out that I just need to change the fs_default.txt to aal.txt which is provided by mrtrix, I mean
labelconvert aparc+aseg.nii.gz FreeSurferColorLUT.txt aal.txt nodes.mif

Using an input image based on a FreeSurfer parcellation, with an output lookup table defined based on the AAL parcellation, is unlikely to work. The labelconvert command cannot magically convert between different atlas parcellation schemes: all it does is modify integer values within an image, typically so that the output image contains integer values that increase continuously from 1 upwards in preparation for tck2connectome. I would strongly recommend reading [this documentation page on labelconvert]((labelconvert: Explanation & demonstration — MRtrix3 3.0 documentation). You then need to look at the integer values within your parcellation image, and the contents of the lookup table provided with the atlas parcellation, to determine if one of the lookup tables provided with MRtrix3 will allow you to perform such a conversion.

2- If we assume the first step is correct, I get an error which says: Unexpected values detected in input image (negative values?); suggest checking input image thoroughly

If you are applying labelconvert after an image transformation step that involves image re-gridding, and have not used nearest-neighbour interpolation (as is necessary for warping label images), then it’s possible for negative values to appear in the output image. This is only a guess; either way, I would recommend doing as the message suggests and manually investigate the contents of that image to see what is going wrong.

Thanks Robert for the answer.
I have checked my atlas, atlas116.nii which you can download from the below link, in Matlab all the numbers are integers and start for 0 to 116 but when I just open the with mrview I get some float number, and it causes some issue when I labelconvert is utilized. i was wondering if you could help me why the result with matlab and mrview is different.
Thanks

That would most likely be due to the use of interpolation to display these images - as discussed recently​ on this other thread. Try turning it off from the view menu (keyboard shortcut is I).

EDIT: this wouldn’t explain why you would have issues with labelconvert itself though. Can you be more specific about what the issues are, and provide the exact commands used?

Thanks Donal, by deactivation the interpolation we float numbers get to integer one. But I still have the problem with using the labelconvert.
Since I would like to have the structural connectivity for HCP by using the AAL116, I have followed all the t steps like Takafomai in Problems with AAL parcellation, except using 12 degrees of freedom for T1 to MNI and nearest neighborhood interpolation method, but still encountering the error of unexpected value. The result of the parcellation is tested over having the Negative values or any float numbers which both were rejected by using Matlab.
Please note that for the input image I used the T1w_acpc_dc_restore_brain.nii which is available in HCP for each subject.
Thanks

Hi Mehdy,

Note my earlier comment:

labelconvert … all it does is modify integer values within an image, typically so that the output image contains integer values that increase continuously from 1 upwards in preparation for tck2connectome.

The image you have provided already conforms to this requirement; therefore using labelconvert is not actually a prerequisite for constructing a connectome using these data.

The version of AAL I have on my system contains image values between 2000 and 10,000. The text file provided with this image contains the following:

$ head ROI_MNI_V4.txt

FAG	Precentral_L            2001
FAD	Precentral_R            2002
F1G	Frontal_Sup_L           2101
F1D	Frontal_Sup_R           2102
F1OG	Frontal_Sup_Orb_L   2111
F1OD	Frontal_Sup_Orb_R   2112
F2G	Frontal_Mid_L           2201
F2D	Frontal_Mid_R           2202
F2OG	Frontal_Mid_Orb_L   2211
F2OD	Frontal_Mid_Orb_R   2212

So in my case, labelconvert is necessary to convert those labels from this range down to integers increasing continuously from 1. The file src/connectome/tables/aal.txt provided with MRtrix3 is designed to perform this specific conversion. But in your case, this step is not actually required.

Nevertheless:

… but still encountering the error of unexpected value.

I was unable to reproduce this warning with your data. Manually inspecting the data, it looks fine also. Are you sure that this is precisely the image that you were providing to labelconvert? Also is your MRtrix3 installation up to date?