# Vector Borne Transmission

## Overview

This app allows you to explore a simple model for vector-borne transmission. Read about the model in the “Model” tab. Then do the tasks described in the “What to do” tab.

### Learning Objectives

- Know about important IDs that are vector-borne
- Understand the implications of vector-borne transmission on ID dynamics
- Understand how vector-borne transmission influences potential ID control strategies.

## The Model

### Model Overview

This is a simple 2 species (hosts and vectors) model, using the basic SIR framework as follows.

The model has the following compartments:

- Sh - uninfected and susceptible host
- Ih - infected/infectious hosts
- Rh - recovered/removed hosts
- Sv - susceptible vectors
- Iv - infected/infectious vectors

We assume that once a vector is infected, it stays infected until it dies. Therefore, recovered vectors are not included in the model.

The processes being modeled are:

- Susceptible host can become infected by contact with infected vectors at rate b1
- Susceptible vectors can become infected by contact with infected hosts at rate b2
- Infected hosts recover after some time (specified by the rate g).
- New susceptible vectors are born at a rate n. Susceptible and infected vectors die at rate m. The inverse of this rate is the average lifespan.
- Recovered hosts lose their immunity at rate w.

We envision hosts to be humans and vectors to be e.g. mosquitoes. We further assume the time scale for the model is short enough that we can ignore births and deaths for human hosts but not vectors. This is likely a decent approximation as long as our simulation time is only a few years.

### Model Implementation

The flow diagram and the set of ordinary differential equations (ODE) which are used to implement this model are as follows:

Model Diagram

The model equations are:

\[\dot S_h = - b_1 S_h I_v + w R_h \] \[\dot I_h = b_1 S_h I_v - g I_h \] \[\dot R_h = g I_h - w R_h \] \[\dot S_v = n - b_2 S_v I_h - m S_v \] \[\dot I_v = b_2 S_v I_h - m I_v\]

## What to do

The tasks below are described in a way that assumes everything is in units of months (rate parameters, therefore, have units of inverse months). If any quantity is not given in those units, you need to convert it first (e.g. if it says a year, you need to convert it to 12 months).

### Task 1

Set the model parameters so that there are 1000 initially susceptible for both hosts and vectors, 1 initially infected host, no infected vectors, and no recovered hosts. Simulation duration 10 years (convert to months). Set the transmission rates, b1=0, and b2 = 0.004. Assume that the duration of the infectious period in hosts is half a month (about 2 weeks) long. Assume that vectors live for half a month. Set the birth rate such that in the absence of the ID, you get a steady population of 1000 vectors. You have learned the relation between births, deaths and steady state susceptibles in the Patterns of ID app. If you don’t remember, revisit that app or you can figure it out by trying different values for the birth rate (with no infected hosts or vectors present). Turn off waning immunity for now. Run the simulation, observe what you get. You should not see any outbreak happening. Make sure you know why.

Record

- Nothing

### Task 2

In the previous task, there was no outbreak because while infected hosts were able to transmit to the vectors (b2>0), the vectors where not able to pass the pathogen back to the hosts (b1=0), thus no sustained transmission and no outbreak. Now set b1 = 0.002 and b2 = 0.004, and rerun the simulation. Since this now closes the loop and allows for sustained transmission from hosts to vectors and back, you should seen an outbreak. Run the simulation and confirm that you get an outbreak with around 251 susceptible hosts left. Also check that it doesn’t matter if you start with an infected host or an infected vector (and none of the other), you’ll get essentially the same results.

Record

- Maximum/Peak number of infected human hosts

### Task 3

Recall from the Environmental Transmission app that the definition of the reproductive number always goes from an infectious compartment of one type back to that compartment. Here, that means we can compute how many new infectious human hosts are produced (via vectors) by one infectious host. Completely equivalently, we can determine the number of new infectious vectors produced (via hosts) by one infectious vector. One infectious human is infectious for duration 1/g and during that time infects vectors at rate b2, for a total of b2/g infected vectors. Similarly, each vector transmits at rate b1, for a duration of 1/m, for a total of b1/m new infected hosts. To go from one type of infected back to the same time, one multiplies the two quantities, and multiplying by the initial susceptibles of each type gives the basic reproductive number, R0=b1b2Sh0Sv0/(gm) . Let’s explore this equation with the simulation. Compute R0 for the model settings from the previous task.

Record

- Value of R0

### Task 4

Run the simulation for b1 = 0.003 and b2 = 0.004, everything else as in task 1. Compute R0 and compute the outbreak size among hosts (total/cumulative number infected, which you need to compute from the output).

Record

- Value of R0

- Total (cumulative) number of infected hosts

### Task 5

