{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Modeling and Simulation in Python\n",
"\n",
"Chapter 13\n",
"\n",
"Copyright 2017 Allen Downey\n",
"\n",
"License: [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0)\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# Configure Jupyter so figures appear in the notebook\n",
"%matplotlib inline\n",
"\n",
"# Configure Jupyter to display the assigned value after an assignment\n",
"%config InteractiveShell.ast_node_interactivity='last_expr_or_assign'\n",
"\n",
"# import functions from the modsim.py module\n",
"from modsim import *"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Code from previous chapters"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`make_system`, `plot_results`, and `calc_total_infected` are unchanged."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def make_system(beta, gamma):\n",
" \"\"\"Make a system object for the SIR model.\n",
" \n",
" beta: contact rate in days\n",
" gamma: recovery rate in days\n",
" \n",
" returns: System object\n",
" \"\"\"\n",
" init = State(S=89, I=1, R=0)\n",
" init /= np.sum(init)\n",
"\n",
" t0 = 0\n",
" t_end = 7 * 14\n",
"\n",
" return System(init=init, t0=t0, t_end=t_end,\n",
" beta=beta, gamma=gamma)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"def plot_results(S, I, R):\n",
" \"\"\"Plot the results of a SIR model.\n",
" \n",
" S: TimeSeries\n",
" I: TimeSeries\n",
" R: TimeSeries\n",
" \"\"\"\n",
" plot(S, '--', label='Susceptible')\n",
" plot(I, '-', label='Infected')\n",
" plot(R, ':', label='Recovered')\n",
" decorate(xlabel='Time (days)',\n",
" ylabel='Fraction of population')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def calc_total_infected(results):\n",
" \"\"\"Fraction of population infected during the simulation.\n",
" \n",
" results: DataFrame with columns S, I, R\n",
" \n",
" returns: fraction of population\n",
" \"\"\"\n",
" return get_first_value(results.S) - get_last_value(results.S)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here's an updated version of `run_simulation` that uses `unpack`."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def run_simulation(system, update_func):\n",
" \"\"\"Runs a simulation of the system.\n",
" \n",
" system: System object\n",
" update_func: function that updates state\n",
" \n",
" returns: TimeFrame\n",
" \"\"\"\n",
" unpack(system)\n",
" \n",
" frame = TimeFrame(columns=init.index)\n",
" frame.row[t0] = init\n",
" \n",
" for t in linrange(t0, t_end):\n",
" frame.row[t+1] = update_func(frame.row[t], t, system)\n",
" \n",
" return frame"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Exercise:** Write a version of `update_func` that uses `unpack`."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"# Original\n",
"\n",
"def update_func(state, t, system):\n",
" \"\"\"Update the SIR model.\n",
" \n",
" state: State (s, i, r)\n",
" t: time\n",
" system: System object\n",
" \n",
" returns: State (sir)\n",
" \"\"\"\n",
" s, i, r = state\n",
"\n",
" infected = system.beta * i * s \n",
" recovered = system.gamma * i\n",
" \n",
" s -= infected\n",
" i += infected - recovered\n",
" r += recovered\n",
" \n",
" return State(S=s, I=i, R=r)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"# Solution\n",
"\n",
"def update_func(state, t, system):\n",
" \"\"\"Update the SIR model.\n",
" \n",
" state: State (s, i, r)\n",
" t: time\n",
" system: System object\n",
" \n",
" returns: State (sir)\n",
" \"\"\"\n",
" unpack(system)\n",
" s, i, r = state\n",
"\n",
" infected = beta * i * s \n",
" recovered = gamma * i\n",
" \n",
" s -= infected\n",
" i += infected - recovered\n",
" r += recovered\n",
" \n",
" return State(S=s, I=i, R=r)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Test the updated code with this example."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" S \n",
" I \n",
" R \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0.988889 \n",
" 0.011111 \n",
" 0.000000 \n",
" \n",
" \n",
" 1 \n",
" 0.985230 \n",
" 0.011992 \n",
" 0.002778 \n",
" \n",
" \n",
" 2 \n",
" 0.981296 \n",
" 0.012929 \n",
" 0.005776 \n",
" \n",
" \n",
" 3 \n",
" 0.977071 \n",
" 0.013921 \n",
" 0.009008 \n",
" \n",
" \n",
" 4 \n",
" 0.972541 \n",
" 0.014970 \n",
" 0.012488 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" S I R\n",
"0 0.988889 0.011111 0.000000\n",
"1 0.985230 0.011992 0.002778\n",
"2 0.981296 0.012929 0.005776\n",
"3 0.977071 0.013921 0.009008\n",
"4 0.972541 0.014970 0.012488"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"system = make_system(0.333, 0.25)\n",
"results = run_simulation(system, update_func)\n",
"results.head()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_results(results.S, results.I, results.R)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Sweeping beta"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Make a range of values for `beta`, with constant `gamma`."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.25"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"beta_array = linspace(0.1, 1.1, 11)\n",
"gamma = 0.25"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Run the simulation once for each value of `beta` and print total infections."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.1 0.0072309016649785285\n",
"0.2 0.038410532615067994\n",
"0.30000000000000004 0.33703425948982\n",
"0.4 0.6502429153895082\n",
"0.5 0.8045061124629623\n",
"0.6 0.8862866308018508\n",
"0.7000000000000001 0.9316695082755875\n",
"0.8 0.9574278300784942\n",
"0.9 0.9720993156325133\n",
"1.0 0.9803437149675784\n",
"1.1 0.9848347293510136\n"
]
}
],
"source": [
"for beta in beta_array:\n",
" system = make_system(beta, gamma)\n",
" results = run_simulation(system, update_func)\n",
" print(system.beta, calc_total_infected(results))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Wrap that loop in a function and return a `SweepSeries` object."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"def sweep_beta(beta_array, gamma):\n",
" \"\"\"Sweep a range of values for beta.\n",
" \n",
" beta_array: array of beta values\n",
" gamma: recovery rate\n",
" \n",
" returns: SweepSeries that maps from beta to total infected\n",
" \"\"\"\n",
" sweep = SweepSeries()\n",
" for beta in beta_array:\n",
" system = make_system(beta, gamma)\n",
" results = run_simulation(system, update_func)\n",
" sweep[system.beta] = calc_total_infected(results)\n",
" return sweep"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sweep `beta` and plot the results."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" values \n",
" \n",
" \n",
" \n",
" \n",
" 0.1 \n",
" 0.007231 \n",
" \n",
" \n",
" 0.2 \n",
" 0.038411 \n",
" \n",
" \n",
" 0.3 \n",
" 0.337034 \n",
" \n",
" \n",
" 0.4 \n",
" 0.650243 \n",
" \n",
" \n",
" 0.5 \n",
" 0.804506 \n",
" \n",
" \n",
" 0.6 \n",
" 0.886287 \n",
" \n",
" \n",
" 0.7 \n",
" 0.931670 \n",
" \n",
" \n",
" 0.8 \n",
" 0.957428 \n",
" \n",
" \n",
" 0.9 \n",
" 0.972099 \n",
" \n",
" \n",
" 1.0 \n",
" 0.980344 \n",
" \n",
" \n",
" 1.1 \n",
" 0.984835 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"0.1 0.007231\n",
"0.2 0.038411\n",
"0.3 0.337034\n",
"0.4 0.650243\n",
"0.5 0.804506\n",
"0.6 0.886287\n",
"0.7 0.931670\n",
"0.8 0.957428\n",
"0.9 0.972099\n",
"1.0 0.980344\n",
"1.1 0.984835\n",
"dtype: float64"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"infected_sweep = sweep_beta(beta_array, gamma)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Saving figure to file figs/chap06-fig01.pdf\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"label = 'gamma = ' + str(gamma)\n",
"plot(infected_sweep, label=label)\n",
"\n",
"decorate(xlabel='Contacts per day (beta)',\n",
" ylabel='Fraction infected')\n",
"\n",
"savefig('figs/chap06-fig01.pdf')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Sweeping gamma"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Using the same array of values for `beta`"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. , 1.1])"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"beta_array"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And now an array of values for `gamma`"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[0.2, 0.4, 0.6, 0.8]"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gamma_array = [0.2, 0.4, 0.6, 0.8]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For each value of `gamma`, sweep `beta` and plot the results."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Saving figure to file figs/chap06-fig02.pdf\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"for gamma in gamma_array:\n",
" infected_sweep = sweep_beta(beta_array, gamma)\n",
" label = 'γ = ' + str(gamma)\n",
" plot(infected_sweep, label=label)\n",
" \n",
"decorate(xlabel='Contacts per day (beta)',\n",
" ylabel='Fraction infected',\n",
" loc='upper left')\n",
"\n",
"savefig('figs/chap06-fig02.pdf')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"** Exercise:** Suppose the infectious period for the Freshman Plague is known to be 2 days on average, and suppose during one particularly bad year, 40% of the class is infected at some point. Estimate the time between contacts."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" values \n",
" \n",
" \n",
" \n",
" \n",
" 0.1 \n",
" 0.002736 \n",
" \n",
" \n",
" 0.2 \n",
" 0.007235 \n",
" \n",
" \n",
" 0.3 \n",
" 0.015929 \n",
" \n",
" \n",
" 0.4 \n",
" 0.038603 \n",
" \n",
" \n",
" 0.5 \n",
" 0.132438 \n",
" \n",
" \n",
" 0.6 \n",
" 0.346765 \n",
" \n",
" \n",
" 0.7 \n",
" 0.530585 \n",
" \n",
" \n",
" 0.8 \n",
" 0.661553 \n",
" \n",
" \n",
" 0.9 \n",
" 0.754595 \n",
" \n",
" \n",
" 1.0 \n",
" 0.821534 \n",
" \n",
" \n",
" 1.1 \n",
" 0.870219 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"0.1 0.002736\n",
"0.2 0.007235\n",
"0.3 0.015929\n",
"0.4 0.038603\n",
"0.5 0.132438\n",
"0.6 0.346765\n",
"0.7 0.530585\n",
"0.8 0.661553\n",
"0.9 0.754595\n",
"1.0 0.821534\n",
"1.1 0.870219\n",
"dtype: float64"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Solution\n",
"\n",
"# Sweep beta with fixed gamma\n",
"gamma = 1/2\n",
"infected_sweep = sweep_beta(beta_array, gamma)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0.62548698])"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Solution\n",
"\n",
"# Interpolating by eye, we can see that the infection rate passes through 0.4\n",
"# when beta is between 0.6 and 0.7\n",
"# We can use the `crossings` function to interpolate more precisely\n",
"# (although we don't know about it yet :)\n",
"beta_estimate = crossings(infected_sweep, 0.4)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1.59875429])"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Solution\n",
"\n",
"# Time between contacts is 1/beta\n",
"time_between_contacts = 1/beta_estimate"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}