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:
- 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