parametric_family
Parametric family definitions and management infrastructure.
This module contains the main class for defining parametric families of distributions, including support for multiple parameterizations, distribution characteristics, sampling strategies, and computation methods.
- class pysatl_core.families.parametric_family.ParametricFamily(name, distr_type, distr_parametrizations, distr_characteristics, sampling_strategy=None, computation_strategy=None, support_by_parametrization=None)[source]
Bases:
objectA family of distributions with multiple parametrizations.
Represents a parametric family of distributions (e.g., normal, lognormal) that can be parameterized in different ways. Manages parametrizations, distribution characteristics, and provides factory methods for creating distribution instances.
- Parameters:
name (
str) – Name of the distribution family.distr_type (
DistributionTypeorCallable[[Parametrization],DistributionType]) – Distribution type or function that infers type from base parametrization.distr_parametrizations (
list[ParametrizationName]) – List of parametrization names (first is base parametrization).distr_characteristics (
dict[str,dict[str,Callable]orCallable]) – Mapping from characteristic names to computation functions. Single functions are treated as defined for the base parametrization.sampling_strategy (
SamplingStrategy, optional) – Strategy for sampling from distributions.computation_strategy (
ComputationStrategy, optional) – Strategy for computing distribution characteristics.support_by_parametrization (
CallableorNone, optional) – Function that returns support for given parameters.
- __init__(name, distr_type, distr_parametrizations, distr_characteristics, sampling_strategy=None, computation_strategy=None, support_by_parametrization=None)[source]
- Parameters:
name (str)
distr_type (DistributionType | Callable[[Parametrization], DistributionType])
distr_parametrizations (list[ParametrizationName])
distr_characteristics (dict[GenericCharacteristicName, dict[ParametrizationName, ParametrizedFunction] | ParametrizedFunction])
sampling_strategy (SamplingStrategy | None)
computation_strategy (ComputationStrategy[Any, Any] | None)
support_by_parametrization (SupportArg)
- property parametrizations: dict[ParametrizationName, type[pysatl_core.families.parametrizations.Parametrization]]
Get mapping from parametrization names to classes.
- property base: type[pysatl_core.families.parametrizations.Parametrization]
Get the base parametrization class.
- Raises:
ValueError – If base parametrization is not registered.
- property support_resolver: SupportResolver
Get the support resolver function.
- register_parametrization(name, parametrization_class)[source]
Register a parametrization class.
- Parameters:
name (
ParametrizationName) – Unique parametrization name.parametrization_class (
type[Parametrization]) – Parametrization class to register.
- Raises:
ValueError – If name is already registered.
- Return type:
- to_base(parameters)[source]
Convert parameters to the base parametrization.
- Parameters:
parameters (
Parametrization) – Parameters in any parametrization.- Returns:
Equivalent parameters in base parametrization.
- Return type:
Parametrization
- distribution(parametrization_name=None, **parameters_values)[source]
Create a distribution instance with given parameters.
- Parameters:
- Returns:
Distribution instance with specified parameters.
- Return type:
ParametricFamilyDistribution- Raises:
KeyError – If parametrization name is not registered.
ValueError – If parameters don’t satisfy constraints.
- parametrization(*, name)[source]
Create a class decorator that registers a parametrization.
If you want to use this syntax and so that Mypy doesn’t swear, you should mark your class as a dataclass. At the moment, Mypy cannot identify dataclass_transform if the decorator is a class method.
- Parameters:
name (
str) – Name of the parametrization.- Returns:
Class decorator for registering parametrizations.
- Return type:
Callable[[type[Parametrization]],type[Parametrization]]
- __call__(parametrization_name=None, **parameters_values)
Create a distribution instance with given parameters.
- Parameters:
- Returns:
Distribution instance with specified parameters.
- Return type:
ParametricFamilyDistribution- Raises:
KeyError – If parametrization name is not registered.
ValueError – If parameters don’t satisfy constraints.