MetaWards

MetaWards: A flexible metapopulation framework for modelling disease spread - Published in JOSS (2022)

https://github.com/metawards/metawards

Science Score: 100.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 17 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org, zenodo.org
  • Committers with academic emails
    4 of 9 committers (44.4%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

coronavirus covid covid-19 epidemic-model epidemic-simulations epidemics epidemiology epidemiology-analysis sir-model

Keywords from Contributors

computational-biology computational-chemistry molecular-dynamics biomolecular-simulation ccpbiosim computational-physics interoperability reproducibility mesh
Last synced: 4 months ago · JSON representation ·

Repository

MetaWards disease metapopulation analysis and modelling software. Professional geographical SIR model with a flexible plugin architecture to support complex scenario modelling

Basic Info
  • Host: GitHub
  • Owner: metawards
  • License: gpl-3.0
  • Language: Python
  • Default Branch: devel
  • Homepage: https://metawards.org
  • Size: 160 MB
Statistics
  • Stars: 13
  • Watchers: 2
  • Forks: 6
  • Open Issues: 1
  • Releases: 2
Fork of chryswoods/MetaWards
Topics
coronavirus covid covid-19 epidemic-model epidemic-simulations epidemics epidemiology epidemiology-analysis sir-model
Created almost 6 years ago · Last pushed over 1 year ago
Metadata Files
Readme License Code of conduct Citation Security

README.md

MetaWards

Build status PyPI version Downloads DOI DOI

Scientific Background

MetaWards implements a stochastic metapopulation model of disease transmission. It can scale from modelling local transmission up to full national- or international-scale metapopulation models.

Please follow the quick start guide to see how to quickly get up and running using MetaWards to model your own custom disease or metapopulation model.

It is was originally developed to support modelling of disease transmission in Great Britain. The complete model description and the original C code are described here;

  • "The role of routine versus random movements on the spread of disease in Great Britain", Leon Danon, Thomas House, Matt J. Keeling, Epidemics, December 2009, 1 (4), 250-258; DOI:10.1016/j.epidem.2009.11.002

  • "Individual identity and movement networks for disease metapopulations", Matt J. Keeling, Leon Danon, Matthew C. Vernon, Thomas A. House Proceedings of the National Academy of Sciences, May 2010, 107 (19) 8866-8870; DOI:10.1073/pnas.1000416107

In this model, the population is divided into electoral wards. Disease transmission between wards occurs via the daily movement of individuals. For each ward, individuals contribute to the force of infection (FOI) in their home ward during the night, and their work ward during the day.

This model was recently adapted to model CoVID-19 transmission in England and Wales, with result of the original C code published here;

  • "A spatial model of CoVID-19 transmission in England and Wales: early spread and peak timing", Leon Danon, Ellen Brooks-Pollock, Mick Bailey, Matt J Keeling, Philosophical Transactions of the Royal Society B, 376(1829); DOI:10.1098/rstb.2020.0272

This Python code is a port which can identically reproduce the outputs from the original C code as used in that work. This Python code has been optimised and parallelised, with additional testing added to ensure that development and scale-up of MetaWards has been robustly and efficiently conducted.

Program Info

The package makes heavy use of cython which is used with OpenMP to compile bottleneck parts of the code to parallelised C. This enables this Python port to run at approximately the same speed as the original C program on one core, and to run several times faster across multiple cores.

The program compiles on any system that has a working C compiler that supports OpenMP, and a working Python >= 3.7. This include X86-64 and ARM64 servers.

The software supports running over a cluster using MPI (via mpi4py) or via simple networking (via scoop).

Full instructions on how to use the program, plus example job submission scripts can be found on the project website.

Installation

Full installation instructions are here.

Binary packages are uploaded to pypi for Windows, OS X and Linux (manylinux). The easiest way to install is to type in the console:

pip install metawards

(this assumes that you have pip installed and are using Python 3.7 or above - if this doesn't work please follow the full installation instructions).

Alternatively, you can also install from within R (or RStudio) by typing;

library(devtools) install_github("metawards/rpkg") metawards::py_install_metawards()

But, as you are here, I guess you want to install the latest code from GitHub ;-)

To do that, first clone and install the requirements;

git clone https://github.com/metawards/MetaWards cd MetaWards pip install -r requirements.txt pip install -r requirements-dev.txt

Next, you can make using the standard Python setup.py script route.

CYTHONIZE=1 python setup.py build CYTHONIZE=1 python setup.py install

Alternatively, you can also use the makefile, e.g.

make make install

(assuming that python is version 3.7 or above)

You can run tests using pytest, e.g.

METAWARDSDATA="/path/to/MetaWardsData" pytest tests

or you can type

make test

You can generate the docs using

make doc

Running

You can either load and use the Python classes directly, or you can run the metawards front-end command line program that is automatically installed.

metawards --help

will print out all of the help for the program.

Running an ensemble

This program supports parallel running of an ensemble of jobs using multiprocessing for single-node jobs, and mpi4py or scoop for multi-node cluster jobs.

Note that mpi4py and scoop are not installed by default, so you will need to install them before you run on a cluster (e.g. pip install mpi4py or pip install scoop).

Full instructions for running on a cluster are here

History

This is a Python port of the MetaWards package originally written by Leon Danon. This port has been performed with Leon's support by the Bristol Research Software Engineering Group.

Owner

  • Name: MetaWards
  • Login: metawards
  • Kind: organization

Organisaton for all repositories related to the MetaWards project

JOSS Publication

MetaWards: A flexible metapopulation framework for modelling disease spread
Published
February 14, 2022
Volume 7, Issue 70, Page 3914
Authors
Christopher Woods ORCID
Research Software Engineering, Advanced Computing Research Centre, University of Bristol, UK
Lester Hedges ORCID
Research Software Engineering, Advanced Computing Research Centre, University of Bristol, UK
Christopher Edsall ORCID
Research Software Engineering, Research Computing Services, University of Cambridge, UK
Ellen Brooks-Pollock ORCID
Department of Engineering Mathematics, University of Bristol, UK
Christopher Parton-Fenton ORCID
College of Engineering, Mathematics and Physical Sciences, University of Exeter, UK
Trevelyan J. McKinley ORCID
College of Medicine and Health, University of Exeter, UK
Matt J. Keeling ORCID
Zeeman Institute (SBIDER), University of Warwick, Coventry, UK
Leon Danon ORCID
Department of Engineering Mathematics, University of Bristol, UK
Editor
Mark A. Jensen ORCID
Tags
epidemiology epidemics sir-model compartmental transmission model covid python cython

Citation (CITATION.cff)

# YAML 1.2
---
authors: 
  -
    family-names: Woods
    given-names: Christopher
    orcid: "https://orcid.org/0000-0001-6563-9903"
  -
    family-names: Hedges
    given-names: Lester
    orcid: "https://orcid.org/0000-0002-5624-0500"
  -
    family-names: Edsall
    given-names: Christopher
    orcid: "https://orcid.org/0000-0001-6863-2184"
  -
    family-names: "Brooks-Pollock"
    given-names: Ellen
    orcid: "https://orcid.org/0000-0002-5984-4932"
  -
    family-names: "Parton-Fenton"
    given-names: Christopher
    orcid: "https://orcid.org/0000-0003-0052-8430"
  -
    family-names: McKinley
    given-names: "Trevelyan J"
    orcid: "https://orcid.org/0000-0002-9485-3236"
  -
    family-names: Keeling
    given-names: "Matt J"
    orcid: "https://orcid.org/0000-0003-4639-4765"
  -
    family-names: Danon
    given-names: Leon
    orcid: "https://orcid.org/0000-0002-7076-1871"
cff-version: "1.1.0"
message: "If you use this software, please cite it as described here."
title: MetaWards
version: "1.6.2"
...

GitHub Events

Total
Last Year

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 808
  • Total Committers: 9
  • Avg Commits per committer: 89.778
  • Development Distribution Score (DDS): 0.116
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
chryswoods c****s@g****m 714
Leon k****a@g****m 31
Christopher Woods C****s@b****k 27
Lester Hedges l****s@g****m 25
Chris Edsall c****l@b****k 3
dependabot[bot] 4****] 3
ellen-is e****1@b****k 2
Christopher Fenton c****k@h****m 2
TJ McKinley t****y@e****k 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 25
  • Total pull requests: 88
  • Average time to close issues: 10 days
  • Average time to close pull requests: 9 days
  • Total issue authors: 4
  • Total pull request authors: 3
  • Average comments per issue: 4.36
  • Average comments per pull request: 0.64
  • Merged pull requests: 35
  • Bot issues: 0
  • Bot pull requests: 56
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • chryswoods (14)
  • fentonscode (8)
  • mlt39 (2)
  • wenchaohee (1)
