Source code for netneurotools.interface.freesurfer
"""Functions for working with FreeSurfer data and parcellations."""
import numpy as np
import nibabel as nib
from netneurotools.interface.interface_utils import PARCIGNORE
[docs]
def extract_annot_labels(annot_file, parc_ignore=PARCIGNORE):
"""
Extract vertices and labels from FreeSurfer annotation file.
Parameters
----------
annot_file : str or Path
Path to FreeSurfer annotation file.
parc_ignore : list, optional
List of labels to ignore.
Returns
-------
surf_data : np.ndarray
Surface data.
keys : tuple
Keys.
labels : tuple
Labels.
"""
surf_data, _, labels = nib.freesurfer.read_annot(annot_file)
labels = [label.decode() for label in labels]
keys = np.sort(np.unique(surf_data))
keys, labels = zip(
*[
(key, label)
for key, label in zip(keys, labels)
if label not in parc_ignore
]
)
keys = tuple(map(int, keys))
return surf_data, keys, labels