Source code for baybe.parameters.validation
"""Validation functionality for parameters."""
from collections.abc import Sequence
from typing import Any
import numpy as np
from attrs.validators import gt, instance_of, lt
[docs]
def validate_unique_values( # noqa: DOC101, DOC103
obj: Any, _: Any, value: list
) -> None:
"""Validate that there are no duplicates in ``value``.
Raises:
ValueError: If there are duplicates in ``value``.
"""
if len(set(value)) != len(value):
raise ValueError(
f"Cannot assign the following values containing duplicates to "
f"parameter {obj.name}: {value}."
)
[docs]
def validate_decorrelation(obj: Any, attribute: Any, value: float) -> None:
"""Validate the decorrelation."""
instance_of((bool, float))(obj, attribute, value)
if isinstance(value, float):
gt(0.0)(obj, attribute, value)
lt(1.0)(obj, attribute, value)
[docs]
def validate_is_finite( # noqa: DOC101, DOC103
obj: Any, _: Any, value: Sequence[float]
) -> None:
"""Validate that ``value`` contains no infinity/nan.
Raises:
ValueError: If ``value`` contains infinity/nan.
"""
if not all(np.isfinite(value)):
raise ValueError(
f"Cannot assign the following values containing infinity/nan to "
f"parameter {obj.name}: {value}."
)