Filter

A data class that encapsulates filter conditions for various Valor components.

Attributes:

Name Type Description
datasets (dict | FunctionType, optional)

Filter conditions to apply to datasets.

models (dict | FunctionType, optional)

Filter conditions to apply to models.

datums (dict | FunctionType, optional)

Filter conditions to apply to datums.

annotations (dict | FunctionType, optional)

Filter conditions to apply to annotations.

groundtruths (dict | FunctionType, optional)

Filter conditions to apply to groundtruths.

predictions (dict | FunctionType, optional)

Filter conditions to apply to predictions.

labels (dict | FunctionType, optional)

Filter conditions to apply to labels.

embeddings (dict | FunctionType, optional)

Filter conditions to apply to embeddings.

Examples:

Filter annotations by area and label.

>>> Filter(
...     annotations=And(
...         Label.key == "name",
...         Annotation.raster.area > upper_bound,
...     )
... )

Filter datums by annotations and labels.

>>> Filter(
...     datums=And(
...         Label.key == "name",
...         Annotation.raster.area > upper_bound,
...     )
... )
Source code in valor/schemas/filters.py
@dataclass
class Filter:
    """
    A data class that encapsulates filter conditions for various Valor components.

    Attributes
    ----------
    datasets : dict | FunctionType, optional
        Filter conditions to apply to datasets.
    models : dict | FunctionType, optional
        Filter conditions to apply to models.
    datums : dict | FunctionType, optional
        Filter conditions to apply to datums.
    annotations : dict | FunctionType, optional
        Filter conditions to apply to annotations.
    groundtruths : dict | FunctionType, optional
        Filter conditions to apply to groundtruths.
    predictions : dict | FunctionType, optional
        Filter conditions to apply to predictions.
    labels : dict | FunctionType, optional
        Filter conditions to apply to labels.
    embeddings : dict | FunctionType, optional
        Filter conditions to apply to embeddings.

    Examples
    --------
    Filter annotations by area and label.
    >>> Filter(
    ...     annotations=And(
    ...         Label.key == "name",
    ...         Annotation.raster.area > upper_bound,
    ...     )
    ... )

    Filter datums by annotations and labels.
    >>> Filter(
    ...     datums=And(
    ...         Label.key == "name",
    ...         Annotation.raster.area > upper_bound,
    ...     )
    ... )
    """

    datasets: Optional[Union[dict, FunctionType]] = None
    models: Optional[Union[dict, FunctionType]] = None
    datums: Optional[Union[dict, FunctionType]] = None
    annotations: Optional[Union[dict, FunctionType]] = None
    groundtruths: Optional[Union[dict, FunctionType]] = None
    predictions: Optional[Union[dict, FunctionType]] = None
    labels: Optional[Union[dict, FunctionType]] = None
    embeddings: Optional[Union[dict, FunctionType]] = None

    def to_dict(self) -> dict:
        if isinstance(self.datasets, FunctionTypeTuple):
            self.datasets = self.datasets.to_dict()
        if isinstance(self.models, FunctionTypeTuple):
            self.models = self.models.to_dict()
        if isinstance(self.datums, FunctionTypeTuple):
            self.datums = self.datums.to_dict()
        if isinstance(self.annotations, FunctionTypeTuple):
            self.annotations = self.annotations.to_dict()
        if isinstance(self.groundtruths, FunctionTypeTuple):
            self.groundtruths = self.groundtruths.to_dict()
        if isinstance(self.predictions, FunctionTypeTuple):
            self.predictions = self.predictions.to_dict()
        if isinstance(self.labels, FunctionTypeTuple):
            self.labels = self.labels.to_dict()
        if isinstance(self.embeddings, FunctionTypeTuple):
            self.embeddings = self.embeddings.to_dict()
        return asdict(self)