Blood feeding

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:

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.

Mosquito component

Likewise, the following values are required from the mosquitoes.

Other components

We also need to compute:

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).