strategies

Computation and Sampling Strategies

This module defines strategies for computing distribution characteristics and generating random samples.

class pysatl_core.distributions.strategies.ComputationStrategy(*args, **kwargs)[source]

Bases: Protocol, Generic

Protocol for strategies that resolve computation methods for characteristics.

enable_caching

Whether to cache fitted computation methods.

Type:

bool

enable_caching: bool
query_method(state, distr, **options)[source]
Return type:

GenericAlias[typing.Any, typing.Any]

Parameters:
  • state (GenericCharacteristicName)

  • distr (Distribution)

  • options (Any)

__init__(*args, **kwargs)
class pysatl_core.distributions.strategies.DefaultComputationStrategy(enable_caching=False)[source]

Bases: Generic

Default strategy for resolving characteristic computation methods.

This strategy first checks for analytical implementations provided by the distribution. If none exists, it walks the characteristic graph to find a conversion path from an analytical characteristic to the target characteristic.

Parameters:

enable_caching (bool, default False) – If True, cache fitted conversions to avoid repeated fitting.

enable_caching

Whether caching is enabled.

Type:

bool

_cache

Cache of fitted computation methods.

Type:

dict[str, FittedComputationMethod]

_resolving

Tracking of currently resolving characteristics to detect cycles.

Type:

dict[int, set[str]]

__init__(enable_caching=False)[source]
Parameters:

enable_caching (bool)

Return type:

None

query_method(state, distr, **options)[source]

Resolve a computation method for the target characteristic.

Resolution order: 1. Analytical implementation from the distribution 2. Cached fitted method (if caching enabled) 3. Conversion path from an analytical characteristic via the graph

Parameters:
  • state (str) – Target characteristic name (e.g., “pdf”, “cdf”).

  • distr (Distribution) – Distribution to compute the characteristic for.

  • **options (Any) – Additional options passed to fitters.

Returns:

Callable that computes the characteristic.

Return type:

Method

Raises:

RuntimeError – If no analytical base exists, no conversion path is found, or a cycle is detected.

class pysatl_core.distributions.strategies.SamplingStrategy(*args, **kwargs)[source]

Bases: Protocol

Protocol for strategies that generate samples from distributions.

sample(n, distr, **options)[source]
Return type:

ndarray[tuple[Any, ...], dtype[floating[Any] | integer[Any]]]

Parameters:
__init__(*args, **kwargs)
class pysatl_core.distributions.strategies.DefaultSamplingUnivariateStrategy(*args, **kwargs)[source]

Bases: SamplingStrategy

Default univariate sampler based on inverse transform sampling.

This strategy generates samples by applying the PPF (inverse CDF) to uniformly distributed random variables.

Notes

  • Requires the distribution to provide a PPF computation method.

  • Assumes that the PPF follows NumPy semantics (vectorized evaluation).

  • Graph-derived PPFs (scalar-only) are currently not supported.

  • Returns a NumPy array containing the generated samples.

sample(n, distr, **options)[source]

Generate samples from the distribution.

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

  • distr (Distribution) – Distribution to sample from.

  • **options (Any) – Additional options forwarded to the PPF computation.

Returns:

NumPy array containing n generated samples. The exact array shape depends on the distribution and sampling strategy.

Return type:

NumericArray