netneurotools.datasets.fetch_hcp_standards

netneurotools.datasets.fetch_hcp_standards(force=False, data_dir=None, verbose=1)[source]

Fetch HCP standard mesh atlases for converting between FreeSurfer and HCP.

This dataset contains standard mesh atlases used by Connectome Workbench to convert and register data between FreeSurfer fsaverage space and HCP fsLR space. It includes spherical templates for fsaverage and fsLR at multiple vertex densities (e.g., 164k, 59k, 32k), mapping spheres between fs (hemisphere-specific) and fsLR, and midthickness vertex area averages (va_avg) for resampling and area-preserving operations.

The original file was from 3, but is no longer available. The archived file is available from 4.

If you used this data, please cite 1, 2.

Returns:

standards – Filepath to standard_mesh_atlases directory

Return type:

str

Other Parameters:
  • force (bool, optional) – If True, will overwrite existing dataset. Default: False

  • data_dir (str, optional) – Path to use as data directory. If not specified, will check for environmental variable ‘NNT_DATA’; if that is not set, will use ~/nnt-data instead. Default: None

  • verbose (int, optional) – Modifies verbosity of download, where higher numbers mean more updates. Default: 1

Notes

Returns the path to the standard_mesh_atlases directory containing curated GIFTI files used for conversions between FreeSurfer fsaverage and HCP fsLR spaces, including spherical templates and midthickness vertex-area maps at multiple densities.

Example directory tree:

~/nnt-data/tpl-hcp_standards/standard_mesh_atlases
├── fsaverage.L_LR.spherical_std.164k_fs_LR.surf.gii
├── fsaverage.R_LR.spherical_std.164k_fs_LR.surf.gii
├── fs_L
│   ├── fsaverage.L.sphere.164k_fs_L.surf.gii
│   └── fs_L-to-fs_LR_fsaverage.L_LR.spherical_std.164k_fs_L.surf.gii
├── fs_R
│   ├── fsaverage.R.sphere.164k_fs_R.surf.gii
│   └── fs_R-to-fs_LR_fsaverage.R_LR.spherical_std.164k_fs_R.surf.gii
├── L.sphere.32k_fs_LR.surf.gii
├── L.sphere.59k_fs_LR.surf.gii
├── resample_fsaverage
│   ├── fsaverage4.L.midthickness_va_avg.3k_fsavg_L.shape.gii
│   ├── fsaverage4.R.midthickness_va_avg.3k_fsavg_R.shape.gii
│   ├── fsaverage4_std_sphere.L.3k_fsavg_L.surf.gii
│   ├── fsaverage4_std_sphere.R.3k_fsavg_R.surf.gii
│   ├── fsaverage5.L.midthickness_va_avg.10k_fsavg_L.shape.gii
│   ├── fsaverage5.R.midthickness_va_avg.10k_fsavg_R.shape.gii
│   ├── fsaverage5_std_sphere.L.10k_fsavg_L.surf.gii
│   ├── fsaverage5_std_sphere.R.10k_fsavg_R.surf.gii
│   ├── fsaverage6.L.midthickness_va_avg.41k_fsavg_L.shape.gii
│   ├── fsaverage6.R.midthickness_va_avg.41k_fsavg_R.shape.gii
│   ├── fsaverage6_std_sphere.L.41k_fsavg_L.surf.gii
│   ├── fsaverage6_std_sphere.R.41k_fsavg_R.surf.gii
│   ├── fsaverage.L.midthickness_va_avg.164k_fsavg_L.shape.gii
│   ├── fsaverage.R.midthickness_va_avg.164k_fsavg_R.shape.gii
│   ├── fsaverage_std_sphere.L.164k_fsavg_L.surf.gii
│   ├── fsaverage_std_sphere.R.164k_fsavg_R.surf.gii
│   ├── fs_LR-deformed_to-fsaverage.L.sphere.164k_fs_LR.surf.gii
│   ├── fs_LR-deformed_to-fsaverage.L.sphere.32k_fs_LR.surf.gii
│   ├── fs_LR-deformed_to-fsaverage.L.sphere.59k_fs_LR.surf.gii
│   ├── fs_LR-deformed_to-fsaverage.R.sphere.164k_fs_LR.surf.gii
│   ├── fs_LR-deformed_to-fsaverage.R.sphere.32k_fs_LR.surf.gii
│   ├── fs_LR-deformed_to-fsaverage.R.sphere.59k_fs_LR.surf.gii
│   ├── fs_LR.L.midthickness_va_avg.164k_fs_LR.shape.gii
│   ├── fs_LR.L.midthickness_va_avg.32k_fs_LR.shape.gii
│   ├── fs_LR.L.midthickness_va_avg.59k_fs_LR.shape.gii
│   ├── fs_LR.R.midthickness_va_avg.164k_fs_LR.shape.gii
│   ├── fs_LR.R.midthickness_va_avg.32k_fs_LR.shape.gii
│   └── fs_LR.R.midthickness_va_avg.59k_fs_LR.shape.gii
├── R.sphere.32k_fs_LR.surf.gii
└── R.sphere.59k_fs_LR.surf.gii

3 directories, 38 files

Examples

Load the standards directory and inspect contents:

>>> standards = fetch_hcp_standards()
>>> print(standards)
PosixPath('~/nnt-data/tpl-hcp_standards/standard_mesh_atlases')

List the fsLR 32k spherical templates:

>>> import pathlib
>>> list((standards).glob('L.sphere.32k_fs_LR.surf.gii'))
[PosixPath('~/nnt-data/tpl-hcp_standards/standard_mesh_atlases/L.sphere.32k_fs_LR.surf.gii')]

Load a sphere surface with nibabel and examine geometry:

>>> import nibabel as nib
>>> gii = nib.load(standards / 'L.sphere.32k_fs_LR.surf.gii')
>>> vertices = gii.agg_data('pointset')
>>> faces = gii.agg_data('triangle')
>>> vertices.shape, faces.shape
((32492, 3), (64980, 3))

References