initialization of the spherical registration sphere.rot.native.surf.gii

57 views
Skip to first unread message

Guillaume Auzias

unread,
Jan 13, 2026, 9:32:52 AMJan 13
to HCP-Users
Hello everyone

I would like to understand more precisely how is computed the initial rotation that serves as an initialization to MSM in the HCP pipeline.
I have read in details the articles (and supp mat) introducing MSM and its application for building the Glasser atlas (refs below), but I would like to clarify how it is computed technically (which tool and which energy is optimized).
Could anyone help me finding the script in which this transformation (rotation) is computed?
I guess it is the script that creates the "sphere.rot.native.surf.gii" file, but I don't know how to find it.

Thanks in advance for your kind help!

 Matthew F. Glasser et al., “A Multi-Modal Parcellation of Human Cerebral Cortex,” Nature 536, no. 7615 (2016): 171–78, https://doi.org/10.1038/nature18933.  

 Emma S J Robinson et al., “Multimodal Surface Matching with Higher-Order Smoothness Constraints,” NeuroImage 167, no. September 2017 (2018): 453–65, https://doi.org/10.1016/j.neuroimage.2017.10.037.

Emma S J Robinson et al., “MSM: A New Flexible Framework for Multimodal Surface Matching.,” NeuroImage 100C (June 2014): 414–26, https://doi.org/10.1016/j.neuroimage.2014.05.069.  

Glasser, Matthew

unread,
Jan 13, 2026, 10:32:53 AMJan 13
to hcp-...@humanconnectome.org

It is a rigid rotation computed from the FreeSurfer registration (i.e., without the nonlinear deformations from FreeSurfer).  We don’t change any of FreeSurfer’s default for this (so it is just the default output of recon-all).

 

Matt.

--
You received this message because you are subscribed to the Google Groups "HCP-Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hcp-users+...@humanconnectome.org.
To view this discussion visit https://groups.google.com/a/humanconnectome.org/d/msgid/hcp-users/62a4cea0-9586-436e-97a4-86ca89ab84c4n%40humanconnectome.org.

 


The materials in this message are private and may contain Protected Healthcare Information or other information of a sensitive nature. If you are not the intended recipient, be advised that any unauthorized use, disclosure, copying or the taking of any action in reliance on the contents of this information is strictly prohibited. If you have received this email in error, please immediately notify the sender via telephone or return mail.

Guillaume Auzias

unread,
Jan 13, 2026, 10:52:00 AMJan 13
to HCP-Users, glas...@wustl.edu
Thanks Matt for your super fast reply!

Then, could you please clarify the difference (if any) between *.sphere.native.surf.gii and *.sphere.rot.native.surf.gii?

Your help is much appreciated, thanks again!

Glasser, Matthew

unread,
Jan 13, 2026, 10:52:57 AMJan 13
to Guillaume Auzias, HCP-Users

The are the same except rot has an affine rotation applied to it.

Guillaume Auzias

unread,
Jan 13, 2026, 11:33:24 AMJan 13
to HCP-Users, glas...@wustl.edu, Guillaume Auzias
ok, 
then if I get it right, this rotation is the one computed by freesurfer as in the classical recon-all command, could you please confirm?

And by the way, could you please clarify what an "affine rotation" is?
Sorry if this is trivial, I am familiar with affine transformations in the 3D space and rotation on the sphere (that are rigid transfo in the 3D space), but not with "affine rotation".

Thanks again for these clarifications!

Tim Coalson

unread,
Jan 13, 2026, 3:33:07 PMJan 13
to hcp-...@humanconnectome.org, glas...@wustl.edu, Guillaume Auzias
No, .rot. is not computed by freesurfer.  The sphere.native.surf.gii is a copy of the non-registered freesurfer native sphere.  For the sphere.rot, we take the freesurfer registered sphere, apply an atlas transform to get to fs_LR convention, and then regress its vertex coordinates against the original sphere.native vertex coordinates.  That regression gives us an affine transform, which we use as a "rotation" to create sphere.rot from the unregistered original sphere.

The purpose of this is just to get an approximate alignment before using MSM, without adding local distortions from freesurfer's registration.

Tim


Guillaume Auzias

unread,
Jan 27, 2026, 3:45:33 AM (7 days ago) Jan 27
to HCP-Users, tim.c...@gmail.com, glas...@wustl.edu, Guillaume Auzias
Hi @all
Thanks @tim for your help.

We found the answer in the doc of MSM:
https://fsl.fmrib.ox.ac.uk/fsl/docs/registration/msm.html
See in particular the section "Template spaces".
Below is a copy/paste to save time for those interested.

gui


Template spaces
For cortical surface alignment it is common practice to align to a population average template space. For adults there are two prominent examples: the FreeSurfer fsaverage mesh and the FS_LR164k and FS_LR32k spaces for the HCP. The FS_LR164k population average space is based upon fsaverage but has right and left vertex equivalence (it is symmetric). The FS_LR32k surface is a downsampled version of this for f/dMRI processing.

An important point to note about the HCP average space is that the process used to achieve symmetry generates a mesh space rotated with respect to the fsaverage and native mesh spaces. To account for this the HCP have introduced a rotated native sphere called sphere.rot.native.surf.gii. Therefore, by example for some subject BOB using HCP notation in directory /path/to/mystudy/:

/path/to/mystudy/BOB/MNINonLinear/ - respresents files resampled to 164k average space
/path/to/mystudy/BOB/MNINonLinear/fsaverage_LR32K/ - represents files resampled to the 32k average space;
/path/to/mystudy/BOB/MNINonLinear/Native - represents and all files relating to the subjects original 'native' mesh. In other words the meshes directly extracted from each subjects structural image.

In each subject's Native space there will be several spherical mesh representations. Using left as an example, these three meshes will be important for any further processing:
/path/to/mystudy/BOB/MNINonLinear/Native/BOB.L.sphere.native.surf.gii - this is the mesh obtained from projecting the subject's native white matter mesh to a sphere using FreeSurfer
/path/to/mystudy/BOB/MNINonLinear/Native/BOB.L.sphere.rot.native.surf.gii - this is the result of correcting for the rotation between the FS_LR and native spaces
/path/to/mystudy/BOB/MNINonLinear/Native/BOB.L.sphere.MSMSulc.native.surf.gii - this is the result of aligning the native surface to FS_LR using HCP protocol for constrained MSM alignment of cortical folding (sulcal depth) to a group template
/path/to/mystudy/BOB/MNINonLinear/Native/BOB.L.sphere.MSMall.native.surf.gii - this is the result of aligning the native surface to FS_LR using HCP protocol for serial alignment of folding, myelin and rfMRI to a group template

The important thing to take away here is that the HCP provides spheres aligned using MSM, with cortical folding as the features that drive the alignment. But, as the goal of the HCP is fMRI alignment this is highly constrained. This means the regularisation is strong (see configuration files). Therefore users may wish to define their own MSMSulc alignment. For this they must use the L.sphere.rot.native.surf.gii as the input mesh. There are also two more spheres that represent FreeSurfer alignment:
/path/to/mystudy/BOB/MNINonLinear/Native/BOB.L.sphere.reg.native.surf.gii - This is the results of aligning the native sphere to fsaverage using FreeSurfer
/path/to/mystudy/BOB/MNINonLinear/Native/BOB.L.sphere.reg.reg_LR.native.surf.gii - This is the results of transforming BOB.L.sphere.reg.native.surf.gii to the FS_LR space using CARET software

These should not be required, other than for comparisons of results to FreeSurfer-based processing pipelines.


Reply all
Reply to author
Forward
0 new messages