Overview

MINTverse is two machine learning packages, estiMINT and stateMINT. They estimate how intense transmission is in a setting, and predict how prevalence and clinical cases respond to a change in nets, spraying, or larviciding. It does both with trained models that stand in for a full individual-based simulation.

Package What it does
estiMINT Maps a measured prevalence to the entomological inoculation rate (EIR), relates EIR to the human biting rate (HBR), and estimates how EIR shifts when mosquito density changes.
stateMINT Emulates the individual-based model. Given a setting and an intervention package, it returns the prevalence and case trajectories over the campaign.

You can simply call the built-in function run_scenarios to chain the functionality of these packages.

pip install "estimint[scenarios]" installs both packages. The distribution you install is called mintstate and the module you import is stateMINT.

Why an emulator

The trajectories stateMINT returns are those of an individual-based malaria transmission model, the same lineage as the departmental malariasimulation package, where a single scenario takes minutes and exploring an intervention space, or fitting to a survey, means running it thousands of times.

stateMINT is trained on a large library of those simulation runs, and reproduces their output in about 6 ms per scenario on a CPU or about 1 ms on a GPU, parallelised across cores or within the GPU.

fig, axes = plt.subplots(1, 2, figsize=(11.0, 3.3))
for ax, predictor, ylab in zip(axes, ("prevalence", "cases"),
                               ("prevalence", "cases per 1000 per day")):
    truth_panel(ax, 16, predictor, emulator=False)
    ax.set_xlabel("years from campaign")
    ax.set_ylabel(ylab)
axes[0].plot([], [], color=TRUTH, lw=3.4, label="malariasimulation")
axes[0].plot([], [], color=PIPELINE, lw=1.8, label="MINTverse")
axes[0].legend(fontsize=8)
plt.tight_layout()
plt.show()

Two panels, prevalence and clinical cases over seven years, both oscillating sharply with the season. The red MINTverse prediction lies on top of the white simulator average throughout, before and after the campaign at year zero.

A held-out, strongly seasonal parameter set under a net campaign. The white line is malariasimulation, averaged over the individual stochastic runs drawn in grey. The red line is MINTverse, starting from a measured prevalence.

Across 1,954 parameter sets held out of training, the emulator tracks the simulator to a mean absolute error of 0.0044 in prevalence, at an R² of 0.999 and with no systematic bias. Please see Accuracy and speed for the trajectory-by-trajectory comparison.

Outside its training range the emulator is not reliable. estiMINT clamps out-of-range covariates and raises nothing, so a setting far beyond it still returns an answer.

What you need to run it

A Scenario is built from the inputs below, and run_scenarios derives the emulator’s twelve covariates from them. Seven fields are required and the rest default to zero or None.

Transmission enters through one measure wrapped in an EirTarget, almost always a measured prevalence. The mode decides how much estiMINT does before the emulator, and the value it returns is an equilibrium at the campaign rather than a trajectory.

Field Meaning Source
eir_target EirTarget(0.45, "prevalence") Cross-sectional survey (DHS, MIS)
EirTarget(20, "eir") A previous calibration

The setting is six required fields describing the district and its mosquitoes.

Field Meaning Source
Q0 Human blood index, 0 to 1 The local vector species
phi Proportion of bites taken while people are in bed Vector species and human behaviour
seasonal 0 for perennial transmission, 1 for strongly seasonal Known for the setting
res_use Pyrethroid resistance, 0 to 1 Bioassay data on the local vector population
irs IRS coverage in place now, 0 to 1 Known for the setting
name A label carried into the results Yours

The nets in place now are usage shares by net type, each defaulting to zero, so leave them all out if there are no nets. calculate_dn0 turns the mix and res_use into the dn0 the model reads, and the killing effect is not supplied directly.

Field Meaning Default
py_only Pyrethroid-only coverage 0.0
py_pbo Pyrethroid-PBO coverage 0.0
py_pyrrole Pyrethroid-pyrrole coverage 0.0
py_ppf Pyrethroid-PPF coverage 0.0

The campaign is what changes from day 3285 onwards, each field defaulting to nothing, which withdraws the nets. Please see the callout below.

Field Meaning Default
net_type_future Net product from the campaign None
itn_future Net coverage from the campaign 0.0
irs_future IRS coverage from the campaign 0.0
lsm Larval source management coverage 0.0
routine Continuous net distribution 0.0
mosquito_delta Proportional change in mosquito density (prevalence input only) 0.0

Running it needs no GPU, no malariasimulation installation, no R, and no training data.

Future coverage must be set explicitly

itn_future, net_type_future and irs_future describe what happens from the campaign, not what is already there. Left unset, they model the existing nets and spraying being withdrawn at the campaign. To hold an intervention steady, restate it in the future fields. Please see Covariates and the time grid.

MINTweb

MINTweb is the same modelling behind a web front end, aimed at National Malaria Control Programmes rather than at researchers. It exists so that a programme can work out the most cost-effective way to deploy the mosquito net and IRS products the WHO currently recommends, without writing any Python.

Work there is organised into projects, each a collection of regions, where a region is whatever unit the programme plans in, an administrative division, a province or a village. Each region carries its own population and its own choice of nets and spraying, and MINTweb returns the impact and the cost effectiveness of each package. Note that IRS is deployed focally, so a region that is only partly sprayed is better split into a sprayed region and an unsprayed one.

MINTweb is the right tool for scenario planning on the day. These packages are the right tool when you want the trajectories themselves, a sweep larger than a form can carry, or a step in the pipeline the front end does not expose.

Where to start

If Python is new, Python for Malaria Modellers covers the interpreter, the environment, and the notebook. Otherwise run a first estimate in Getting Started. For the ideas behind the models, read Core Concepts.