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]
-
Protocol for strategies that resolve computation methods for characteristics.
- 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:
GenericDefault 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, defaultFalse) – If True, cache fitted conversions to avoid repeated fitting.
- _cache
Cache of fitted computation methods.
- Type:
dict[str,FittedComputationMethod]
- _resolving
Tracking of currently resolving characteristics to detect cycles.
- Type:
dict[int,set[str]]
- 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:
ProtocolProtocol for strategies that generate samples from distributions.
- __init__(*args, **kwargs)
- class pysatl_core.distributions.strategies.DefaultSamplingUnivariateStrategy(*args, **kwargs)[source]
Bases:
SamplingStrategyDefault 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
ngenerated samples. The exact array shape depends on the distribution and sampling strategy.- Return type:
NumericArray