data_handlers
data_handlers ¶
Data handlers for generating values, random variables, and other data types.
CategoricalDistribution ¶
Bases: RandomVariable[T]
Categorical distribution for discrete outcomes with specified probabilities.
A categorical distribution (also called a discrete distribution) describes the probability of obtaining one of k possible outcomes. Each outcome has a probability between 0 and 1, and all probabilities must sum to 1.
If probabilities are not specified, defaults to equal probabilities for all categories (uniform discrete distribution).
Key Properties
- Support is finite set of categories
- PMF gives probability of each category
- CDF is step function
Attributes:
Name | Type | Description |
---|---|---|
categories |
ndarray
|
Array of possible outcomes (any type) |
probabilities |
ndarray
|
Probability for each category |
name |
str
|
Identifier for this distribution instance |
seed |
Optional[int]
|
Random seed for reproducible sampling |
replace |
bool
|
Whether or not to allow multiple draws of the same value (allowed if True) |
Raises:
Type | Description |
---|---|
ValueError
|
If probabilities don't sum to 1 |
ValueError
|
If lengths of categories and probabilities don't match |
ValueError
|
If any probability is negative |
cdf ¶
Evaluate the cumulative distribution function.
For categorical distributions, this is a step function that increases at each category by that category's probability.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
x
|
ndarray
|
Points at which to evaluate the CDF |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
squeeze |
bool
|
Whether to remove unnecessary dimensions.
Added by RandomVariableMeta. Defaults is |
Returns:
Type | Description |
---|---|
NDArray[Any, float]
|
NDArray[Any,float]: CDF values at the input points |
Source code in src/data_handlers/random_variables.py
pdf ¶
Evaluate the probability mass function (PMF).
For categorical distributions, this gives the probability of each category occurring.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
x
|
ndarray
|
Points at which to evaluate the PMF |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
squeeze |
bool
|
Whether to remove unnecessary dimensions.
Added by RandomVariableMeta. Defaults is |
Returns:
Type | Description |
---|---|
NDArray[Any, float]
|
NDArray[Any,float]: Probability of each input value |
Source code in src/data_handlers/random_variables.py
sample ¶
Generate random samples from the categorical distribution.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
size
|
int
|
Number of samples to generate. Defaults to 1. |
1
|
Other Parameters:
Name | Type | Description |
---|---|---|
squeeze |
bool
|
Whether to remove unnecessary dimensions.
Added by RandomVariableMeta. Defaults is |
Notes
The squeeze parameter is added automatically by the metaclass and does not appear in the function signature, but can be passed as a keyword argument.
Returns:
Type | Description |
---|---|
NDArray[Any, T]
|
NDArray[Any,T]: Array of samples from the categories |
Source code in src/data_handlers/random_variables.py
validate_and_set_probabilities ¶
validate_and_set_probabilities() -> CategoricalDistribution
Validate probability values and set defaults if needed.
Source code in src/data_handlers/random_variables.py
NamedObject ¶
Bases: BaseModel
Base class for named objects with serialization support.
Attributes:
Name | Type | Description |
---|---|---|
type |
str
|
Name of object class type (computed field) |
name |
str
|
Name of the object |
Configuration
model_config (ConfigDict): Pydantic model configuration
NamedObjectHash ¶
Bases: BaseModel
Dictionary of named objects with type checking and conflict prevention.
Attributes:
Name | Type | Description |
---|---|---|
objects |
dict
|
Dictionary of named objects |
deserialize_objects
classmethod
¶
Deserialize objects during validation.
Source code in src/data_handlers/base.py
get_object ¶
get_object(name: str) -> NamedObject
get_object_names ¶
get_objects ¶
get_objects() -> Iterable[NamedObject]
register_object ¶
register_object(obj: NamedObject) -> Self
Register a named object. Checks for naming conflicts.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
obj
|
NamedObject
|
Object to register |
required |
Raises:
Type | Description |
---|---|
ValueError
|
If object with same name exists |
Source code in src/data_handlers/base.py
NamedObjectList ¶
Bases: BaseModel
List of named objects with type checking.
Attributes:
Name | Type | Description |
---|---|---|
objects |
list
|
List of named objects |
Example
__getitem__ ¶
__getitem__(idx: int) -> NamedObject
__iter__ ¶
__iter__() -> Iterable[NamedObject]
append ¶
append(obj: NamedObject) -> Self
Append a single object to the list.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
obj
|
NamedObject
|
Object to append |
required |
Returns:
Name | Type | Description |
---|---|---|
Self |
Self
|
Returns self for chaining |
extend ¶
extend(objects: Iterable[NamedObject]) -> Self
Extend list with multiple objects.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
objects
|
Iterable[NamedObject]
|
Objects to add |
required |
Returns:
Name | Type | Description |
---|---|---|
Self |
Self
|
Returns self for chaining |
Source code in src/data_handlers/base.py
from_iterable
classmethod
¶
from_iterable(iterable: Iterable[NamedObject]) -> Self
Create instance from an iterable of named objects.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
iterable
|
Iterable[NamedObject]
|
Objects to add to list |
required |
Returns:
Name | Type | Description |
---|---|---|
Self |
Self
|
New instance containing the objects |
Source code in src/data_handlers/base.py
get_object ¶
get_object(name: str) -> NamedObject
Get a registered object by name.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
name
|
str
|
Name of the object to retrieve |
required |
Returns:
Name | Type | Description |
---|---|---|
NamedObject |
NamedObject
|
The requested object |
Raises:
Type | Description |
---|---|
KeyError
|
If no object exists with the given name |
Source code in src/data_handlers/base.py
get_objects ¶
get_objects() -> Iterable[NamedObject]
Get all registered objects.
Returns:
Type | Description |
---|---|
Iterable[NamedObject]
|
Iterable[NamedObject]: Iterator over all stored objects |
Example
Source code in src/data_handlers/base.py
register_object ¶
register_object(obj: NamedObject) -> Self
Register a named object to the list with duplicate name checking.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
obj
|
NamedObject
|
Object to register |
required |
Returns:
Name | Type | Description |
---|---|---|
Self |
Self
|
Returns self for method chaining |
Raises:
Type | Description |
---|---|
ValueError
|
If an object with the same name already exists |
Source code in src/data_handlers/base.py
NamedValue ¶
NamedValue(name: str, value: T | None = None, **data)
Bases: NamedObject
, Generic[T]
A named value container with type safety and state management.
NamedValue provides a type-safe way to store and manage values with built-in state tracking, serialization, and validation. Values can be frozen after initial setting to prevent accidental modification.
Type Parameters
T: The type of value to store, must be a SerializableValue
Attributes:
Name | Type | Description |
---|---|---|
name |
str
|
Unique identifier for the value |
_stored_value |
T | NamedValueState
|
The actual stored value or UNSET state |
_state |
NamedValueState
|
Current state of the value |
_type |
type
|
Runtime type information for validation |
Properties
value (T): Access or modify the stored value
Example
Source code in src/data_handlers/values.py
value
property
writable
¶
Get the stored value.
Returns:
Name | Type | Description |
---|---|---|
T |
T
|
The currently stored value |
Raises:
Type | Description |
---|---|
ValueError
|
If attempting to access before a value has been set |
Note
This property provides read access to the stored value. Once set, the value is frozen and can only be changed using force_set_value().
__setattr__ ¶
Prevent direct modification of protected attributes.
Overrides attribute setting to prevent direct modification of internal state attributes. These attributes should only be modified through appropriate methods.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
name
|
str
|
Name of the attribute to set |
required |
value
|
Any
|
Value to set |
required |
Raises:
Type | Description |
---|---|
AttributeError
|
If attempting to modify protected attributes directly |
Source code in src/data_handlers/values.py
append_to_value_list ¶
append_to_value_list(l: NamedValueList) -> Self
Appends this value instance to a NamedValueList.
Convenience method for adding this value to a list while enabling method chaining.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
l
|
NamedValueList
|
The list to append this value to |
required |
Returns:
Name | Type | Description |
---|---|---|
Self |
Self
|
This instance for method chaining |
Example
Source code in src/data_handlers/values.py
force_set_value ¶
Force set the value regardless of its current state.
This method bypasses the normal freezing mechanism and allows changing an already-set value.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
new_value
|
T
|
New value to store |
required |
Raises:
Type | Description |
---|---|
TypeError
|
If value doesn't match the expected type T |
Source code in src/data_handlers/values.py
model_dump ¶
Custom serialization to include value state and stored value.
Extends the parent class serialization to include the value's state and stored value (if set) in the serialized data.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**kwargs
|
Additional arguments passed to parent serialization |
{}
|
Returns:
Type | Description |
---|---|
dict[str, Any]
|
dict[str, Any]: Dictionary containing serialized state |
Example
Source code in src/data_handlers/values.py
model_dump_json ¶
model_dump_json(**kwargs) -> str
Custom JSON serialization of the named value.
Serializes the named value instance to a JSON string, including all state information and stored value.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**kwargs
|
JSON serialization options like indent, ensure_ascii, etc. |
{}
|
Returns:
Name | Type | Description |
---|---|---|
str |
str
|
JSON string representation |
Example
Source code in src/data_handlers/values.py
model_validate
classmethod
¶
model_validate(data: Any) -> NamedValue
Custom deserialization to restore value state and stored value.
Reconstructs a NamedValue instance from serialized data, properly restoring both the value state and any stored value.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
data
|
Any
|
Serialized data to deserialize |
required |
Returns:
Name | Type | Description |
---|---|---|
NamedValue |
NamedValue
|
New instance with restored state |
Example
Source code in src/data_handlers/values.py
model_validate_json
classmethod
¶
model_validate_json(json_data: str, **kwargs) -> NamedValue
Custom JSON deserialization to NamedValue instance.
Reconstructs a NamedValue instance from a JSON string representation, restoring all state and stored value information.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
json_data
|
str
|
JSON string to deserialize |
required |
**kwargs
|
Additional validation options |
{}
|
Returns:
Name | Type | Description |
---|---|---|
NamedValue |
NamedValue
|
New instance with restored state |
Example
Source code in src/data_handlers/values.py
register_to_value_hash ¶
register_to_value_hash(h: NamedValueHash) -> Self
Registers this value instance in a NamedValueHash.
Registers this value in the provided hash container. If the hash contains value overrides, this value's current value may be overridden during registration.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
h
|
NamedValueHash
|
The hash to register this value in |
required |
Returns:
Name | Type | Description |
---|---|---|
Self |
Self
|
This instance for method chaining |
Example
Source code in src/data_handlers/values.py
NamedValueHash ¶
Bases: NamedObjectHash
A type-safe dictionary for storing and managing NamedValue objects.
NamedValueHash provides a dictionary-like interface for managing a collection of NamedValue instances, using their names as keys. It ensures type safety and provides convenient methods for accessing and managing the stored values.
The hash maintains unique naming across all stored values and supports serialization/deserialization of the entire collection.
Attributes:
Name | Type | Description |
---|---|---|
_registry_category |
str
|
Category identifier for object registration |
model_config |
ConfigDict
|
Pydantic configuration for model behavior |
Example
get_raw_value ¶
Get the underlying value by name.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
name
|
str
|
Name of the value to retrieve |
required |
Returns:
Name | Type | Description |
---|---|---|
Any |
Any
|
The actual value stored in the named value |
Raises:
Type | Description |
---|---|
KeyError
|
If no value exists with the given name |
ValueError
|
If the value hasn't been set yet |
Example
Source code in src/data_handlers/values.py
get_raw_values ¶
Get the underlying values of all named values.
Returns:
Type | Description |
---|---|
Iterable[Any]
|
Iterable[Any]: Iterator over the actual values stored in each NamedValue |
Example
Source code in src/data_handlers/values.py
get_value ¶
get_value(name: str) -> NamedValue
Retrieve a named value by its name.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
name
|
str
|
Name of the value to retrieve |
required |
Returns:
Name | Type | Description |
---|---|---|
NamedValue |
NamedValue
|
The requested named value |
Raises:
Type | Description |
---|---|
KeyError
|
If no value exists with the given name |
Example
Source code in src/data_handlers/values.py
get_value_by_type ¶
get_value_by_type(value_type: Type) -> Iterable[NamedValue]
Get all values of a specific type.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
value_type
|
Type
|
Type to filter values by |
required |
Returns:
Type | Description |
---|---|
Iterable[NamedValue]
|
Iterable[NamedValue]: Values matching the specified type |
Example
Source code in src/data_handlers/values.py
get_value_names ¶
Get names of all registered values.
Returns:
Type | Description |
---|---|
Iterable[str]
|
Iterable[str]: An iterator over all value names |
Example
Source code in src/data_handlers/values.py
get_values ¶
get_values() -> Iterable[NamedValue]
Get all registered named values.
Returns:
Type | Description |
---|---|
Iterable[NamedValue]
|
Iterable[NamedValue]: An iterator over all stored named values |
Example
Source code in src/data_handlers/values.py
model_dump ¶
Custom serialization to preserve stored values and their states.
Creates a dictionary representation of the hash that includes full serialization of all contained NamedValue objects, preserving their values and states.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**kwargs
|
Additional serialization options passed to all nested objects |
{}
|
Returns:
Type | Description |
---|---|
dict[str, Any]
|
dict[str, Any]: Dictionary containing the complete hash state |
Example
Source code in src/data_handlers/values.py
model_dump_json ¶
model_dump_json(**kwargs) -> str
Custom JSON serialization of the entire hash.
Serializes the NamedValueHash instance and all contained NamedValue objects to a JSON string representation. Handles both the hash structure and the nested value serialization.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**kwargs
|
JSON serialization options such as: - indent: Number of spaces for pretty printing - ensure_ascii: Escape non-ASCII characters - separators: Tuple of (item_sep, key_sep) for custom formatting |
{}
|
Returns:
Name | Type | Description |
---|---|---|
str |
str
|
JSON string representation of the hash |
Example
Source code in src/data_handlers/values.py
model_validate
classmethod
¶
model_validate(data: Any) -> NamedValueHash
Custom validation to restore hash state from serialized data.
Reconstructs a NamedValueHash instance from serialized data, including all contained NamedValue objects with their values and states.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
data
|
Any
|
Serialized data to deserialize. Should be a dictionary containing an 'objects' key with serialized NamedValue instances |
required |
Returns:
Name | Type | Description |
---|---|---|
NamedValueHash |
NamedValueHash
|
New instance with all values restored |
Example
Source code in src/data_handlers/values.py
model_validate_json
classmethod
¶
model_validate_json(json_data: str, **kwargs) -> NamedValueHash
Custom JSON deserialization to NamedValueHash instance.
Reconstructs a NamedValueHash instance from a JSON string representation, including all contained NamedValue objects with their complete state.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
json_data
|
str
|
JSON string containing serialized hash data |
required |
**kwargs
|
Additional validation options for nested objects |
{}
|
Returns:
Name | Type | Description |
---|---|---|
NamedValueHash |
NamedValueHash
|
New instance with all values restored |
Example
Source code in src/data_handlers/values.py
register_value ¶
register_value(value: NamedValue) -> Self
Register a named value in the hash.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
value
|
NamedValue
|
The value to register |
required |
Returns:
Name | Type | Description |
---|---|---|
Self |
Self
|
Returns self for method chaining |
Raises:
Type | Description |
---|---|
ValueError
|
If a value with the same name already exists |
Example
Source code in src/data_handlers/values.py
set_raw_value ¶
Set the underlying value for a named value.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
name
|
str
|
Name of the value to update |
required |
value
|
Any
|
New value to set |
required |
Raises:
Type | Description |
---|---|
KeyError
|
If no value exists with the given name |
TypeError
|
If value type doesn't match the expected type |
Example
Source code in src/data_handlers/values.py
NamedValueList ¶
Bases: NamedObjectList
An ordered list container for managing NamedValue objects.
NamedValueList maintains an ordered collection of NamedValue objects while providing type safety and convenient access methods. It preserves insertion order while also allowing access by name.
Attributes:
Name | Type | Description |
---|---|---|
_registry_category |
str
|
Category identifier for object registration |
objects |
List[SerializeAsAny[InstanceOf[NamedValue]]]
|
The list of stored values |
Example
__getitem__ ¶
__getitem__(idx: int) -> NamedValue
Get a named value by its index in the list.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
idx
|
int
|
Index of the named value to retrieve |
required |
Returns:
Name | Type | Description |
---|---|---|
NamedValue |
NamedValue
|
The named value at the specified index |
Raises:
Type | Description |
---|---|
IndexError
|
If the index is out of range |
Example
Source code in src/data_handlers/values.py
append ¶
append(value: NamedValue) -> Self
Append a named value to the end of the list.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
value
|
NamedValue
|
Named value to append |
required |
Returns:
Name | Type | Description |
---|---|---|
Self |
Self
|
The list instance for method chaining |
Example
Source code in src/data_handlers/values.py
extend ¶
extend(values: Iterable[NamedValue]) -> Self
Extend the list with multiple named values.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
values
|
Iterable[NamedValue]
|
Collection of named values to add |
required |
Returns:
Name | Type | Description |
---|---|---|
Self |
Self
|
The list instance for method chaining |
Example
Source code in src/data_handlers/values.py
get_value ¶
get_value(name: str) -> NamedValue
Get a registered named value by name.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
name
|
str
|
Name of the value to retrieve |
required |
Returns:
Name | Type | Description |
---|---|---|
NamedValue |
NamedValue
|
The requested named value |
Raises:
Type | Description |
---|---|
KeyError
|
If no value exists with the given name |
Example
Source code in src/data_handlers/values.py
get_value_by_type ¶
get_value_by_type(value_type: Type) -> Iterable[NamedValue]
Get all values whose stored value is of a specific type.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
value_type
|
Type
|
Type to filter values by |
required |
Returns:
Type | Description |
---|---|
Iterable[NamedValue]
|
Iterable[NamedValue]: Values whose stored value matches the specified type |
Example
Source code in src/data_handlers/values.py
get_values ¶
get_values() -> Iterable[NamedValue]
Get all registered named values.
Returns:
Type | Description |
---|---|
Iterable[NamedValue]
|
Iterable[NamedValue]: Iterator over all stored named values |
Example
Source code in src/data_handlers/values.py
model_dump ¶
Custom serialization to preserve stored values.
Extends the parent class serialization to ensure proper serialization of all stored named values and their states.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**kwargs
|
Additional serialization options |
{}
|
Returns:
Type | Description |
---|---|
dict[str, Any]
|
dict[str, Any]: Dictionary containing serialized state |
Source code in src/data_handlers/values.py
model_dump_json ¶
model_dump_json(**kwargs) -> str
Custom JSON serialization of the value list.
Serializes the NamedValueList instance and all contained NamedValue objects to a JSON string representation. Preserves the order of values and their complete state.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
**kwargs
|
JSON serialization options such as: - indent: Number of spaces for pretty printing - ensure_ascii: Escape non-ASCII characters - separators: Tuple of (item_sep, key_sep) for custom formatting |
{}
|
Returns:
Name | Type | Description |
---|---|---|
str |
str
|
JSON string representation of the list |
Example
Source code in src/data_handlers/values.py
model_validate
classmethod
¶
model_validate(data: Any) -> NamedValueList
Custom validation to restore stored values.
Reconstructs a NamedValueList instance from serialized data, properly restoring all contained named values and their states.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
data
|
Any
|
Serialized data to deserialize |
required |
Returns:
Name | Type | Description |
---|---|---|
NamedValueList |
NamedValueList
|
New instance with restored values |
Source code in src/data_handlers/values.py
model_validate_json
classmethod
¶
model_validate_json(json_data: str, **kwargs) -> NamedValueList
Custom JSON deserialization to NamedValueList instance.
Reconstructs a NamedValueList instance from a JSON string representation, preserving the order of values and restoring their complete state.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
json_data
|
str
|
JSON string containing serialized list data |
required |
**kwargs
|
Additional validation options for nested objects |
{}
|
Returns:
Name | Type | Description |
---|---|---|
NamedValueList |
NamedValueList
|
New instance with all values restored in order |
Example
Source code in src/data_handlers/values.py
register_value ¶
register_value(value: NamedValue) -> Self
Register a named value to the list.
Similar to append but uses the register_object method internally, which may perform additional validation.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
value
|
NamedValue
|
Named value to register |
required |
Returns:
Name | Type | Description |
---|---|---|
Self |
Self
|
The list instance for method chaining |
Source code in src/data_handlers/values.py
NamedValueState ¶
State enumeration for NamedValue objects.
This enum tracks whether a named value has been set or remains unset. Once set, values are typically frozen unless explicitly forced to change.
Attributes:
Name | Type | Description |
---|---|---|
UNSET |
Indicates no value has been set yet |
|
SET |
Indicates value has been set and is frozen |
__repr__ ¶
__repr__() -> str
Get string representation for debugging.
Returns:
Name | Type | Description |
---|---|---|
str |
str
|
The state value as a string ("unset" or "set") |
NormalDistribution ¶
Bases: RandomVariable[float]
Normal (Gaussian) distribution with mean μ and standard deviation σ.
The normal distribution is a continuous probability distribution that is symmetric about its mean, showing the familiar bell-shaped curve.
Key Properties
- Symmetric about the mean
- ~68% of values lie within 1σ of μ
- ~95% lie within 2σ of μ
- ~99.7% lie within 3σ of μ
Attributes:
Name | Type | Description |
---|---|---|
mu |
float
|
Mean (μ) of the distribution |
sigma |
float
|
Standard deviation (σ) of the distribution |
name |
str
|
Identifier for this distribution instance |
seed |
Optional[int]
|
Random seed for reproducible sampling |
cdf ¶
Evaluate the normal cumulative distribution function.
The CDF is computed using the error function: F(x) = 1/2 * (1 + erf((x-μ)/(σ√2)))
Parameters:
Name | Type | Description | Default |
---|---|---|---|
x
|
ndarray
|
Points at which to evaluate the CDF |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
squeeze |
bool
|
Whether to remove unnecessary dimensions.
Added by RandomVariableMeta. Defaults is |
Returns:
Type | Description |
---|---|
NDArray[Any, float]
|
NDArray[Any,float]: CDF values at the input points |
Source code in src/data_handlers/random_variables.py
pdf ¶
Evaluate the normal probability density function.
The PDF is given by: f(x) = 1/(σ√(2π)) * exp(-(x-μ)²/(2σ²))
Parameters:
Name | Type | Description | Default |
---|---|---|---|
x
|
ndarray
|
Points at which to evaluate the PDF |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
squeeze |
bool
|
Whether to remove unnecessary dimensions.
Added by RandomVariableMeta. Defaults is |
Returns:
Type | Description |
---|---|
NDArray[Any, float]
|
NDArray[Any,float]: PDF values at the input points |
Source code in src/data_handlers/random_variables.py
sample ¶
Generate random samples from the normal distribution.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
size
|
int | tuple[int, ...]
|
Number or shape of samples |
1
|
Other Parameters:
Name | Type | Description |
---|---|---|
squeeze |
bool
|
Whether to remove unnecessary dimensions.
Added by RandomVariableMeta. Defaults is |
Returns:
Type | Description |
---|---|
NDArray[Any, float]
|
NDArray[Any,float]: Array of samples from N(μ, σ) |
Source code in src/data_handlers/random_variables.py
NumericDunders ¶
A mixin class containing numeric dunder methods that can be applied to any class via composition
Attributes:
Name | Type | Description |
---|---|---|
RESERVED_NAME |
str
|
Name of the reserved attribute that holds the value |
get_value
classmethod
¶
Get the value of the instance
Parameters:
Name | Type | Description | Default |
---|---|---|---|
instance
|
Any
|
Instance of the class |
required |
Returns:
Name | Type | Description |
---|---|---|
Any |
Value of the instance stored in the reserved attribute or else returns the instance.
For example, if the reserved attribute is 'value', then it returns |
Source code in src/data_handlers/mixins.py
ObjectRegistry ¶
Generic registry for named object types.
Stores object types for deserialization from JSON files. Types are stored at the class level for consistent access across modules.
Types are stored at the class level for consistent access across modules.
Methods:
Name | Description |
---|---|
register |
Register an object type |
get |
Get an object type by name |
get_all |
Get all registered object types |
get
classmethod
¶
get(category: str, name: str) -> Type[NamedObject]
Get an object type by category and name.
Source code in src/data_handlers/base.py
get_all
classmethod
¶
get_all(category: str) -> list[Type[NamedObject]]
get_registry
classmethod
¶
get_registry(category: str) -> Dict[str, Type[NamedObject]]
Get or create registry for a category.
Source code in src/data_handlers/base.py
register
classmethod
¶
register(category: str, obj_type: Type[NamedObject]) -> None
Register an object type in its category.
Source code in src/data_handlers/base.py
RandomVariable ¶
Bases: NamedObject
, Generic[T]
Base class for random variables.
This class provides a common interface for random variable implementations. Subclasses must implement sample(), pdf(), and cdf() methods. The metaclass ensures these methods support dimension control via the squeeze parameter.
The class is generic over the type of values it produces (T), which must be a subtype of SerializableValue to ensure proper serialization behavior.
Attributes:
Name | Type | Description |
---|---|---|
_registry_category |
str
|
Category name for object registration |
seed |
Optional[int]
|
Random seed for reproducible sampling |
name |
str
|
Identifier for this random variable instance |
Type Variables
T: The type of values produced by this random variable
cdf ¶
Evaluate cumulative distribution function at specified points.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
x
|
ndarray
|
Points at which to evaluate the CDF |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
squeeze |
bool
|
Whether to remove unnecessary dimensions.
Added by RandomVariableMeta. Defaults is |
Returns:
Type | Description |
---|---|
NDArray[Any, T]
|
CDF values at the input points |
Raises:
Type | Description |
---|---|
NotImplementedError
|
Must be implemented by subclasses |
Source code in src/data_handlers/random_variables.py
pdf ¶
Evaluate probability density function at specified points.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
x
|
ndarray
|
Points at which to evaluate the PDF |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
squeeze |
bool
|
Whether to remove unnecessary dimensions.
Added by RandomVariableMeta. Defaults is |
Returns:
Type | Description |
---|---|
NDArray[Any, T]
|
PDF values at the input points |
Raises:
Type | Description |
---|---|
NotImplementedError
|
Must be implemented by subclasses |
Source code in src/data_handlers/random_variables.py
register_to_hash ¶
register_to_hash(
var_hash: RandomVariableHash, size: int = 1, sample: bool = True, squeeze: bool = True
) -> NamedValue[T | NDArray[Any, T]]
Register this random variable to a hash and return sampled values.
This is a convenience method for adding a random variable to a collection and immediately sampling from it.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
var_hash
|
RandomVariableHash
|
Hash object to register to |
required |
size
|
int
|
Number of samples to generate |
1
|
Returns:
Type | Description |
---|---|
NamedValue[T | NDArray[Any, T]]
|
Named value containing samples |
Source code in src/data_handlers/random_variables.py
sample ¶
Generate random samples from the categorical distribution.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
size
|
int
|
Number of samples to generate. Defaults to 1. |
1
|
Other Parameters:
Name | Type | Description |
---|---|---|
squeeze |
bool
|
Whether to remove unnecessary dimensions.
Added by RandomVariableMeta. Defaults is |
Returns:
Type | Description |
---|---|
NDArray[Any, T]
|
Array of samples from the categories |
Raises:
Type | Description |
---|---|
NotImplementedError
|
Must be implemented by subclasses |
Source code in src/data_handlers/random_variables.py
RandomVariableHash ¶
Bases: NamedObjectHash
Collection of random variables.
This class manages a collection of RandomVariable objects, providing methods to register, retrieve and sample from multiple distributions.
Attributes:
Name | Type | Description |
---|---|---|
_registry_category |
str
|
Category name for object registration |
get_variables ¶
get_variables() -> Iterable[RandomVariable]
Get all registered random variables.
Returns:
Type | Description |
---|---|
Iterable[RandomVariable]
|
Iterable[RandomVariable]: Iterator over all registered variables |
register_variable ¶
register_variable(
var: RandomVariable, size: int = 1, sample: bool = True, squeeze: bool = True
) -> NamedValue[SerializableValue | NDArray[Any, SerializableValue]]
Register a random variable and return its samples wrapped in a NamedValue.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
var
|
RandomVariable
|
Random variable to register |
required |
size
|
int
|
Number of samples to generate |
1
|
Returns:
Type | Description |
---|---|
NamedValue[SerializableValue | NDArray[Any, SerializableValue]]
|
NamedValue[SerializableValue|NDArray[Any,SerializableValue]]: Named value containing samples |
Raises:
Type | Description |
---|---|
ValueError
|
If a variable with the same name already exists |
Source code in src/data_handlers/random_variables.py
sample_all ¶
Sample from all registered distributions.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
size
|
int
|
Number of samples to generate per distribution |
1
|
Returns:
Type | Description |
---|---|
dict[str, ndarray]
|
dict[str, np.ndarray]: Dictionary mapping variable names to their samples |
Source code in src/data_handlers/random_variables.py
RandomVariableList ¶
Bases: NamedObjectList
List of random variables.
This class manages an ordered list of RandomVariable objects, providing methods to add, access, and sample from multiple distributions while maintaining their order.
Attributes:
Name | Type | Description |
---|---|---|
_registry_category |
str
|
Category name for object registration |
objects |
List[SerializeAsAny[InstanceOf[RandomVariable]]]
|
List of random variable objects |
__getitem__ ¶
__getitem__(idx: int) -> RandomVariable
Get a random variable by its index in the list.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
idx
|
int
|
Index of the random variable to retrieve |
required |
Returns:
Name | Type | Description |
---|---|---|
RandomVariable |
RandomVariable
|
The random variable at the specified index |
Raises:
Type | Description |
---|---|
IndexError
|
If the index is out of range |
Source code in src/data_handlers/random_variables.py
append ¶
append(variable: RandomVariable) -> Self
Append a random variable to the end of the list.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
variable
|
RandomVariable
|
Random variable to append |
required |
Returns:
Name | Type | Description |
---|---|---|
Self |
Self
|
The RandomVariableList instance for method chaining |
Source code in src/data_handlers/random_variables.py
extend ¶
extend(variables: Iterable[RandomVariable]) -> Self
Extend the list with multiple random variables.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
variables
|
Iterable[RandomVariable]
|
Collection of random variables to add |
required |
Returns:
Name | Type | Description |
---|---|---|
Self |
Self
|
The RandomVariableList instance for method chaining |
Source code in src/data_handlers/random_variables.py
get_variable ¶
get_variable(name: str) -> RandomVariable
Get a registered random variable by name.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
name
|
str
|
Name of the random variable |
required |
Returns:
Name | Type | Description |
---|---|---|
RandomVariable |
RandomVariable
|
The requested random variable |
Raises:
Type | Description |
---|---|
KeyError
|
If no variable exists with the given name |
Source code in src/data_handlers/random_variables.py
get_variables ¶
get_variables() -> Iterable[RandomVariable]
Get all registered random variables.
Returns:
Type | Description |
---|---|
Iterable[RandomVariable]
|
Iterable[RandomVariable]: Iterator over all registered variables |
register_variable ¶
register_variable(var: RandomVariable) -> Self
Register a random variable to the collection.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
var
|
RandomVariable
|
Random variable to register |
required |
Returns:
Name | Type | Description |
---|---|---|
Self |
Self
|
The RandomVariableList instance |
Source code in src/data_handlers/random_variables.py
sample_all ¶
Sample from all variables in the list.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
size
|
int
|
Number of samples to generate per variable |
1
|
Returns:
Type | Description |
---|---|
dict[str, ndarray]
|
dict[str, np.ndarray]: Dictionary mapping variable names to their samples |
Source code in src/data_handlers/random_variables.py
UniformDistribution ¶
Bases: RandomVariable[float]
Continuous uniform distribution over an interval [low, high].
The uniform distribution describes equal probability over a continuous interval. Any value between low and high is equally likely to be drawn.
Key Properties
- Mean = (low + high)/2
- Variance = (high - low)²/12
- Constant PDF over [low, high]
- Linear CDF over [low, high]
Attributes:
Name | Type | Description |
---|---|---|
low |
float
|
Lower bound of the interval |
high |
float
|
Upper bound of the interval |
name |
str
|
Identifier for this distribution instance |
seed |
Optional[int]
|
Random seed for reproducible sampling |
cdf ¶
Evaluate the uniform cumulative distribution function.
The CDF is: - 0 for x < low - (x-low)/(high-low) for low ≤ x ≤ high - 1 for x > high
Parameters:
Name | Type | Description | Default |
---|---|---|---|
x
|
ndarray
|
Points at which to evaluate the CDF |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
squeeze |
bool
|
Whether to remove unnecessary dimensions.
Added by RandomVariableMeta. Defaults is |
Returns:
Type | Description |
---|---|
NDArray[Any, float]
|
NDArray[Any,float]: CDF values at the input points |
Source code in src/data_handlers/random_variables.py
pdf ¶
Evaluate the uniform probability density function.
The PDF is 1/(high-low) for x in [low,high] and 0 elsewhere.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
x
|
ndarray
|
Points at which to evaluate the PDF |
required |
Other Parameters:
Name | Type | Description |
---|---|---|
squeeze |
bool
|
Whether to remove unnecessary dimensions.
Added by RandomVariableMeta. Defaults is |
Returns:
Type | Description |
---|---|
NDArray[Any, float]
|
NDArray[Any,float]: PDF values at the input points |
Source code in src/data_handlers/random_variables.py
sample ¶
Generate random samples from the uniform distribution.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
size
|
int
|
Number of samples to generate |
1
|
Other Parameters:
Name | Type | Description |
---|---|---|
squeeze |
bool
|
Whether to remove unnecessary dimensions.
Added by RandomVariableMeta. Defaults is |
Returns:
Type | Description |
---|---|
NDArray[Any, float]
|
NDArray[Any,float]: Array of samples from U(low,high) |
Source code in src/data_handlers/random_variables.py
validate_bounds ¶
validate_bounds() -> UniformDistribution
Validate that high > low.