Vector-borne transmission on a landscape#
Field: epidemiology · Zoo name: vector_borne · Module: modelly.zoo.vector_borne.model

Hosts live on the cells of a landscape grid and move to a random neighbouring cell with
probability move per day; each is susceptible, infectious or recovered. Mosquitoes live in the
cells too, m per host on average (times a per-cell habitat suitability), and are
susceptible, exposed (the extrinsic incubation) or infectious. Every day a mosquito survives
with probability survival and bites a times, each time a random host of its cell. An
infectious bite infects a susceptible host with probability b; a bite on an infectious host
infects a susceptible mosquito with probability c. New mosquitoes emerge to keep the density
at m.
How it is written#
Mosquitoes in the same cell and state are interchangeable, so they are a CohortTable with one
row per (cell, state): survival, infection and incubation are binomial draws per row. Hosts are
agents with Column arrays for their state and cell row, placed by row with CellIndex.track
and moved with CellIndex.random_neighbor. A habitat raster, for example the values of a
modelly.space.geo.RasterLayer, sets where the mosquitoes are: VectorScenario(habitat=...).
from modelly.zoo.vector_borne.model import VectorBorne, VectorScenario
model = VectorBorne(VectorScenario(rng=42, m=2.0))
model.r0() # Ross-Macdonald R0
model.run() # stops when the infection is gone
model.attack_rate()
Parameter |
Default |
Meaning |
|---|---|---|
|
|
landscape size in cells |
|
|
hosts per cell at the start |
|
|
per-cell suitability scaling the vector density, shape |
|
|
mosquitoes per host |
|
|
bites per mosquito per day |
|
|
transmission probability per bite, mosquito to host and host to mosquito |
|
|
daily survival of a mosquito |
|
|
daily probability that an exposed mosquito becomes infectious |
|
|
daily probability that an infectious host recovers |
|
|
daily probability that a host moves to a neighbouring cell |
|
|
infectious hosts at the start |
|
|
maximum run length of |
Validation#
The Ross-Macdonald reproduction number, host to host over one full cycle, is
R0 = m a^2 b c P / (recovery (1 - survival)), where P is the probability that an infected
mosquito survives the extrinsic incubation; r0() computes it for the discrete daily cycle of
the model. It is linear in the vector density m.
tests/zoo/test_vector_borne.py runs vector densities 0.5, 2 and 4 (R0 about 0.5, 2.1 and 4.3)
with three seeds, and checks for every seed that the attack rates come out in the order of R0,
that the subcritical outbreak stays under 5 % (its expected size is about 1 %), and that R0 = 4
infects over 80 % of the hosts. Spatial structure keeps the attack rates below the well-mixed
final size. It also checks that the habitat raster confines the mosquitoes, that hosts are
conserved, and that the same seed gives the same epidemic curve.
References#
Ross, R. (1911). The Prevention of Malaria, 2nd ed. John Murray.
Macdonald, G. (1957). The Epidemiology and Control of Malaria. Oxford University Press.
Start a project from it with modelly zoo copy vector_borne my_vector_model.