Introduction
Blood feeding (when a adult female mosquito seeks out and feeds on a
blood host) is a crucial invariant in
Micro-MoB, and models of mosquito-borne pathogen
transmission (MBPT) generally. Blood feeding is an algorithm which uses
information provided by the interface from each component to compute
values which give the distribution of bites from mosquitoes onto hosts,
and the rate that mosquitoes feed. The blood feeding function
(compute_bloodmeal()
) is in R/bloodmeal.R
.
Schematic
Below is a schematic describing visually the quantities that are generated in the blood meal algorithm. Different colors refer to different components: green indicates values from the human component, blue indicates values from the adult mosquito component, and yellow indicates values from the other blood hosts and visitor components.
Values which are computed by the blood meal which are not directly involved with transmission are in red, and values that are directly relevant for transmission are in grey.
The bloodmeal function updates several values within specific components. Those are:
-
\(\kappa\): a vector of length
p
, giving the net infectiousness of hosts to mosquitoes in each patch (adult mosquito component). -
\(EIR\): a vector of length
n
, giving the entomological inoculation rate on hosts in each strata (human component). -
\(f\): a vector of length
p
, giving the blood feeding rate of mosquitoes in each patch (adult mosquito component). -
\(q\): a vector of length
p
, giving the proportion of blood meals taken on human hosts by mosquitoes in each patch (adult mosquito component).
After these values have been computed, each component’s update (step) function can use them to update infection in the population. These four values are the crucial metrics that describe how mosquitoes feed upon hosts, and how pathogens are transferred between infectious hosts to susceptible mosquitoes, and vice versa. For this reason we call bloodfeeding an invariant component, meaning any full MBPT model will need to simulate this process.
Human component
Using the generic interface from the human component, the following values are calculated which are used to compute biting and transmission.
-
H
: fromcompute_H
, gives the total population in each strata -
x
: fromcompute_x
, gives the net infectiousness from humans in each strata -
wf
: fromcompute_wf
, gives the biting weights of each strata -
Psi
: fromcompute_Psi
, gives the time at risk matrix -
W
: gives the weighted person time at risk spent at each patch; please noteW
is calculated from the above values (rather than from a dispatching method)
Mosquito component
Likewise, the following values are required from the mosquitoes.
-
f
: fromcompute_f
, gives the per-capita blood feeding rate in each patch -
q
: fromcompute_q
, gives the human blood feeding proportion in each patch -
Z
: fromcompute_Z
, gives the infectious mosquito density in each patch
Other components
We also need to compute:
-
Wd
: fromcompute_Wd
, the biting availability of visitors in each patch -
O
: fromcompute_O
, the biting availability of other blood hosts in each patch -
xd
: fromcompute_xd
, the net infectiousness of visitors in each patch
Biting distribution matrix (\(\beta\))
\(\beta\), the biting distribution
matrix, is an n
by p
matrix which describes
how bites from mosquitoes in patches get distributed over human
population strata. If it is multiplied on the right by a vector \(fq \upsilon Z\) which gives the total
number of bites on humans taken by mosquitoes in each patch, the result
is a length n
vector giving the per-capita \(EIR\).
\[\begin{equation} \beta_{n\times p} = \mbox{diag}(w_{f}) \cdot \Psi \cdot \mbox{diag}(1/W) \\ \end{equation}\]
Entomological inoculation rate (\(EIR\))
The entomological inoculation rate is directly proportional to the force of infection in humans \(h = EIR \cdot b\), where \(b\) is the transmission efficiency, the probability a bite from an infectious mosquito successfully causes infection in a human host. It is simply computed as:
\[\begin{equation} EIR_{n\times 1} = \beta \cdot fq\upsilon Z \end{equation}\]
Net infectiousness of the human population (\(\kappa\))
The net infectiousness of humans is the probability that a mosquito would become infected after biting a random human host. It’s directly proportional the force of infection in mosquitoes, which is \(\kappa fq\). After being calculated and passed to the mosquitoes, any particular mosquito model can use it to update state over a time step.
\[\begin{equation} \kappa_{p\times 1} = \upsilon \cdot (\beta^{\top} \cdot xH) + (1 - \upsilon) x_{\delta} \end{equation}\]
Directed wiring diagram
Another way to view the bloodmeal computation is as a directed wiring diagram (DWD). In this DWD there are two types of “boxes”, rectangles and circles. Rectangles are elements of the model with state, similar to machines in automata theory. Circles represent functions which do not have internal state, but may take some number of inputs and produce and output. Circles which are inside of a rectangle represent functions that “belong” to that rectangle.
Putting this back in terms of Micro-MoB, rectangles are components and circles are either invariant functions (if they live outside of a box), or are methods that dispatch depending on what model fills their component (if they live inside of a box).