Skip to content

laser.measles.components.utils

laser.measles.components.utils

Component utilities for the laser-measles package.

This module provides utilities for creating and managing components in the laser-measles package. The main feature is a decorator that makes it easier to create components with parameters.

laser.measles.components.utils.component(cls=None, **default_params)

Decorator that adds a create factory to a component class.

Use this at set parameters time to bake default parameter values into a component class. The decorated class gains a create(model, **overrides) static method that merges defaults with caller-supplied overrides.

Can be applied with or without arguments:

Parameters:

Name Type Description Default
cls type[T] | None

The component class to decorate. When None, the decorator returns a wrapper that accepts keyword defaults.

None
**default_params Any

Default parameter values passed through to the component constructor.

{}

Returns:

Type Description
Callable[[type[T]], type[T]] | type[T]

The decorated class (with create attached), or a decorator function if cls is None.

Examples

Basic usage:

@component ... class MyComponent(BaseComponent): ... def init(self, model, param1=1, param2=2): ... super().init(model) ... self.param1 = param1 ... self.param2 = param2

With default parameters:

@component(param1=10, param2=20) ... class MyComponent(BaseComponent): ... def init(self, model, param1=1, param2=2): ... super().init(model) ... self.param1 = param1 ... self.param2 = param2

Using the factory:

Create with default parameters

MyComponent.create(model)

Create with custom parameters

MyComponent.create(model, param1=100, param2=200)

laser.measles.components.utils.create_component(component_class, params=None)

Helper function to create a component instance with parameters.

This function creates a callable object that will instantiate the component with the given parameters when called by the model.

Parameters

component_class : Type[BaseComponent] The component class to instantiate params : BaseModel, optional Parameter object to pass to the component constructor as params=....

Returns

Callable[[Any], BaseComponent] A single-argument factory: when called by the model with the model instance, it returns component_class(model, params=params).

Example:

1
2
3
4
5
6
7
8
```python
from laser.measles import create_component
from laser.measles.compartmental.components import InfectionProcess, InfectionParams

model.components = [
    create_component(InfectionProcess, InfectionParams(beta=0.8)),
]
```