{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "*This notebook contains material from [nbpages](https://jckantor.github.io/nbpages) by Jeffrey Kantor (jeff at nd.edu). The text is released under the\n", "[CC-BY-NC-ND-4.0 license](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode).\n", "The code is released under the [MIT license](https://opensource.org/licenses/MIT).*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "< [2.0 Usage](https://jckantor.github.io/nbpages/02.00-Usage.html) | [Contents](toc.html) | [Tag Index](tag_index.html) | [2.2 Examples](https://jckantor.github.io/nbpages/02.02-Examples.html) >

\"Open

\"Download\"" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 1, "link": "[2.1 Tagging](https://jckantor.github.io/nbpages/02.01-Tagging.html#2.1-Tagging)", "section": "2.1 Tagging" } }, "source": [ "# 2.1 Tagging" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 2, "link": "[2.1.1 Tagging cells](https://jckantor.github.io/nbpages/02.01-Tagging.html#2.1.1-Tagging-cells)", "section": "2.1.1 Tagging cells" } }, "source": [ "## 2.1.1 Tagging cells" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[2.1.1.1 SIR model without vital dynamics](https://jckantor.github.io/nbpages/02.01-Tagging.html#2.1.1.1-SIR-model-without-vital-dynamics)", "section": "2.1.1.1 SIR model without vital dynamics" }, "tags": [ "differential-equations", "SIR-model", "compartmental-model" ] }, "source": [ "### 2.1.1.1 SIR model without vital dynamics\n", "\n", "The [Susceptible-Infectious-Recovered (SIR) model](https://en.wikipedia.org/wiki/Compartmental_models_in_epidemiology) is an example of a compartmental model that is widely used to forecast the progress of disease epidemics.\n", "\n", "\\begin{align}\n", "\\frac{dS}{dt} & = -\\frac{\\beta I S}{N} \\\\\n", "\\frac{dI}{dt} & = \\frac{\\beta I S}{N} - \\gamma I \\\\\n", "\\frac{dR}{dt} & = \\gamma I\n", "\\end{align}\n", "\n", "Where the **basic reproduction number** $R_0 = \\frac{\\beta}{\\gamma}$" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "nbpages": { "level": 3, "link": "[2.1.1.1 SIR model without vital dynamics](https://jckantor.github.io/nbpages/02.01-Tagging.html#2.1.1.1-SIR-model-without-vital-dynamics)", "section": "2.1.1.1 SIR model without vital dynamics" }, "tags": [ "scipy.integrate.solve_ivp", "differential-equations" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "

" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from scipy.integrate import solve_ivp\n", "\n", "N = 10000.0\n", "R0 = 2.4\n", "gamma = 1/8.0\n", "beta = gamma*R0\n", "\n", "def deriv(t, y):\n", " S, I, R = y\n", " dSdt = -beta*I*S/N\n", " dIdt = beta*I*S/N - gamma*I\n", " dRdt = gamma*I\n", " return [dSdt, dIdt, dRdt]\n", "\n", "t = np.linspace(0, 180, 181)\n", "y0 = [N - 1.0, 1.0, 0.0]\n", "soln = solve_ivp(deriv, [t[0], t[-1]], y0, t_eval=t)\n", "\n", "plt.plot(soln.t, soln.y[0], label='Susceptible')\n", "plt.plot(soln.t, soln.y[1], label='Infectious')\n", "plt.plot(soln.t, soln.y[2], label='Recoverd')\n", "plt.legend()\n", "plt.xlabel('days')\n", "plt.grid(True)" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 1, "link": "[2.1 Special formatting for special tags](https://jckantor.github.io/nbpages/02.01-Tagging.html#2.1-Special-formatting-for-special-tags)", "section": "2.1 Special formatting for special tags" } }, "source": [ "# 2.1 Special formatting for special tags" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[2.1.1 SIR model without vital dynamics](https://jckantor.github.io/nbpages/02.01-Tagging.html#2.1.1-SIR-model-without-vital-dynamics)", "section": "2.1.1 SIR model without vital dynamics" }, "tags": [ "home-activity", "differential-equations" ] }, "source": [ "### 2.1.1 SIR model without vital dynamics\n", "\n", "The [Susceptible-Infectious-Recovered (SIR) model](https://en.wikipedia.org/wiki/Compartmental_models_in_epidemiology) is an example of a compartmental model that is widely used to forecast the progress of disease epidemics.\n", "\n", "\\begin{align}\n", "\\frac{dS}{dt} & = -\\frac{\\beta I S}{N} \\\\\n", "\\frac{dI}{dt} & = \\frac{\\beta I S}{N} - \\gamma I \\\\\n", "\\frac{dR}{dt} & = \\gamma I\n", "\\end{align}\n", "\n", "Where the **basic reproduction number** $R_0 = \\frac{\\beta}{\\gamma}$\n", "\n", "This cell has been tagged with \"home-activity\"." ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[2.1.1 SIR model without vital dynamics](https://jckantor.github.io/nbpages/02.01-Tagging.html#2.1.1-SIR-model-without-vital-dynamics)", "section": "2.1.1 SIR model without vital dynamics" }, "tags": [ "class-activity" ] }, "source": [ "This cell has been tagged with \"class-activity\"." ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[2.1.1 SIR model without vital dynamics](https://jckantor.github.io/nbpages/02.01-Tagging.html#2.1.1-SIR-model-without-vital-dynamics)", "section": "2.1.1 SIR model without vital dynamics" }, "tags": [ "important-note" ] }, "source": [ "This cell has been tagged with \"important-note\"." ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 2, "link": "[2.1.1 Tagging solutions in code cells](https://jckantor.github.io/nbpages/02.01-Tagging.html#2.1.1-Tagging-solutions-in-code-cells)", "section": "2.1.1 Tagging solutions in code cells" } }, "source": [ "## 2.1.1 Tagging solutions in code cells\n", "\n", "For teaching purposes, it is often useful to selecting remove code from cells a" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[2.1.1.1 Exercise 1.](https://jckantor.github.io/nbpages/02.01-Tagging.html#2.1.1.1-Exercise-1.)", "section": "2.1.1.1 Exercise 1." }, "tags": [ "exercise" ] }, "source": [ "### 2.1.1.1 Exercise 1.\n", "\n", "In the following cell write a function that returns the square of a number." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "nbpages": { "level": 3, "link": "[2.1.1.1 Exercise 1.](https://jckantor.github.io/nbpages/02.01-Tagging.html#2.1.1.1-Exercise-1.)", "section": "2.1.1.1 Exercise 1." }, "tags": [ "exercise" ] }, "outputs": [], "source": [ "# write a function that returns the square of a number\n", "\n", "### BEGIN SOLUTION\n", "def sqr(x):\n", " return x**2\n", "### END SOLUTION\n", "\n", "assert sqr(2) == 4\n", "assert sqr(-1) == 1\n", "\n", "### BEGIN HIDDEN TESTS\n", "assert sqr(3) == 9\n", "assert abs(sqr(3.3) - 10.89) < 0.001\n", "### END HIDDEN TESTS" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "< [2.0 Usage](https://jckantor.github.io/nbpages/02.00-Usage.html) | [Contents](toc.html) | [Tag Index](tag_index.html) | [2.2 Examples](https://jckantor.github.io/nbpages/02.02-Examples.html) >

\"Open

\"Download\"" ] } ], "metadata": { "celltoolbar": "Tags", "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.7.4" } }, "nbformat": 4, "nbformat_minor": 2 }