Repeat the previous task, now for b1 = 0.006 and b2 = 0.002. Compare the values for R0 and the outbreak size between the two settings. Are you surprised? Can you explain/guess why you see what you see?

Record

- Value of R0

- Total (cumulative) number of infected hosts

### Task 6

You might have expected to see the same size outbreaks in the previous two tasks. The reason why you don’t is that here we do not have a closed population, instead vectors are born and die, and their changing populations can affect the result. To test that, we can make vector dynamics so fast that they are essentially fixed. That is not biologically realistic, but we can do it just to explore model behavior and see if our intuition of why we see different outbreak sizes is correct. To do so, set the vector death rate to an (biologically unreasonable) rate of m = 200 and adjust birth rate so that vector population size (in absence of disease) remains at 1000. Now run simulations again for the settings from the last 2 tasks. Before you do that, we also need to adjust transmission rate for the vectors to keep R0 as before. Do so by increasing b1 by a factor of 100. compared to the values in the previous two tasks. You should see that the vector population remains pretty much constant and that the number susceptible left at the end of the outbreak is almost the same for the two scenarios. Use the final size equation to compute R0 and compare with the value from the equation given earlier.

Record

- Value of R0 from final size equation

### Task 7

While we have played around with the transmission rates, we haven’t really given much thought as to how those could map to real biological quantities. Each infection requires an interaction between a host and a vector. This interaction is often a bite, especially if we think about mosquitoes. If the vectors have a fixed rate of biting (call it r), no matter how many hosts there are, then the rate at which a vector bites any one of the hosts in a population of size N is rb/N. If there is some chance of transmission per bite from infected vector to human (call it q1) and similarly a chance of transmission per bite from infected human to vector (q2), then the transmission parameters in our model are b1= rq1/N and b2 = rq2/N. At the beginning of an outbreak, if we assume everyone is susceptible, we can replace N with S. If we stick these quantities into the R0 equation, we find R0=_r^2q1q2Sv0/(gm*Sh0)_. This produces two potentially interesting insights. First, the reproductive number, and thus outbreak size, is proportional to the square of the biting rate. Reducing that rate is thus an important target. Further, we find that while a larger vector number leads to a higher R0, it turns out an increase in the host population reduces R0. The reason for that is that if there are many hosts, two bites of the same host (which is required for ongoing transmission) becomes less likely. For more on that, see e.g. (Keeling and Rohani 2007).

Record

- Nothing

### Task 8

In the ID Patterns app, we discussed the concept of resource replenishment and that it is a requirement for multiple outbreaks. Here, we have a model that includes births of new vectors, yet we still only get a single outbreak. Think about it for a moment to figure out why. Then play with the model inputs and see if you can get settings for which you have more than one outbreak.

Record

- Nothing

### Task 9

In the previous task, you hopefully realized that replenishment is needed for both hosts and vectors to get multiple outbreaks, and that you can accomplish that by turning on waning immunity for hosts. Set parameters to values as in task 2 and assume that immunity wanes on average in 10 months. Run the simulation. You should see a few consecutively smaller outbreaks and the system settling down at a steady state of about 523 susceptible hosts.

Record

- Final number of susceptible vectors at steady state

### Task 10

Keep exploring. One feature you might notice is that while you can get a few outbreaks and a steady state, you won’t be able to produce sustained cycles/oscillations. This would require seasonality in the model, which this model does not include. Many vector-borne pathogens show strong seasonality, thus for a real model that is built to study a specific vector-borne disease, seasonality - and likely other details - will need to be included.

Record

- Nothing

## Further Information

- This app (and all others) are structured such that the Shiny part (the graphical interface you see and the server-side function that goes with it) calls an underlying R script (or several) which runs the simulation for the model of interest and returns the results.
- For this app, the underlying function(s) running the simulation are called `simulate_Vector_transmission_model_ode`. You can call them directly, without going through the shiny app. Use the `help()` command for more information on how to use the functions directly. If you go that route, you need to use the results returned from this function and produce useful output (such as a plot) yourself.
- You can also download all simulator functions and modify them for your own purposes. Of course to modify these functions, you’ll need to do some coding.
- For examples on using the simulators directly and how to modify them, read the package vignette by typing `vignette('DSAIDE')` into the R console.
- Some more information on vector-borne diseases and modeling can be found in (Kilpatrick and Randolph 2012).

### References

Keeling, Matt, and Pejman Rohani. 2007. Modeling Infectious Diseases in Humans and Animals. Princeton University Press.
Kilpatrick, A Marm, and Sarah E Randolph. 2012. “Drivers, Dynamics, and Control of Emerging Vector-Borne Zoonotic Diseases.” Lancet (London, England) 380 (9857): 1946–55. https://doi.org/10.1016/S0140-6736(12)61151-9.