Skip to main content

MetaWards disease metapopulation modelling

Project description

MetaWards

Build status PyPI version

For the most accurate and up to date information please visit the project website.

This is a Python port of the MetaWards package originally written by Leon Danon. The port is kept in sync with the original C code, with checks in place to ensure that the two codes give identical results. This improves the robustness of both codes, as it minimises the footprint to bugs that can evade both C and Python.

The aim of this port is to make it easier for others to contribute to the program, to improve robustness by adding in unit and integration test, and to also open up scope for further optimisation and parallelisation.

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.

Data

The data and input parameters needed to use this package are stored in the MetaWardsData repository. Please make sure that you clone this repository to your computer and supply the full path to that repository to the program when it runs. There are three ways to do this;

  1. Set the METAWARDSDATA environment variable to point to this directory, e.g. export METAWARDSDATA=$HOME/GitHub/MetaWards

  2. Pass the repository variable to the input data classes Disease, InputFiles and Parameters

  3. Or simply make sure you clone into the directory $HOME/GitHub/MetaWardsData as this is the default path.

References

These are the references behind the original C code are;

  • "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

  • "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 medRxiv 2020.02.12.20022566; doi: 10.1101/2020.02.12.20022566

Dependencies

The code requires Python 3.7 or above, and requires no other dependencies to install. For development you will need cython to build the code, plus pytest for running the tests.

Installation

Full installation instructions are here.

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

To do that, type;

git clone https://github.com/metawards/MetaWards
cd MetaWards
pip install -r requirements-dev.txt
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

You can generate the docs using

make docs

Running

Full usage instructions are here

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. For example;

metawards --input tests/data/ncovparams.csv --seed 15324 --nsteps 30 --nthreads 1

This will duplicate the run of the MetaWards C program that is bundled in this repository that was run using;

./original/metawards 15324 tests/data/ncovparams.csv 0 1.0

The original C code, command line and expected output are in the original directory that is bundled in this repo.

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.

Full instructions for running on a cluster are here

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

metawards-0.11.1.tar.gz (1.9 MB view details)

Uploaded Source

Built Distributions

metawards-0.11.1-cp38-cp38-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.8 Windows x86-64

metawards-0.11.1-cp38-cp38-manylinux1_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.8

metawards-0.11.1-cp38-cp38-macosx_10_14_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.8 macOS 10.14+ x86-64

metawards-0.11.1-cp37-cp37m-manylinux1_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.7m

metawards-0.11.1-cp37-cp37m-macosx_10_14_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.7m macOS 10.14+ x86-64

File details

Details for the file metawards-0.11.1.tar.gz.

File metadata

  • Download URL: metawards-0.11.1.tar.gz
  • Upload date:
  • Size: 1.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.6

File hashes

Hashes for metawards-0.11.1.tar.gz
Algorithm Hash digest
SHA256 61119f3118696cfca7d5c9b9e7d2ff19ba06fbd8948ac5c3db06252d4fde69ca
MD5 396b80c69fc39b88ea95d18343c9019b
BLAKE2b-256 2e1673fa0a11a7efb96e7796ad79b6de09fdcfc448843a4a555f63e1465a4564

See more details on using hashes here.

File details

Details for the file metawards-0.11.1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: metawards-0.11.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.6

File hashes

Hashes for metawards-0.11.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 cd23a239a9bebbd7155498dab68dbee35cc7ed5c34c814deca839bbc1e5c8300
MD5 a9afbc2ff9043467fcfc33d87433f6c5
BLAKE2b-256 785faa4d5f7d147b2b70885571b951e07079f0cf5d727244adf3b9871943a1b4

See more details on using hashes here.

File details

Details for the file metawards-0.11.1-cp38-cp38-manylinux1_x86_64.whl.

File metadata

  • Download URL: metawards-0.11.1-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 5.2 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.6

File hashes

Hashes for metawards-0.11.1-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 69e0098c2c48ad6a1c71e0f2724e61154a8ab3152ddd9dce8088ecd1dba214cb
MD5 a9505bc998ce623c15d0e6d7cb7f6b23
BLAKE2b-256 5773fdc3f4cf97b87e52ab1348a44a02d7c4358fd32612c9c23ea707068839c4

See more details on using hashes here.

File details

Details for the file metawards-0.11.1-cp38-cp38-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: metawards-0.11.1-cp38-cp38-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.8, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.6

File hashes

Hashes for metawards-0.11.1-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 59fcb00f69168ea883134d3d9e303e016f3d44a81ff6b10724c20812135b89d7
MD5 89675fb4028c6cdae1c1ffc7fb287dcc
BLAKE2b-256 5d25ceb72ba19c981e16b82c77bb7270e5e37e84a8901fcf7452c672a498a175

See more details on using hashes here.

File details

Details for the file metawards-0.11.1-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

  • Download URL: metawards-0.11.1-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 5.0 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.6

File hashes

Hashes for metawards-0.11.1-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 56a3ec2e0b8877b1971bcfd765f32e4a5bc40a55fb294415daea5daa2d11940c
MD5 716c54b8cd67bc7c927af85b223bb43a
BLAKE2b-256 f7545ef79f57e877b750e60032d4fa15b0707b87d06eed92d59e63e9a544cfb1

See more details on using hashes here.

File details

Details for the file metawards-0.11.1-cp37-cp37m-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: metawards-0.11.1-cp37-cp37m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.7m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.6

File hashes

Hashes for metawards-0.11.1-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 2f15aa99222876bee82fbd74deccd6b26a41837e436789cccd922ba3583d7065
MD5 8616d87427c9c1544fedfd13cceb64e2
BLAKE2b-256 0c29363bfde2597956a8a0b15a9c01cd3418367610743151a5580e787724397f

See more details on using hashes here.

Supported by

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