Metadata-Version: 2.4
Name: laser.measles
Version: 0.13.1
Summary: Spatial models of measles implemented with the LASER toolkit.
Keywords: measles,spatial,modeling,laser
Author: Christopher Lorton, Jonathan Bloedow, Katherine Rosenfeld, Kevin McCarthy
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Operating System :: Unix
Classifier: Operating System :: POSIX
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: MacOS
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Utilities
Requires-Dist: laser-core>=1.0.1
Requires-Dist: diskcache>=5.0
Requires-Dist: appdirs>=1.4.4
Requires-Dist: pydantic>=2.12.5
Requires-Dist: pycountry>=26.2.16
Requires-Dist: requests>=2.28
Requires-Dist: alive-progress>=3.0
Requires-Dist: polars>=1.39.3
Requires-Dist: rastertoolkit>=0.3.11
Requires-Dist: typer>=0.9
Requires-Dist: patito>=0.8.6
Requires-Dist: pyvd>=1.0
Requires-Dist: ruff ; extra == 'dev'
Requires-Dist: pytest ; extra == 'dev'
Requires-Dist: pytest-order>=1.3.0 ; extra == 'dev'
Requires-Dist: pyright ; extra == 'dev'
Requires-Dist: mypy ; extra == 'dev'
Requires-Dist: bump-my-version ; extra == 'dev'
Requires-Dist: mkdocs-material ; extra == 'docs'
Requires-Dist: mkdocs-include-markdown-plugin ; extra == 'docs'
Requires-Dist: mkdocs-autorefs ; extra == 'docs'
Requires-Dist: mkdocs-api-autonav ; extra == 'docs'
Requires-Dist: mkdocs-gen-files ; extra == 'docs'
Requires-Dist: mkdocs-literate-nav ; extra == 'docs'
Requires-Dist: python-markdown-math ; extra == 'docs'
Requires-Dist: pymdown-extensions ; extra == 'docs'
Requires-Dist: mkdocs-jupyter ; extra == 'docs'
Requires-Dist: mkdocstrings ; extra == 'docs'
Requires-Dist: mkdocstrings-python ; extra == 'docs'
Requires-Dist: mkdocs-table-reader-plugin ; extra == 'docs'
Requires-Dist: mkdocs-exclude ; extra == 'docs'
Requires-Dist: markdownify ; extra == 'docs'
Requires-Dist: jupytext>=1.17.2 ; extra == 'examples'
Requires-Dist: notebook>=7.5.5 ; extra == 'examples'
Requires-Dist: seaborn>=0.13.2 ; extra == 'examples'
Requires-Dist: ipykernel>=7.2.0 ; extra == 'examples'
Requires-Dist: optuna>=4.8.0 ; extra == 'examples'
Requires-Dist: plotly>=6.2.0 ; extra == 'examples'
Requires-Dist: ruff ; extra == 'full'
Requires-Dist: pytest ; extra == 'full'
Requires-Dist: pytest-order>=1.3.0 ; extra == 'full'
Requires-Dist: pyright ; extra == 'full'
Requires-Dist: mypy ; extra == 'full'
Requires-Dist: bump-my-version ; extra == 'full'
Requires-Dist: mkdocs-material ; extra == 'full'
Requires-Dist: mkdocs-include-markdown-plugin ; extra == 'full'
Requires-Dist: mkdocs-autorefs ; extra == 'full'
Requires-Dist: mkdocs-api-autonav ; extra == 'full'
Requires-Dist: mkdocs-gen-files ; extra == 'full'
Requires-Dist: mkdocs-literate-nav ; extra == 'full'
Requires-Dist: python-markdown-math ; extra == 'full'
Requires-Dist: pymdown-extensions ; extra == 'full'
Requires-Dist: mkdocs-jupyter ; extra == 'full'
Requires-Dist: mkdocstrings ; extra == 'full'
Requires-Dist: mkdocstrings-python ; extra == 'full'
Requires-Dist: mkdocs-table-reader-plugin ; extra == 'full'
Requires-Dist: mkdocs-exclude ; extra == 'full'
Requires-Dist: jupytext>=1.17.2 ; extra == 'full'
Requires-Dist: notebook>=7.5.5 ; extra == 'full'
Requires-Dist: seaborn>=0.13.2 ; extra == 'full'
Requires-Dist: ipykernel>=7.2.0 ; extra == 'full'
Requires-Dist: optuna>=4.8.0 ; extra == 'full'
Requires-Dist: plotly>=6.2.0 ; extra == 'full'
Maintainer: Christopher Lorton
Requires-Python: >=3.10
Project-URL: Homepage, https://example.com
Project-URL: Documentation, https://laser.idmod.org/laser-measles/
Project-URL: Repository, https://github.com/laser-base/laser-measles.git
Project-URL: Issues, https://github.com/laser-base/laser-measles/issues
Project-URL: Changelog, https://github.com/laser-base/laser-measles/blob/master/CHANGELOG.md
Provides-Extra: dev
Provides-Extra: docs
Provides-Extra: examples
Provides-Extra: full
Description-Content-Type: text/markdown

# laser-measles

[![PyPI Package latest release](https://img.shields.io/pypi/v/laser-measles.svg)](https://pypi.org/project/laser-measles/)
[![MIT License](https://img.shields.io/github/license/laser-base/laser-measles.svg)](https://github.com/laser-base/laser-measles/blob/main/LICENSE)
[![Documentation Status](https://github.com/laser-base/laser-measles/actions/workflows/github-actions.yml/badge.svg)](https://laser.idmod.org/laser-measles/)

laser-measles is a spatial epidemiological modeling toolkit that helps researchers and public health teams simulate measles transmission, evaluate vaccination strategies, and plan outbreak responses. It translates surveillance data and demographic information into projections that inform immunization planning and resource allocation — with a focus on settings where measles remains a leading cause of vaccine-preventable death.

Developed by the [Institute for Disease Modeling](https://idmod.org) (IDM) at the Bill & Melinda Gates Foundation, laser-measles is built on the open-source [LASER framework](https://github.com/laser-base).

## Installation

```bash
pip install laser-measles
```

**Recommended stable release: version 0.13** — the current validated and supported version:

```bash
pip install "laser-measles>=0.13,<1.0"
```

For development installation:

```bash
pip install -e ".[dev]"
```

## Getting started

The recommended first example is the [Quick Start Tutorial](https://laser.idmod.org/laser-measles/tutorials/tut_quickstart_hello_world/).

## Model types

laser-measles provides three modeling approaches:

- **ABM (Agent-Based Model)**: Individual-level simulation with stochastic agents and daily timesteps. Best for detailed heterogeneity and contact structure.
- **Biweekly Compartmental Model**: Population-level SIR dynamics with 2-week timesteps. Recommended for scenario building and policy analysis.
- **Compartmental Model**: Population-level SEIR dynamics with daily timesteps. Recommended for parameter estimation and outbreak modeling.

```python
from laser.measles.abm import ABMModel, ABMParams

params = ABMParams(num_ticks=365, seed=42, start_time="2000-01")
model = ABMModel(scenario, params)
model.run()
```

## Documentation

Full documentation is available at [laser.idmod.org/laser-measles](https://laser.idmod.org/laser-measles/).

## Contributing

Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, testing, and submission guidelines.

Bug reports and feature requests can be filed on the [GitHub issue tracker](https://github.com/laser-base/laser-measles/issues).

## License

MIT License — Copyright (c) 2026, Gates Foundation
