Skip to content

registry

lacuna.assets.templates.registry

Template registry with TemplateFlow integration.

This module provides registry and metadata for reference brain templates. Templates are automatically downloaded from TemplateFlow on first use.

TemplateMetadata dataclass

Bases: SpatialAssetMetadata

Metadata for a reference brain template.

Attributes:

Name Type Description
name str

Template identifier (e.g., "MNI152NLin2009cAsym")

space str

Coordinate space (same as name for templates)

resolution float

Voxel resolution in mm

description str

Human-readable description

modality str

Image modality (e.g., "T1w", "T2w", "FLAIR")

source str

Source of template (always "templateflow")

Source code in src/lacuna/assets/templates/registry.py
@dataclass(frozen=True)
class TemplateMetadata(SpatialAssetMetadata):
    """Metadata for a reference brain template.

    Attributes
    ----------
    name : str
        Template identifier (e.g., "MNI152NLin2009cAsym")
    space : str
        Coordinate space (same as name for templates)
    resolution : float
        Voxel resolution in mm
    description : str
        Human-readable description
    modality : str
        Image modality (e.g., "T1w", "T2w", "FLAIR")
    source : str
        Source of template (always "templateflow")
    """

    modality: str = "T1w"
    source: str = "templateflow"

list_templates(space=None, resolution=None, modality=None)

List available templates from TemplateFlow.

Parameters:

Name Type Description Default
space str

Filter by coordinate space

None
resolution float

Filter by resolution in mm

None
modality str

Filter by modality (e.g., "T1w", "T2w")

None

Returns:

Type Description
list[TemplateMetadata]

Matching templates

Examples:

>>> from lacuna.assets.templates import list_templates
>>>
>>> # List all available templates
>>> templates = list_templates()
>>>
>>> # Filter by space and resolution
>>> mni_1mm = list_templates(space="MNI152NLin2009cAsym", resolution=1.0)
Source code in src/lacuna/assets/templates/registry.py
def list_templates(
    space: str | None = None,
    resolution: float | None = None,
    modality: str | None = None,
) -> list[TemplateMetadata]:
    """List available templates from TemplateFlow.

    Parameters
    ----------
    space : str, optional
        Filter by coordinate space
    resolution : float, optional
        Filter by resolution in mm
    modality : str, optional
        Filter by modality (e.g., "T1w", "T2w")

    Returns
    -------
    list[TemplateMetadata]
        Matching templates

    Examples
    --------
    >>> from lacuna.assets.templates import list_templates
    >>>
    >>> # List all available templates
    >>> templates = list_templates()
    >>>
    >>> # Filter by space and resolution
    >>> mni_1mm = list_templates(space="MNI152NLin2009cAsym", resolution=1.0)
    """
    return TEMPLATE_REGISTRY.list(space=space, resolution=resolution, modality=modality)