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:
ProtocolProtocol for strategies that resolve computation methods for characteristics.
- query_method(state, distr, **options)[source]
- Return type:
- Parameters:
state (GenericCharacteristicName)
distr (Distribution)
options (Any)
- __init__(*args, **kwargs)
- class pysatl_core.distributions.strategies.DefaultComputationStrategy(enable_caching=False)[source]
Bases:
objectDefault 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. Cached fitted method (if caching enabled) 2. Analytical implementation for non-registry characteristics 3. Analytical self-loop from the registry view 4. Conversion path from analytical-loop characteristics 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.