Source code for bob.pad.base.pipelines.abstract_classes

from __future__ import annotations

from abc import ABCMeta, abstractmethod

from bob.pipelines import Sample


class Database(metaclass=ABCMeta):
    """Base database class for PAD experiments."""

[docs] @abstractmethod def fit_samples(self) -> list[Sample]: """Returns :any:`bob.pipelines.Sample`'s to train a PAD model. Returns ------- samples : list List of samples for model training. """ pass
[docs] @abstractmethod def predict_samples(self, group: str = "dev") -> list[Sample]: """Returns :any:`bob.pipelines.Sample`'s to be scored. Parameters ---------- group : :py:class:`str`, optional Limits samples to this group Returns ------- samples : list List of samples to be scored. """ pass
[docs] def all_samples( self, groups: str | list[str] | None = None ) -> list[Sample]: """Returns all the samples of the database in one list. Giving ``groups`` will restrict the ``predict_samples`` to those groups. """ samples = self.fit_samples() if groups is not None: if type(groups) is str: groups = [groups] for group in groups: samples.extend(self.predict_samples(group=group)) else: samples.extend(self.predict_samples(group=group)) return samples