Access parcellation maps in surface space

siibra also provides basic access to surfaces. A popular reference space for the human brain is the freesurfer fsaverage surface. It comes in three variants: white matter surface, pial surface, and inflated surface.

Load the Julich-Brain parcellation.

import siibra
jubrain = siibra.parcellations.JULICH_BRAIN_CYTOARCHITECTONIC_MAPS_2_9

We can tell volumetric from surface spaces using their is_surface attribute.

for space in jubrain.spaces:
    if space.is_surface:
        print(space)

Out:

Space: fsaverage6
Space: fsaverage
Space: hcp32k

The surface map is accessed in just the same way as volumetric maps, using the get map method. Note that we call the method here on the parcellation object, while previous examples usually called it on an atlas object. For surfaces however, the fetch() method accepts an additional parameter ‘variant’ to select between ‘white matter’, ‘pial’ and ‘inflated’ surface.

surfmap = jubrain.get_map('fsaverage6').fetch(variant="inflated")

The returned structure is a dictionary of three numpy arrays representing the vertices, faces, and labels respectively. Each vertex defines a 3D surface point, while the faces are triplets of indices into the list of vertices, defining surface triangles. The labels provide the label index associated with each vertex.

print(surfmap.keys())

Out:

dict_keys(['verts', 'faces', 'name', 'labels'])

For plotting meshes, most python libraries can be employes. We recommend again the plotting module of nilearn. We use Julich-Brain’s native colormap for plotting.

from nilearn import plotting
jubrain_cmap = jubrain.get_colormap()
plotting.view_surf(
    surf_mesh = [surfmap['verts'], surfmap['faces']],
    surf_map = surfmap['labels'],
    cmap = jubrain_cmap, symmetric_cmap=False, colorbar=False
)