Pull Request Authors
  • dependabot[bot] (60)
  • chryswoods (31)
  • tjmckinley (1)
Top Labels
Issue Labels
feature-branch (10) bug (9) enhancement (3) documentation (2)
Pull Request Labels
dependencies (60)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 197 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 1
  • Total versions: 29
  • Total maintainers: 1
pypi.org: metawards

MetaWards disease metapopulation modelling

  • Versions: 29
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 197 Last month
Rankings
Dependent packages count: 10.1%
Downloads: 12.3%
Forks count: 13.3%
Average: 14.6%
Stargazers count: 15.6%
Dependent repos count: 21.6%
Maintainers (1)
Last synced: 4 months ago

Dependencies

requirements-dev.txt pypi
  • cython >=0.29.13
  • flake8 >=3.7
  • numpy >=1.17.2
  • pytest >=5.1
  • pytest-cov >=2.2.0
  • sphinx ==4.5.0
  • sphinx_issues *
  • sphinx_rtd_theme *
  • sphinxcontrib-programoutput *
requirements-optional.txt pypi
  • Pillow >=6.2.1
  • matplotlib >=3.1.0
  • pandas >=0.25.0
  • pygifsicle >=1.0.0
requirements.txt pypi
  • configargparse >=1.2.0
  • dateparser >=0.7.0
  • lazy_import >=0.2.2
  • rich >=4.2.0
  • yaspin >=0.18.0
.github/workflows/main.yaml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
  • actions/upload-artifact v2 composite
  • ad-m/github-push-action v0.6.0 composite
setup.py pypi