Exclusion#

Module for the Exclusion set-operation.

class Exclusion(geometries)[source]#

Bases: BaseOperation

Implementation of the exclusion operation defined on a list of domains.

Given multiple sets \(A_1, A_2, \ldots, A_n\), define their exclusion as:

\[\bigcup_{i=1}^{n} \big(A_i \setminus \bigcup_{j \neq i} A_j \big)\]

In other words, the exclusion operation returns the set of points that belong to exactly one of the input sets.

In case of two sets, the exclusion corresponds to the symmetric difference.

No check is performed to ensure that the resulting domain is non-empty.

Example:
>>> cartesian1 = CartesianDomain({'x': [0, 1], 'y': [0, 1]})
>>> cartesian2 = CartesianDomain({'x': [0, 1], 'y': [0.5, 1.5]})
>>> exclusion = Exclusion([cartesian1, cartesian2])

Initialization of the OperationInterface class.

Parameters:

geometries (list[BaseDomain] | tuple[BaseDomain]) – The list of domains on which to perform the set operation.

Raises:
is_inside(point, check_border=False)[source]#

Check if a point is inside the exclusion of the domains.

Parameters:
  • point (LabelTensor) – The point to check.

  • check_border (bool) – If True, the boundary is considered inside the domain. Default is False.

Raises:
  • ValueError – If point is not a LabelTensor.

  • ValueError – If the labels of point differ from the variables of the domain.

Returns:

Whether the point is inside the domain or not.

Return type:

bool

sample(n, mode='random', variables='all')[source]#

The sampling routine.

Note

This sampling method relies on rejection sampling. Points are drawn from the individual geometries, and only those that lie exclusively within one geometry are kept. When the exclusion domain is small relative to the combined area of the input domains, the method may become highly inefficient.

Parameters:
  • n (int) – The number of samples to generate.

  • mode (str) – The sampling method. Default is random.

  • variables (list[str] | str) – The list of variables to sample. If all, all variables are sampled. Default is all.

Raises:
  • AssertionError – If n is not a positive integer.

  • ValueError – If the sampling mode is invalid.

  • ValueError – If variables is neither all, a string, nor a list/tuple of strings.

  • ValueError – If any of the specified variables is unknown.

Returns:

The sampled points.

Return type:

LabelTensor

partial()[source]#

Return the boundary of the domain resulting from the operation.

Raises:

NotImplementedError – The partial() method is not implemented for exclusion domains. Please operate on the individual domains instead.