Skip to main content

Summer is a compartmental disease modelling framework, written in Python. It provides a high-level API to build and run models.

Project description

summer2: compartmental disease modelling in Python

Automated Tests

summer2 is a Python-based framework for the creation and execution of compartmental (or "state-based") epidemiological models of infectious disease transmission.

It provides a range of structures for easily implementing compartmental models, including structure for some of the most common features added to basic compartmental frameworks, including:

  • A variety of inter-compartmental flows (infections, transitions, births, deaths, imports)
  • Force of infection multipliers (frequency, density)
  • Post-processing of compartment sizes into derived outputs
  • Stratification of compartments, including:
    • Adjustments to flow rates based on strata
    • Adjustments to infectiousness based on strata
    • Heterogeneous mixing between strata
    • Multiple disease strains

Some helpful links to learn more:

Installation and Quickstart

This project requires at least Python 3.8

Set up and activate an appropriate virtual environment, then install the summerepi2 package from PyPI

pip install summerepi2

Important note for Windows users: summerepi2 relies on the Jax framework for fast retargetable computing. This is automatically installed under Linux, OSX, and WSL environments. It is strongly recommended that you use WSL, but in instances were you are unable to do so, an unofficial build of jax can be installed by running the following command

pip install jax[cpu]==0.3.24 -f https://whls.blob.core.windows.net/unstable/index.html

Then you can now use the library to build and run models. See here for some code examples.

Optional (recommended) extras

Summer has advanced interactive plotting tools built in - but they are greatly improved with the addition of the pygraphviz library.

If you are using conda, the simplest method of installation is as follows:

conda install --channel conda-forge pygraphviz

For other install methods, see https://pygraphviz.github.io/documentation/stable/install.html

Development

Poetry is used for packaging and dependency management.

Initial project setup is documented here and should work for Windows or Ubuntu, maybe for MacOS.

Some common things to do as a developer working on this codebase:

# Activate summer conda environment prior to doing other stuff (see setup docs)
conda activate summer

# Install latest requirements
poetry install

# Publish to PyPI - use your PyPI credentials
poetry publish --build

# Add a new package
poetry add

# Run tests
pytest -vv

# Format Python code
black .
isort . --profile black

Releases

Releases are numbered using Semantic Versioning

  • 1.0.0/1:
    • Initial release
  • 1.2.1
    • Dropped support for Python 3.7. Variety of bugfixes and expanded features, see documentation
  • 1.2.2
    • Added capture utils
    • Removed inner jit in model building to improve debugging
  • 1.2.4
    • CompartmentValues not functioning previously; include more comprehensive check in graph split
  • 1.2.5
    • Previous issue was not resolved correctly; bugfix-bugfix release
  • 1.2.6
    • Make full (comparment) outputs optional for jax runners
  • 1.2.8
    • Improve time varying functions (allow GraphObjects in x values)
  • 1.2.9
    • Derived output functions matching pandas.Series functionality (rolling, diff)
  • 1.3.0
    • Support initializing whole population via GraphObject

Release process

To do a release:

  • Commit any code changes and push them to GitHub
  • Choose a new release number accoridng to Semantic Versioning
  • Add a release note above
  • Edit the version key in pyproject.toml to reflect the release number
  • Publish the package to PyPI using Poetry, you will need a PyPI login and access to the project
  • Commit the release changes and push them to GitHub (Use a commit message like "Release 1.1.0")
  • Update requirements.txt in Autumn to use the new version of Summer
poetry build
poetry publish

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

summerepi2-1.3.0.tar.gz (66.4 kB view details)

Uploaded Source

Built Distribution

summerepi2-1.3.0-py3-none-any.whl (79.3 kB view details)

Uploaded Python 3

File details

Details for the file summerepi2-1.3.0.tar.gz.

File metadata

  • Download URL: summerepi2-1.3.0.tar.gz
  • Upload date:
  • Size: 66.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.0 CPython/3.10.10 Windows/10

File hashes

Hashes for summerepi2-1.3.0.tar.gz
Algorithm Hash digest
SHA256 b7464e3a9a06f165656589bf47712562092154ce42c989768256a90f796a42d8
MD5 e51c1879fd7a64bff620f04f3f814544
BLAKE2b-256 d64018060e3c02327ca0f36aff6cc14670f2228706af1a3eb00211ead70a8fe5

See more details on using hashes here.

File details

Details for the file summerepi2-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: summerepi2-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 79.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.0 CPython/3.10.10 Windows/10

File hashes

Hashes for summerepi2-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5c734004df384ab989fa75973a0140e6ab73edd04522e3e4431130c1a182b829
MD5 315780e0810ebbb855b2d8987a1965c0
BLAKE2b-256 ae96bd5f9875a1d40e14aa5f0da879ecc6fe47a31b186a1c23f68d17fadaa19b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page