Source code for ethology.validators.detections

"""Validators for detection datasets."""

from attrs import define, field

from ethology.validators.utils import ValidDataset


[docs] @define class ValidBboxDetectionsDataset(ValidDataset): """Class for valid ``ethology`` bounding box detections datasets. This class validates that the input dataset: - is an xarray Dataset, - has ``image_id``, ``space``, ``id`` as dimensions, - has ``position``, ``shape`` and ``confidence`` as data variables, - ``position`` and ``shape`` span at least the dimensions ``image_id``, ``space`` and ``id``, - ``confidence`` spans at least the dimensions ``image_id`` and ``id``. Attributes ---------- dataset : xarray.Dataset The xarray dataset to validate. required_dims : set The set of required dimension names: ``image_id``, ``space`` and ``id``. required_data_vars : dict[str, set] A dictionary mapping data variable names to their required minimum dimensions: - ``position`` maps to ``image_id``, ``space`` and ``id``, - ``shape`` maps to ``image_id``, ``space`` and ``id``, - ``confidence`` maps to ``image_id`` and ``id``. Raises ------ TypeError If the input is not an xarray Dataset. ValueError If the dataset is missing required data variables or dimensions, or if any required dimensions are missing for any data variable. Notes ----- The dataset can have other data variables and dimensions, but only the required ones are checked. """ # Minimum requirements for a bbox dataset holding detections required_dims: set = field( default={"image_id", "space", "id"}, init=False, ) required_data_vars: dict = field( default={ "position": {"image_id", "space", "id"}, "shape": {"image_id", "space", "id"}, "confidence": {"image_id", "id"}, }, init=False, )