Skip to content

laser.measles.compartmental.model

laser.measles.compartmental.model

Compartmental SEIR model for measles transmission with daily timesteps.

laser.measles.compartmental.model.CompartmentalModel(scenario, params, name='compartmental')

Bases: BaseLaserModel

Population-level SEIR model for measles transmission with daily timesteps.

Tracks compartment counts (S, E, I, R) per patch using deterministic difference equations. This model is the fastest option for calibrating transmission parameters to surveillance data because it avoids stochastic noise. For individual-level tracking, see ABMModel; for 14-day timesteps, see BiweeklyModel.

This is the first object created in the build model stage of the researcher workflow. After construction, attach components with add_component or by setting the components property, then call model.run().

Parameters:

Name Type Description Default
scenario DataFrame | BaseCompartmentalScenario

Metapopulation patch data. Required columns: id (str), pop (int), lat (Float64), lon (Float64), mcv1 (Float64). A plain polars.DataFrame is automatically wrapped.

required
params CompartmentalParams

Simulation parameters including num_ticks, seed, and start_time.

required
name str

Display name for log messages. Defaults to "compartmental".

'compartmental'

Example:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
```python
import laser.measles as lm
from laser.measles.compartmental.components import (
    InfectionSeedingProcess,
    InfectionProcess,
)

params = lm.CompartmentalParams(num_ticks=365, seed=42, start_time="2000-01")
model = lm.CompartmentalModel(scenario=df, params=params)
model.components = [InfectionSeedingProcess, InfectionProcess]
model.run()
```

laser.measles.compartmental.model.CompartmentalModel.expose(indices, num_exposed)

Exposes the given nodes with the given number of exposed individuals. Moves individuals from Susceptible to Exposed compartment.

Parameters:

Name Type Description Default
indices int | ndarray

The indices of the nodes to expose.

required
num_exposed int | ndarray

The number of exposed individuals.

required

laser.measles.compartmental.model.CompartmentalModel.from_snapshot(path, params, components=None, verbose=True) classmethod

Load a CompartmentalModel from an HDF5 snapshot.

Convenience wrapper around load_snapshot. Use this to resume a simulation from a checkpoint saved with save_snapshot.

Parameters:

Name Type Description Default
path str | Path

Path to the HDF5 file written by save_snapshot.

required
params CompartmentalParams

CompartmentalParams for the resumed segment.

required
components list | None

Ordered list of component classes — same as the original model, minus InfectionSeedingProcess.

None
verbose bool

Print a loading summary.

True

Returns:

Type Description
CompartmentalModel

A configured CompartmentalModel ready for model.run().

Example:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
```python
import laser.measles as lm
from laser.measles.compartmental.components import InfectionProcess

params2 = lm.CompartmentalParams(num_ticks=365, seed=42, start_time="2001-01")
model2 = lm.CompartmentalModel.from_snapshot(
    "checkpoint.h5", params2, components=[InfectionProcess]
)
model2.run()
```

laser.measles.compartmental.model.CompartmentalModel.infect(indices, num_infected)

Infects the given nodes with the given number of infected individuals. Moves individuals from Exposed to Infected compartment.

Parameters:

Name Type Description Default
indices int | ndarray

The indices of the nodes to infect.

required
num_infected int | ndarray

The number of infected individuals.

required

laser.measles.compartmental.model.CompartmentalModel.recover(indices, num_recovered)

Recovers the given nodes with the given number of recovered individuals. Moves individuals from Infected to Recovered compartment.

Parameters:

Name Type Description Default
indices int | ndarray

The indices of the nodes to recover.

required
num_recovered int | ndarray

The number of recovered individuals.

required