About | Contact | Publications | News | Installation | Examples | License | Wiki
PyRoss is a numerical library for mathematical modelling of infectious disease in Python. The library supports structured compartment models formulated deterministically (as systems of differential equations) or stochastically (as chemical master equations). The library can move smoothly from stochastic to deterministic formulations as the compartmental fluctuations become small.
Currently implemented models are SIR, SEIR, SEAIR, SEAIRQ, SIkR, and SEkIkR.
PyRoss was developed to model the outbreak of the novel coronavirus COVID-19 and to assess the age-structured impact of social distancing measures in India.
The library is named after Sir Ronald Ross, doctor, mathematician and poet. In 1898 he made "the great discovery" in his laboratory in Calcutta "that malaria is conveyed by the bite of a mosquito". He won the Nobel Prize in 1902 and laid the foundations of the mathematical modelling of infectious diseases.
Please read the PyRoss Wiki before you use PyRoss for your research.
The authors are part of The Rapid Assistance in Modelling the Pandemic (RAMP) taskforce at the University of Cambridge.
Please first read the wiki and then only open an issue, in preference to emailing us with queries. Issues can be shared with others with similar queries and you help the user community by communicating through issues. Thank you!
When all else fails, we can be contacted at: [email protected] (R. Adhikari), [email protected] (Julian Kappler) and [email protected] (Rajesh Singh).
- Age-structured impact of social distancing on the COVID-19 epidemic in India (arXiv:2003.12055, Research Gate). Rajesh Singh and R. Adhikari (2020).
This paper is amongst the top five most read COVID-19 papers on Research Gate . The authors have received (literally) hundreds of emails with inquiries and apologise that they can no longer respond individually to these. Please read the Frequently Asked Questions in the first instance. The authors promise to include questions not covered in the FAQ as soon as possible.
The figures below show how the lockdown forecasts from the paper are altered by a change in the epidemiological model. The SIR model provides a lower bound on the rapidity with which the epidemic decreases. All other models exceed this bound, as shown for an SEIR model. Both models are fitted to the number of infectives using case data for India till 25-03-2020.
-
A partial list of news articles on PyRoss-based research: Zee News | The Weekend Leader | The Weather Channel | The Tribune | The Times of India | The Telegraph | The Northlines | The New Indian Express | Swarajya | Snoop Tales | Scroll.in | Rediff.com | People's Reporter | News Bundle | Newsgram | Nature News | Mathrubhumi | liveMint | India New England News | India Today | Indian Express: Bangla | Indian Blooms | Dainik Bhaskar | CCN | Business Standard | Asiaville
-
Python Trending has tweeted about PyRoss
PyRoss - Mathematical modelling of infectious disease in Python. https://t.co/VBOmT5kaVT https://t.co/FRvEqWMlPL
— Python Trending (@pythontrending) March 31, 2020 -
Python Weekly has tweeted about PyRoss
PyRoss - Mathematical modelling of infectious disease in Python. https://t.co/MyTWTM1ItP #Python #Coronavirus #Covid19 pic.twitter.com/gzPNpWf7mK
— Python Weekly (@PythonWeekly) April 9, 2020
Clone (or download) the repository and use a terminal to install using
>> git clone https://github.com/rajeshrinet/pyross.git
>> cd pyross
>> python setup.py install
PyRoss requires the following software
- Python 2.6+ or Python 3.4+
- Cython 0.25.x+ | Matplotlib 2.0.x+ | NumPy 1.x+ | Pandas | SciPy 1.1.x+ | xlrd
Case data: The data for COVID-19 cases is obtained from the Worldometer website.
Age structure: Population Pyramid website.
Contact structure: Projecting social contact matrices in 152 countries using contact surveys and demographic data, Kiesha Prem, Alex R. Cook, Mark Jit, PLOS Computational Biology, (2017) DOI, Supporting Information Text and Supporting Information Data.
PyRoss has a formulation-agnostic and intuitive interface. Once a model is formulated, stochastic, deterministic and hybrid simulations can performed through the same interface. The example below shows how to set up a deterministic SIR simulation. See the examples folder for more Jupyter notebook examples.
#Ex1: M=1, SIR
import numpy as np
import pyross
M = 1 # the SIR model has no age structure
Ni = 1000*np.ones(M) # so there is only one age group
N = np.sum(Ni) # and the total population is the size of this age group
beta = 0.2 # infection rate
gamma = 0.1 # recovery rate
alpha = 0 # fraction of asymptomatic infectives
fsa = 1 # the self-isolation parameter
Ia0 = np.array([0]) # the SIR model has only one kind of infective
Is0 = np.array([1]) # we take these to be symptomatic
R0 = np.array([0]) # and assume there are no recovered individuals initially
S0 = N-(Ia0+Is0+R0) # so that the initial susceptibles are obtained from S + Ia + Is + R = N
# there is no contact structure
def contactMatrix(t):
return np.identity(M)
# instantiate model
parameters = {'alpha':alpha, 'beta':beta, 'gamma':gamma,'fsa':fsa}
model = pyross.deterministic.SIR(parameters, M, Ni)
# duration of simulation and data file
Tf = 160; Nt=160;
# simulate model
data = model.simulate(S0, Ia0, Is0, contactMatrix, Tf, Nt)
We believe that openness and sharing improves the practice of science and increases the reach of its benefits. This code is released under the MIT license. Our choice is guided by the excellent article on Licensing for the scientist-programmer.