DiscreteProductConstraint

class baybe.constraints.discrete.DiscreteProductConstraint[source]

Bases: DiscreteFilteringConstraint

Class for modeling product constraints on discrete parameters.

The constraint compares the product of the specified parameters against DiscreteProductConstraint.rhs using DiscreteProductConstraint.operator.

Examples

>>> df = pd.DataFrame({"A": [2.0, 3.0, 5.0], "B": [3.0, 2.0, 2.0]})
>>> df
     A    B
0  2.0  3.0
1  3.0  2.0
2  5.0  2.0
>>> c = DiscreteProductConstraint(
...     parameters=["A", "B"],
...     operator="<=",
...     rhs=8.0,
... )
>>> list(c.get_invalid(df))
[2]

Public methods

__init__(*args, **kwargs)

Method generated by attrs for class DiscreteFilteringConstraint.

from_dict(dictionary)

Create an object from its dictionary representation.

from_json(source, /)

Create an object from its JSON representation.

get_invalid(df, /, *[, allow_missing])

Get the indices of dataframe entries that are invalid under the constraint.

get_invalid_polars(schema)

Translate the constraint to a Polars expression identifying rows to remove.

get_valid(df, /, *[, allow_missing])

Get the indices of dataframe entries that are valid under the constraint.

summary()

Return a custom summarization of the constraint.

to_dict()

Create an object's dictionary representation.

to_json([sink, overwrite])

Create an object's JSON representation.

Public attributes and properties

operator

The comparison operator (e.g. "=", ">=", "<").

rhs

Right-hand side value of the comparison.

tolerance

Numerical tolerance for equality/inequality operators that support it.

exclude

Whether to invert the selection (keep the complement of the specification).

has_polars_implementation

is_continuous

Boolean indicating if this is a constraint over continuous parameters.

is_discrete

Boolean indicating if this is a constraint over discrete parameters.

numerical_only

Class variable encoding whether the constraint is valid only for numerical parameters.

parameters

The list of parameters used for the constraint.

__init__(*args: Any, **kwargs: Any)[source]

Method generated by attrs for class DiscreteFilteringConstraint.

For details on the parameters, see Public attributes and properties.

classmethod from_dict(dictionary: dict)

Create an object from its dictionary representation.

Parameters:

dictionary (dict) – The dictionary representation.

Return type:

TypeVar(_T, bound= SerialMixin)

Returns:

The reconstructed object.

classmethod from_json(source: str | Path | SupportsRead[str], /)

Create an object from its JSON representation.

Parameters:

source (Union[str, Path, SupportsRead[str]]) –

The JSON source. Can be:

  • A string containing JSON content.

  • A file path or Path object pointing to a JSON file.

  • A file-like object with a read() method.

Raises:

ValueError – If source is not one of the allowed types.

Return type:

TypeVar(_T, bound= SerialMixin)

Returns:

The reconstructed object.

get_invalid(df: DataFrame, /, *, allow_missing: bool = False)

Get the indices of dataframe entries that are invalid under the constraint.

Parameters:
  • df (DataFrame) – A dataframe where each row represents a parameter configuration.

  • allow_missing (bool) – If False, a ValueError is raised when the dataframe is missing required parameter columns. If True, the subclass is asked whether it can perform (partial) constraint evaluation; if not, an empty index is returned, signaling to the caller there are no entries to be excluded *yet*.

Raises:

ValueError – If allow_missing is False and the dataframe is missing required parameter columns.

Return type:

Index

Returns:

The dataframe indices of rows that violate the constraint.

get_invalid_polars(schema: Schema)

Translate the constraint to a Polars expression identifying rows to remove.

Parameters:

schema (Schema) – The Polars schema of the dataframe being filtered.

Return type:

Expr

Returns:

The Polars expression.

get_valid(df: DataFrame, /, *, allow_missing: bool = False)

Get the indices of dataframe entries that are valid under the constraint.

Parameters:
  • df (DataFrame) – A dataframe where each row represents a parameter configuration.

  • allow_missing (bool) – If False, a ValueError is raised when the dataframe is missing required parameter columns. If True, the constraint performs partial filtering on the available columns.

Return type:

Index

Returns:

The dataframe indices of rows that fulfill the constraint.

summary()

Return a custom summarization of the constraint.

Return type:

dict

to_dict()

Create an object’s dictionary representation.

Return type:

dict

Returns:

The dictionary representation of the object.

to_json(sink: str | Path | SupportsWrite[str] | None = None, /, *, overwrite: bool = False, **kwargs: Any)

Create an object’s JSON representation.

Parameters:
  • sink (Union[str, Path, SupportsWrite[str], None]) –

    The JSON sink. Can be:

    • None (only returns the JSON string).

    • A file path or Path object pointing to a location where to write the JSON content.

    • A file-like object with a write() method.

  • overwrite (bool) – Boolean flag indicating if to overwrite the file if it already exists. Only relevant if sink is a file path or Path object.

  • **kwargs (Any) – Additional keyword arguments to pass to json.dumps().

Raises:

FileExistsError – If sink points to an already existing file but overwrite is False.

Return type:

str

Returns:

The JSON representation as a string.

exclude: bool

Whether to invert the selection (keep the complement of the specification).

property is_continuous: bool

Boolean indicating if this is a constraint over continuous parameters.

property is_discrete: bool

Boolean indicating if this is a constraint over discrete parameters.

numerical_only: ClassVar[bool] = True

Class variable encoding whether the constraint is valid only for numerical parameters.

operator: Literal['<', '<=', '=', '==', '!=', '>', '>=']

The comparison operator (e.g. "=", ">=", "<").

parameters: list[str]

The list of parameters used for the constraint.

rhs: float

Right-hand side value of the comparison.

tolerance: float | None

Numerical tolerance for equality/inequality operators that support it.

Only applicable when operator is one of "=", "==", "!=". Set to a reasonable default when left as None.