Source code for glotaran.project.project_data_registry

"""The glotaran data registry module."""
from __future__ import annotations

from pathlib import Path

from glotaran.io import load_dataset
from glotaran.io import save_dataset
from glotaran.plugin_system.data_io_registration import known_data_formats
from glotaran.project.project_registry import ProjectRegistry


[docs]class ProjectDataRegistry(ProjectRegistry): """A registry for data.""" def __init__(self, directory: Path): """Initialize a data registry. Parameters ---------- directory : Path The registry directory. """ super().__init__( directory / "data", [f".{fmt}" for fmt in known_data_formats()], load_dataset )
[docs] def import_data( self, path: str | Path, name: str | None = None, allow_overwrite: bool = False, ignore_existing: bool = False, ): """Import a dataset. Parameters ---------- path : str | Path The path to the dataset. name : str | None The name of the dataset. allow_overwrite: bool Whether to overwrite an existing dataset. ignore_existing: bool Whether to ignore import if the dataset already exists. """ path = Path(path) name = name or path.stem data_path = self.directory / f"{name}.nc" if data_path.exists() and ignore_existing: return dataset = load_dataset(path) save_dataset(dataset, data_path, allow_overwrite=allow_overwrite)