Last active
April 8, 2020 11:48
-
-
Save SolarLiner/ab3aaa146ce1753b069de7f7923472ac to your computer and use it in GitHub Desktop.
A modelization of the COVID-19 outbreak
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Modelling COVID-19 cases\n", | |
"\n", | |
"*Python packages needed: `numpy`, `scipy`, `matplotlib`, `pandas`, `demjson`*\n", | |
"\n", | |
"Inspired by [3blue1brown's video](https://www.youtube.com/watch?v=Kas0tIxDvrg) on the \"shape\" of the COVID-19 outbreak, I've decided to get some numbers out of data and try to predict the future behiavor of the epidemic.\n", | |
"\n", | |
"We begin by fetching data of the number of cases since the beginning of the outbreak. For this we'll use `requests` and `beautifulsoup` to fetch and parse the contents of the Worldometer page on the [Coronavirus Cases statistics](https://www.worldometers.info/coronavirus/coronavirus-cases/).\n", | |
"\n", | |
"**Note**: You can download this notebook, and provided you have the dependencies specified up-top, you can get updated numbers as the website updates daily." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import requests\n", | |
"from bs4 import BeautifulSoup\n", | |
"\n", | |
"html = requests.get(\"https://www.worldometers.info/coronavirus/coronavirus-cases/\")\n", | |
"html = BeautifulSoup(html.text, 'html.parser')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Scraping the data\n", | |
"\n", | |
"The web page uses a client JavaScript library to render the graphs, which means the raw data has to be somewhere for them to load and display it. This means through careful filtering of the webpage contents, we can get the data for ourselves, too.\n", | |
"\n", | |
"In this case, the data are in `script` tags, calling a function `Highcharts.chart(name, data)` where `name` is a string identifier of the data itself, and `data` is, well, data. It is structured in a way the Highcharts library can understand, but it should be clear from inspecing those objects where to get the data that interests us (date of datum, # of cases).\n", | |
"\n", | |
"In order to do this, we use `beautifulsoup` to get all scripts in the webpage, before feeding the tags' inner text through RegExes to extract the object literal. However, because the literal is a *JavaScript* object literal, and not directly JSON, we cannot use the `json` module to load it as a Python `dict`.\n", | |
"\n", | |
"To overcome this hurdle we'll use `demjson` which can parse JavaScript object literals as Python `dict`.\n", | |
"\n", | |
"**Note 1**: You can change the source of data by changing the input URL above, and the id of the data from the `NAME` constant below. For example, to model behavior of the French outbreak, use the input URL https://www.worldometers.info/coronavirus/country/france/ and `NAME = 'coronavirus-cases-linear'`.\n", | |
"\n", | |
"**Note 2**: Due to mishaps in the Chinese data, I chose to use worldwide data that excludes Chinese data. If you want to see how incorporating the Chinese data throws the modelization, change the `NAME` constant on the cell below to `'coronavirus-cases-linear'`." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import re\n", | |
"import demjson\n", | |
"from collections import ChainMap\n", | |
"\n", | |
"NAME = 'coronavirus-cases-linear-outchina'\n", | |
"DATA_QUOTE = re.compile(r\"'.*?'\")\n", | |
"DATA_QUOTE_KEYS = re.compile(r'([\\{\\s,])(\\w+)(:)')\n", | |
"DATA_RE = re.compile(fr\"Highcharts\\.chart\\('{re.escape(NAME)}', (.*?)\\);\", re.S)\n", | |
"\n", | |
"def get_charts(script):\n", | |
" for data in DATA_RE.findall(script):\n", | |
" print(data)\n", | |
" yield NAME, demjson.decode(data)\n", | |
"\n", | |
"scripts = [data.strip() for script in html.find_all(\"script\") for data in script.contents]\n", | |
"filtered = list(filter(lambda l: len(l) > 0, [DATA_RE.findall(data) for data in scripts]))\n", | |
"datum = demjson.decode(filtered[0][0])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"dates_raw = datum[\"xAxis\"][\"categories\"]\n", | |
"cases_raw = datum[\"series\"][0][\"data\"]" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### The extracted data\n", | |
"\n", | |
"We'll do further manipulation to transform the scrapped data into a proper `pandas.DataFrame` for convinience." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Cases</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>2020-01-22 00:00:00+00:00</th>\n", | |
" <td>9</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2020-01-23 00:00:00+00:00</th>\n", | |
" <td>15</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2020-01-24 00:00:00+00:00</th>\n", | |
" <td>30</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2020-01-25 00:00:00+00:00</th>\n", | |
" <td>40</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2020-01-26 00:00:00+00:00</th>\n", | |
" <td>56</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>...</th>\n", | |
" <td>...</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2020-04-03 00:00:00+00:00</th>\n", | |
" <td>1035023</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2020-04-04 00:00:00+00:00</th>\n", | |
" <td>1119814</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2020-04-05 00:00:00+00:00</th>\n", | |
" <td>1191193</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2020-04-06 00:00:00+00:00</th>\n", | |
" <td>1264296</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2020-04-07 00:00:00+00:00</th>\n", | |
" <td>1349179</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"<p>77 rows × 1 columns</p>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Cases\n", | |
"2020-01-22 00:00:00+00:00 9\n", | |
"2020-01-23 00:00:00+00:00 15\n", | |
"2020-01-24 00:00:00+00:00 30\n", | |
"2020-01-25 00:00:00+00:00 40\n", | |
"2020-01-26 00:00:00+00:00 56\n", | |
"... ...\n", | |
"2020-04-03 00:00:00+00:00 1035023\n", | |
"2020-04-04 00:00:00+00:00 1119814\n", | |
"2020-04-05 00:00:00+00:00 1191193\n", | |
"2020-04-06 00:00:00+00:00 1264296\n", | |
"2020-04-07 00:00:00+00:00 1349179\n", | |
"\n", | |
"[77 rows x 1 columns]" | |
] | |
}, | |
"execution_count": 4, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"from matplotlib import pyplot as plt\n", | |
"import pandas as pd\n", | |
"import numpy as np\n", | |
"import scipy.optimize as opt\n", | |
"\n", | |
"dates_ts = pd.DatetimeIndex([d+ \" 2020\" for d in dates_raw]).tz_localize('UTC')\n", | |
"\n", | |
"data = pd.DataFrame(cases_raw, columns=[\"Cases\"], index=dates_ts)\n", | |
"data" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Modelling the outbreak\n", | |
"\n", | |
"As the 3blue1brown video explains, the number of cases doesn't strictly follow exponential growth; rather, because there is a finite number of people, and because already infected people can't count as infected twice, the \"shape\" of the outbreak will follow a *logistic curve*.\n", | |
"The logistic curve $ L $ is defined as follows:\n", | |
"\n", | |
"$$ L\\left(x\\right) = \\frac{1}{1+e^{-x}} $$\n", | |
"\n", | |
"However, we can further parametrize the curve: we can \"move\" the curve left and right (and up and down, though because the \"default\" state is no cases, it only makes sense for our case to lock the \"up and down movement\" to 0); we can also \"scale\" the curve horizontally and vertically.\n", | |
"\n", | |
"We'll use `scipy`'s optimization library to provide us with parameters that best fit the input data - therefore we need to define our logistic curve function (also called *sigmoid*, as named below) in a particular way: First is the array of input data, then all remaining parameters are, well, the parameters of the curve to fit onto the data. Here are the signification of the parameters:\n", | |
"\n", | |
"- $ x_0 $: Horizontal position of the inflection point (\"middle of the curve\")\n", | |
"- $ c $: Vertical scaling (maximum number of cases)\n", | |
"- $ k $: Horizontal scaling (number of cases at the day of inflection point)\n", | |
"\n", | |
"$$ L\\left(x\\right) = \\frac{c}{1+e^{-k \\left(x-x_0\\right)}} $$\n", | |
"\n", | |
"The *inflection point*, as used above, is the day at which the rate of new cases will start to slow down - it is also theoretically the day where the maximum number of cases will be registered.\n", | |
"\n", | |
"### Implementation note\n", | |
"\n", | |
"Numpy will probably complain about overflowing integers during operations if we don't first normalize the data before sending it to `scipy` to fit the curve - therefore we need to employ a little normalization/denormalization trick to get Python (and `numpy`) to behave." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def sigmoid(x, x0, c, k):\n", | |
" y = c / (1 + np.exp(-k*(x-x0)))\n", | |
" return y\n", | |
"\n", | |
"y = data[\"Cases\"]\n", | |
"x=np.arange(0,len(y))\n", | |
"ymin = np.amin(y)\n", | |
"ymax = np.amax(y)\n", | |
"y = (y-ymin) / (ymax-ymin)\n", | |
"initial_guess = (np.median(x), 1, 1)\n", | |
"popt, pcov = opt.curve_fit(sigmoid, x, y, p0=initial_guess)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We can see the result of fitting the curve below. It should fit quite well to the raw data!" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"[<matplotlib.lines.Line2D at 0x7fb5a682e850>,\n", | |
" <matplotlib.lines.Line2D at 0x7fb5a682ed00>]" | |
] | |
}, | |
"execution_count": 6, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.plot(x,data[\"Cases\"]) + plt.plot(x, sigmoid(x,*popt)*(ymax-ymin)+ymin)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We generate differential data from the raw input number of cases in order to get a better sense of the outbreak" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/home/solarliner/.local/pipx/venvs/jupyter/lib/python3.8/site-packages/pandas/core/arrays/datetimes.py:1099: UserWarning: Converting to PeriodArray/Index representation will drop timezone information.\n", | |
" warnings.warn(\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"array([<matplotlib.axes._subplots.AxesSubplot object at 0x7fb5a60a5280>,\n", | |
" <matplotlib.axes._subplots.AxesSubplot object at 0x7fb5a60bdbb0>,\n", | |
" <matplotlib.axes._subplots.AxesSubplot object at 0x7fb5a60c9b20>],\n", | |
" dtype=object)" | |
] | |
}, | |
"execution_count": 7, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x576 with 3 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"rate = np.convolve(cases_raw, [1,-1], mode='valid')\n", | |
"grate = np.convolve(rate, [1,-1], mode='valid')\n", | |
"s1=pd.Series(rate, index=dates_ts[1:])\n", | |
"s2=pd.Series(grate, index=dates_ts[2:])\n", | |
"data = data.assign(**{'Rate': s1, 'Growth rate': s2})\n", | |
"data.plot(subplots=True, figsize=(6,8))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We can do the same for the curve - the generated data is respectively the first and second differential of the logistic curve.\n", | |
"\n", | |
"We chose to generate modelled data for 100 days, which shows enough of the fit curve." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"pred_off = np.arange(0,100)\n", | |
"pred_data = sigmoid(pred_off, *popt) * (ymax-ymin) + ymin\n", | |
"pred_range = pd.period_range(data.index[0], freq='D', periods=len(pred_off))\n", | |
"future = pd.DataFrame(pred_data, columns=[\"Cases\"], index=pred_range.to_timestamp())" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.axes._subplots.AxesSubplot at 0x7fb5a5d9e700>" | |
] | |
}, | |
"execution_count": 9, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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brjhBk477TTOPPNMxo0bxzvvvFOv26g4gu+SJUu4/PLL663+JUuW8MUXX9RbfcY0ZTtzCnhw3jpG9o7jN1cMCXVzQsoSSAipKldeeSXnnXce27dvZ9WqVcydO5f09PTjyvp8vlpvpz6GgK9u+5ZATGtR7PNz12trEIG/XT+yxYyqW1ut+9WH2KeffkpUVBR33HF0xJc+ffpw9913A/DSSy8xZcoUJk6cyKRJk1BV7r//foYNG8bw4cN54w3vDOo777yTBQsWAHDVVVfxgx/8AIBZs2bxy1/+stIh4A8fPszVV1/NoEGDuPHGG/G6nI41YcIE7rvvPpKTk/nrX//Ke++9x1lnncXIkSO58MILycrKIi0tjWeffZYnn3ySpKQkli1bRnZ2Nt/73vcYPXo0o0eP5vPPP2/Q99GYxvLYB1tYn5HPn79/Bj07tQ11c0KudVztUgOPf/U4W3K31GudgzoP4oExD1S5fOPGjYwaNaraOlavXs26devo3Lkz8+bNY+3atXz99dfs37+f0aNHc9555zF+/HiWLVvGlClTyMjIIDPTu7B/2bJlXHfdddx+++3HDAG/ZMkS1qxZw8aNGzn11FM555xz+Pzzzzn33HOP235JSQkpKSkA5OXlsWLFCkSEF154gT/96U888cQT3HHHHbRv356f//znANxwww3813/9F+eeey67du3ikksuYfPmzbV6D41pKhZtyuKfn6dx2zmJXDL0lFA3p0mwBNKE3HnnnXz22WdERUWxcqV3lvJFF11E586dAfjss8+4/vrrCQ8Pp1u3bpx//vmsXLmS8ePH89RTT7Fp0yaGDBlCXl4emZmZLF++nJkzZ5KTk3PctsaMGUPPnt61nUlJSaSlpVWaQK699try+fT0dK699loyMzMpKSmhb9++lb6Of//732zatKn8+cGDBzl8+DDt27e+0xxNy5BbUMJDb69jSPdYHrx0UKib02RYAnGq21NoKEOHDmXevKNnPT/99NPs37+f5OTk8li7die+7WWPHj04cOAAH374Ieeddx65ubm8+eabtG/fng4dOlSaQKKjj44QGh4eXmUfR/D27777bn76058yZcoUlixZwqOPPlrpOoFAgBUrVhAT07ouqjIt1yMLNpJ/pJSXp59FdETLH+OqpqwPJIQmTpxIUVERzzzzTHmssLCwyvLjx4/njTfewO/3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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"def d_sigmoid(x, x0, c, k):\n", | |
" xx = x-x0\n", | |
" return c * k * np.exp(-k * xx) / (1+np.exp(-k*xx))**2\n", | |
"def dd_sigmoid(x, x0, c, k):\n", | |
" xx = x-x0\n", | |
" a = c * k * k * np.exp(-k*xx) / (np.exp(-k*xx)+1)**2\n", | |
" b = 2 * c * k * k * np.exp(-2*k*xx) / (np.exp(-k*xx)+1)**3\n", | |
" return b-a\n", | |
"s1=pd.Series(d_sigmoid(pred_off, *popt)*(ymax-ymin), index=pred_range)\n", | |
"s2=pd.Series(dd_sigmoid(pred_off, *popt)*(ymax-ymin), index=pred_range)\n", | |
"future = future.assign(**{'Rate': s1, 'Growth rate': s2})\n", | |
"future.plot()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Graphs\n", | |
"\n", | |
"Here are more graphs comparing the \"real\" data to the fit curve.\n", | |
"\n", | |
"First the number of cases" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.axes._subplots.AxesSubplot at 0x7fb5a5d334f0>" | |
] | |
}, | |
"execution_count": 10, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"ax = data[\"Cases\"].plot(style='r', label=\"Cases\")\n", | |
"ax = future[\"Cases\"].plot(style='b--', ax=ax, label=\"Expected trend\")\n", | |
"ax" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Next, the rate of new cases every day. Fluctuations in the data can hide the overall behavior." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.axes._subplots.AxesSubplot at 0x7fb5a5d07400>" | |
] | |
}, | |
"execution_count": 11, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"ax = data[\"Rate\"].plot(style='r', label=\"Rate\")\n", | |
"ax = future[\"Rate\"].plot(style='b--', ax=ax, label=\"Expected rate trend\")\n", | |
"ax" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Finally, the \"growth rate\" as the change of new cases every day. Again, fluctuations in the data hide the general trend." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAEECAYAAAA72gP/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nO3deZyVZf3/8deHmWFT2RGRJVQIxV0QcQ3BBfxZYJpplmR+xdJ2sywrK7W0vmWZ5lKamH0zA1FSDBG3XFAWdxHBBRhABlkGWYeZ+fz+uO7j3AznzJyZOSvzfj4ex3POdd/nPtc4w/mcz+e6r+s2d0dERKQxbfLdARERKQ4KGCIikhYFDBERSYsChoiIpEUBQ0RE0qKAISIiaSnNdweypUePHj5gwIB8d0NEpKjMmzfvQ3fvmWzbLhswBgwYwNy5c/PdDRGRomJmS1JtU0lKRETSooAhIiJpUcAQEZG0KGCIiEhaFDBERCQtChgiIpIWBQwRKWy1tfnugUQUMESkcK1YAR07guZUFQQFDBEpXEuXwrZt8N57+e6JoIAhIoVsy5ZwX12d334IoIAhIoVMAaOgKGCISOFKBIzt2/PbDwEUMESkkCnDKCgtDhhm1s/MnjCzN83sDTP7VtTezcxmmtmi6L5r1G5mdqOZLTazV83siNixJkT7LzKzCbH2oWb2WvSaG83MWtpvESkCChgFJRMZRjVwmbsPAUYAl5rZEOAKYJa7DwJmRc8BxgKDottE4BYIAQa4CjgKGA5clQgy0T4XxV43JgP9FpFCp5JUQWlxwHD3le4+P3r8EbAA6AOMAyZFu00CxkePxwF3ezAb6GJmvYFTgZnuvtbd1wEzgTHRtk7uPtvdHbg7diwR2ZUpwygoGR3DMLMBwOHAC0Avd18ZbfoA6BU97gMsi72sPGprqL08SXuy959oZnPNbO7q1atb9LOISAFQhlFQMhYwzGx3YArwbXffEN8WZQaeqfdKxd1vd/dh7j6sZ8+kVxgUkWKiDKOgZCRgmFkZIVj83d3vj5pXReUkovuKqH050C/28r5RW0PtfZO0i8iuTgGjoGTiLCkD7gAWuPvvYpumAYkznSYAD8baz4/OlhoBVEalqxnAKWbWNRrsPgWYEW3bYGYjovc6P3YsEdmVqSRVUEozcIxjgS8Br5nZy1Hbj4DrgPvM7EJgCXB2tG06cBqwGNgMXADg7mvN7GpgTrTfL9x9bfT4EuAuoAPwSHQTkV2dMoyC0uKA4e7PAKnmRYxOsr8Dl6Y41p3AnUna5wIHtaCbIlKMFDAKimZ6i0jhUkmqoChgiEjhUoZRUBQwRKRwKcMoKAoYIlK4lGEUFAUMESlcChgFRQFDRAqXSlIFRQFDRAqXMoyCooAhIoVLGUZBUcAQkcLkrgyjwChgiEhhqqoKQQMUMAqEAoaIFKZEdgEqSRUIBQwRKUzxgKEMoyAoYIhIYVLAKDgKGCJSmFSSKjgKGCJSmBIBw0wZRoFQwBCRwpQIGHvsoQyjQChgiEhhigcMZRgFISMBw8zuNLMKM3s91vYzM1tuZi9Ht9Ni235oZovNbKGZnRprHxO1LTazK2Lt+5jZC1H7P82sbSb6LSIFTAGj4GQqw7gLGJOk/QZ3Pyy6TQcwsyHAOcCB0Wv+ZGYlZlYC3AyMBYYA50b7AlwfHWsgsA64MEP9FpFClQgYnTqpJFUgMhIw3P1pYG2au48D7nX3be7+HrAYGB7dFrv7u+5eBdwLjDMzA0YBk6PXTwLGZ6LfIlLAlGEUnGyPYXzdzF6NSlZdo7Y+wLLYPuVRW6r27sB6d6+u174TM5toZnPNbO7q1asz+XOISK7FMwwFjIKQzYBxC7AfcBiwEvhtFt8LAHe/3d2Hufuwnj17ZvvtRCSbdJZUwSnN1oHdfVXisZn9GXgoeroc6BfbtW/URor2NUAXMyuNsoz4/iKyq1JJquBkLcMws96xp2cAiTOopgHnmFk7M9sHGAS8CMwBBkVnRLUlDIxPc3cHngDOil4/AXgwW/0WkQKxZQu0aQMdOyrDKBAZyTDM7B/ASKCHmZUDVwEjzewwwIH3gYsB3P0NM7sPeBOoBi5195roOF8HZgAlwJ3u/kb0Fj8A7jWza4CXgDsy0W8RKWBbtkCHDlBWpgyjQGQkYLj7uUmaU36ou/u1wLVJ2qcD05O0v0s4i0pEWotEwCgtDQHDPSwTInmjmd4iUpjiGQZATU1++yMKGCJSoOIZBqgsVQAUMESkMClgFBwFDBEpTPVLUjpTKu8UMESkMCnDKDgKGCJSmOoHDGUYeaeAISJNt3Fj9t+jfklKGUbeKWCISNO8+SZ06QKvvtr8YyxdCmefDZs2pd5ny5Ywy1slqYKhgCEiTfPWW2FOxNtvN/8YTz4J//oXvPFG6n006F1wFDBEpGkqKsL9hx82/xiVleF+zZrU+7Rk0LuyEjZvbn7/JCkFDBFpmkTAaOjDvjGJgLG2geuutWTQ+2tfg0MPbX7/JCkFDBFpmkwEjA0bGj5GTU0IEM0d9F63LoyzSEYpYIhI0ySuZpmJklSqDCNxLYzmlqTWrYOuXRvfT5pEAUNEmiaTJalUx0gWMJpSklq/XgEjCxQwRKRpch0wmluSUsDIOAUMEWmaTJ4llY2SlLvGMLIkIwHDzO40swozez3W1s3MZprZoui+a9RuZnajmS02s1fN7IjYayZE+y8yswmx9qFm9lr0mhvNdBUVkbyorq7LCnKdYaRbktq8OeyrDCPjMpVh3AWMqdd2BTDL3QcBs6LnAGMJ1/EeBEwEboEQYAiXdj2KcHW9qxJBJtrnotjr6r+XiOTCmjXhG/yee4ZxgubOvs5mhrF+fbhXwMi4jAQMd38aqP+bHwdMih5PAsbH2u/2YDbQxcx6A6cCM919rbuvA2YCY6Jtndx9trs7cHfsWCKSS4ly1AEHhPuG5lE0JJuD3uvWhXsFjIzL5hhGL3dfGT3+AOgVPe4DLIvtVx61NdRenqRdRHItETCGDAn3zSlL1dSExQtLS0PgSJY5tGTQOxEwNIaRcTkZ9I4yA8/2+5jZRDOba2ZzVyfOFReRzKmfYTQnYCQm7fXvH+4TH/BxLSlJKcPImmwGjFVROYnoPvpLYznQL7Zf36itofa+Sdp34u63u/swdx/Ws2fPjPwQIhJTP2A050ypRDlq333DfbKgo5JUQcpmwJgGJM50mgA8GGs/PzpbagRQGZWuZgCnmFnXaLD7FGBGtG2DmY2Izo46P3YsEcmliorwAT5wYHjenAyjfsBINg7SkpKUBr2zpjQTBzGzfwAjgR5mVk442+k64D4zuxBYApwd7T4dOA1YDGwGLgBw97VmdjUwJ9rvF+6e+Eu6hHAmVgfgkegmIrlWUQE9e4YbNC/DSJSk9tkn3DeWYVRVhcdNLUl17tz0vkmDMhIw3P3cFJtGJ9nXgUtTHOdO4M4k7XOBg1rSRxHJgETA6NgR2rVrWYaRbsDwaPizKSWpTp2gpKTpfZMGaaa3iARPPRU+xBMZQDIVFWEOhhn06JGZgNFQSap9++YNeqsclRUKGCISPPMMvP8+LFqUep9EwADo3r1lg979+oUsIFWG0b59CExNHfTWwoNZo4AhIsGyaBrUihWp94kHjJZmGF26QLduqTOMDh3C4+bMw9AcjKxQwBCRoLGAsXlzmHAXzzCaGzDKykIGkeoY8YChklTBUMAQkaCxgJGYDJuJklTnzqHc1K1b4wGjTZtwa8qgtwJGVihgiEjQWMBITNqLl6TWroXa2qa9TyJgQAg6jZWkIGQZTZmHoYCRFQoYIhJKTYkJb+kGjO7dQ7BIjEmkKx4w0skwIASMdDKMqqpQOtMYRlYoYIhIXXZh1rSSFDS9LNWcDKOsLL0MQ8uCZJUChojUBYz9929aSQqaPvBdP2Bs2gTbtu24T3NLUgoYWaWAISJ1AeOoo0JgSFb+qagIM7x32y08T2QYTQ0YGzbsWJJKdozmlqS0jlRWKWCISAgYZnDkkeH5ypU77xOfgwGZK0nBzmUplaQKkgKGiISA0bs3fOIT4XmyslT9gNGcklRtbfMzjKYEDA16Z4UChoiEgNGvH+y9d3ieTsDo1Cl8kDclYGzcGBYT7NQpPG9KhpFOSUoZRlYpYIgILF3a9ICRmHjXlJJU4hTc+iWpTGcYChhZoYAh0tq512UYPXuGBQHrBwz3nQMGNH09qfoBI1lJyr1lg94dO0Lbtun3SdKmgCHS2q1bFya79esXluDo3XvngFFZGT6w6weMpq4nVT9gJK6rES9JJU6xbe6gt8YvskYBQ2RXtHlz+kt2JE6p7dcv3Pfps3PAqD8HI6Gp60nVDxjJ1pOKXzwpoSklKZWjsibrAcPM3jez18zsZTObG7V1M7OZZrYouu8atZuZ3Whmi83sVTM7InacCdH+i8xsQqr3E2n1Fi6EAQPgggvS279+wNh779QBI3Fp1oSWlqRg59neqQJGuoPeChhZk6sM40R3P8zdh0XPrwBmufsgYFb0HGAsMCi6TQRugRBgCNcJPwoYDlyVCDIiErNiBZx6avgQv/tumDWr8dekGTCqKWHzHr12nJSdKEklLqPamFQBo7EMI92SlBYezKp8laTGAZOix5OA8bH2uz2YDXQxs97AqcBMd1/r7uuAmcCYXHdapKCtXw9jxoQP36efhv32g0sv3XnZjfqWLQvf4Hv1Cs/33hvWreOjii385jdw1lnQ/39OpoxqdjvmUP74x7DbqlUwZurF/KjqKp6btTm9mJEsYNS/iFJLS1Iaw8iaXAQMBx41s3lmNjFq6+XuiamkHwDRXyp9gGWx15ZHbanaRQRCUBg/HhYsgPvvh2OPhZtuCuWp3/624dcuWxbGLUpKePVVeHJDqASXfbiSK6+El16CY/ss4WdcxXXXVnPCCeFlFRWwamsnfsPlHHvybhxzDEyZAjU1DbxXZWU4C6tjx7q2dDMMlaTyLhcB4zh3P4JQbrrUzE6Ib3R3JwSVFjOziWY218zmrk6srCnSGvzjH/DUU3DHHXDyyaFtzJiQHlx9Nbz3XsqX1ixdzgMdv8Cxx8Khh8J3pxwDQPs1y1m9Gt55B/7xqVu5qusf+cGPShk+PLzu4IPhpT8+y3q6cNP3l1JREd5u8eIG+pmY5W1W15YY9E6kKM3NMGpqwvEVMLIm6wHD3ZdH9xXAVMIYxKqo1ER0H42osRzoF3t536gtVXv997rd3Ye5+7Ce9QfnRHZlkyeHZT2+9KUd22+4IXyj//a3k75s6lQ44Pk7OGPBL1mxIuw+447on9aKFXWVo3nzYNCgnQ/QvTu7sZlLRy3g7bfhv/+FwYPDpiefTHKiVnwdqdgxPr6OBTR/0DtR7lLAyJqsBgwz283M9kg8Bk4BXgemAYkznSYAD0aPpwHnR2dLjQAqo9LVDOAUM+saDXafErWJSGUlPPoonHnmjt/cAfr2DeMY//53+FAmfBFPDGvUbK+lc/Ua/vmZv7NoUYgrPQ/eK2xMDHyvWQMvvBAylvpi60mVlMBxx4Wnc+fCiSfC2LH1zrpNFjDqT95r7qC31pHKumxnGL2AZ8zsFeBF4GF3/w9wHXCymS0CToqeA0wH3gUWA38GLgFw97XA1cCc6PaLqE1EHnoofPs+88zk2wcPBne8fDn//jcccgj8+tdh05knrOZFP5KzT1lPaWm0f5cu0L59XcB49NFQLjrttJ2PnWJpj6FD4dZbw9j7qFGxoJEqw4C6ge/mlqS0LEjWlTa+S/O5+7vAoUna1wCjk7Q7cGmKY90J3JnpPooUvSlTwplNI0Yk396/P3MYxuVnduWpl+GTnwxBA8DK651SCyFLiZ9aO316+FAfNoyddO0a9q83ec8MLr4YBg6E00+H0aPDGb49Kiuhf/8dj1E/6DS3JKWAkXWa6S1SzDZuhEcegc9+NizrkcR1jxzKcObw5jvtuflmeP11GDcu2lh/DkZCImDU1sJ//hPKUSUlOx+8pCR8QKeYvDd6dKiGLVoUDpPVkpQunpR1ChgixeyRR2Dr1p3KUevX133pP/mzu3Ml17D4OzdzySXhs/djjQWMuXPDgcaOTd2HT3wCZs9OOXnvpJPg7bfhi1+kZSWpdDMMjWFkjQKGSDGbPDks13H88UAY1/7DH0Ip6PLLwy5Dj+3ANd1/T6eKJOe7Ll0axisSH9oJiYDxyCOhvnTqqan78NWvhrOonngi5S59+wLuPFF5BJfNOWfH2JLpQW9lGFmjgCFSrLZsgYcfhjPOoNZKuPdeOOCAcKbTYYfBN74R27d//7psIi6xrHn9s6v23juUu/75Txg+vO5sqGTOPx/22guuuy71PgCbNvF07bH87sXjuOWWWHu7diFgXXNNSEPmzQsZRWlsiDXdQe+ysh0nBUpGKWCIFKtHH4VNm+Css7j6ajj3XNhjjzBWMHMmHHFEbN9+/UI2Ud/SpTsPQkPdhZQWLEh+dlRc+/bw3e+GN503L/V+lZX8hKs5/eAlfOtb8MwzsW1PPQVf+Uo44+vBB3f+0E+3JJUYhJesUMAQyZWZM5Nfya4Z3OGxmxfyyh7HwciRfOUr8Le/hc/rU09N8pmZLMNwD0uHJJuQ1ye28k5D4xcJF18cxiauvz71PpWVtMH527fmss8+YVb4qlXRtgMPhJtvhpUrww9y++07vjbdQW+NX2SVAoZILlRWhg/eb31r521vvx2K/PPnN3oY91CFOuYYOHnm97m+8y+hrIx+/UI1J9mJTEDIMNavh48+qmv78MPwrXz//XfeP5Fh9OwZJlU0plOnMEFw8uRwSlQyGzYA0GXvjtx/f+jOX/5Sb58OHcIP8vnP79iebklK4xdZpYAhkgtPPRWmWD/4INRf5+yPf4Tly8OHbQMefDB8dp9+Oqwsr+EWvspfL52b3vsnyk7xLOOtt8J9Yi2PuETAGDMm5em6O/nmN8N4xG9+k3x7bKXagw6COXPgRz9K79CUlYVTfBu6KJQCRtYpYIjkwuOP19Xh//a3uvaNG2FStNJ/kmtXrF1b98X69dfDOPedd8KiGx7iq9xGuxOOSu/9E6fNxscxFi4M98kCxu67w403NuETnbA8+oQJ4eeJliHZQb2lzQ8+OJTOliyB8vJGjp0YAG8oy1DAyDoFDJFcmDULRo6Eo48OdZjEeaX/93+hTHTKKWHOw7p1uMNzz4XP3r171zLl03dBTQ3f+x688Ua4kF7ZnOfCt+4dRrYbkCzDWLgwDFgnG/SGcJpVsnJVQw47LASLZBP5klwLY9u2UF674IJGriibCBgNDXxrDCPrFDBEsm3VqpAejB4N//M/4cyj558PQeNPfwpriv/4x2yvbcP131zOwQeHy1lMnQoX9n+MQ/9zHTz3HO3axapDzz0X6lPt26fXh969w4vjGcZbb4UB75QDH82QYm0pIGnAaNcOfvpTeOwxuO22Bo6bmG2YKsNw19X2ckABQyTbEhPaRo2Cs88O5Z6//AVmz+aDVz5g1onXwIgRlO7Wnrse6kHnzuEkoRVvbeDm8nHsz8IQPRKqqkI2cvTR6fehtDSc+VQ/w0hWjmqJRMCot7YUEAKGGey22w7NEyeG2eBXXNHASWSNlaQ2bQpjRPVnkUtGKWCIZNvjj4cPsiOOwHfbnTdO/S7/e89eHH96J/ZmBWf+9f9R5WXYyE8xp8dYnn0WLroIdp85NSz70b8/PPBAXRnrlVdCe1MCBuw4F6OqCt59t+klp8bEljvfSWVlOJuq3iC6GdxySyhPfec7KY7bWElq48Zwv/vuTe+zpE0BQyTLVjz6OlXHj4bSUq6+Gg6a8nMu3/5LNqyt5mfDp/PMMxYqLiedxO6LX677UP/732GffeDHPw5XzHvttdD+3HPhvjkBI5FhvPNO+EaerQwjVcBIkQEMHBh+zD32SJFENFaS2rQp3NfLXiSzFDBEMqi6OiQAt90WBnIH77edPkue49lPfAEIl92+/TZn2f4n8wqH8dM79+Ggg6KJdiedFA4ya1aozcyaBeedB5/5TNjhgQfC9uefDx/+ffs2rXOJyXuJCXuQ+5JUAyWjK68MlbrSZBddSKckBcowsiyr18MQKXjLl4d1kOoP/H7wQfjKO3JkWDo8yfpEa9bAm2+GM5cOPxyOOgpefhmOPDJs79EDRvRZyUT+wMDxE4FwHYpDDjEYcDm8cEKY4Zxw4IHh1NTHHguniNbWhoDRq1c4leiBB8II8XPPNT27gBBktm0L80AamoPREu3bh/9XyTKMNWvqFhpMIjE7fd68MEfjq1+NbUxkGKlKUsowckIZhrReM2eGpbkvvnjnbZddht9xBx986Xu80PN0Xvvcz+Ff/2LL03M4YUQVvXo5PXrACSfA175W9+X/oP4buOe2TbzzDlRUwL8P+hGX7XkP/UZ/csfjn3IK/OQnO7aZhSzjscfgnnvCBYsSYwzjx8NLL4VgsWxZCCBNlTh9dunSkGH07h3GFDKtR4/kAaOiIgS/Rtx8czijd8GCWGNjGUZiDEMBI6uKJsMwszHAH4AS4C/u3sjSmLLL2rw5zJx+8slw+bjzztvx9NKqqlC2Wbs2zHTbsiWcgnrYYUBYoWL1s2+z5nO/5MOST7Pqjhq69nuF8VeFi0OefvQaFsz+BctL7mJbTRlshvOm3ss9k8+mPbA7D/Pp3SoZ8r2RDBndmyFDonlxS5fSfuRIzlu1KiwZe/nlYcB71Kj0F8Q76aQwdlFRATfcUNc+blw43g9+EJ43N8OAEHDeeivz2UVC9+7JS1KrVqUVMK6/PpwU9o1vhJhuRuOD3sowcqIoAoaZlQA3AycD5cAcM5vm7m/mt2fSJO7hg6S8PNy6dUs6l6C6OlROtm0Ln/3btkH1xq3sN+8+uOceXntyDcu392RLm93YXFvOpu8soP1Jx3H+xR1gyhR+d8+evLplIJV0ZgO9qKQz+/I2913yZ/jlLznu6I68tuCTQN31Gz71q9mM/94maNeO7m89w4iOTp+J/fnEwJCE7P+JceCvYEuWMP39d+BXv4K/VsG5j0L/I0Jpa9SoEKTGjIFf/jIs+fHRR6E9XaOjKxe3aQPnnFPXPmhQKFk980z4/xUFvyapn2HUX68pU7p33znD2LYtjGHsuWejL+/ZM6x0/vWvw7/+Fc5E1qB3YSiKgAEMBxZH1wjHzO4FxgEpA8aKFXVfxhKGDoWz518BW7bwo9mfocZKoY1Fa9Q4x/R6h3GfXEB1STt+9MxYcKC2BmpqwWs5sd87jN3vbTbVtOfnz54EXgs1teFsx5I2jNl3EaP3e5+11Z341fMj8TYlgIfX19YyfuDrHDegnJWbO/O/s48L35aqqsLNnXP2f5kj9/mQ96r6cOOLI8Ad9+j1NTVcMOAJDu1ezgIO4Na3R+Ht2kFNDV5VDduruGS/RznA3+SlJd3487Ix0KUL3rUb3qUrbK/i+4fPZN8Nr/Dsoj3565ITcWuDWwnerj3evgPXnLeAvrVLmfGocfe8IfjWKmo77IZ37Ehtu478aeR99KxeyeQ3h3D3kk9RW9qW2rK21LYppba6limjb2GPqjXcumQsf3vvWGpK2oWub9pK9eYq5vlQyrZ+xE/5OZOYwHbKqGYD20uqKCk1Pjz7UtiyhQuev4R7lp+4w++uh21ktU+AgQP5af/7eeCdgyExM/gjGDD1Pc6fui/sthvP9XicF7ccROcuRqc9YM9OtfTfsAFuvRXuv58ry85ja9sN9Pj15XQ/ahB7LplDr3NGw48nwoABTFr/bbj/fjgjfmm6DsAhdRfDHjs2fLiPGgV33RX+2CoqwlfixGDGlVeGLGjMmPT/0vv1C+/Rv38YW4kbPz4MmAwbBm3bpn/MhO7dQ7CZPz+MkWQrw+jRI6z3EVdREe7TyDAgjF/ccUdYNf2002D3dAe9FTCyqlgCRh8gvjZzObDTIjpmNhGYCFBScjg33rjj9i9+Ec5+5kH44ANuWn812ynbYfv2tm8w7onbqK2CP27/CcaOl5zs8Ppcxpbdxtbqzty07cod3xtnz9ceZ7TdwEdVvfkT3/q4PWHgnH9wHLeytnZ/buNrYVusVHH4B49w5ON3U7HpIO6svSh27PCfUav+waHtH2dlRQV3b5u4w/EN54z3fscBey2gnE/zrw9PxFZtB3cMx2jLhY/dyb7d36O87Rd5pOKA0O6O1VZjOBvn/hhYyKo9LuWF7WdjpW1os3E7bdZXYdu3U7X8X9BlE5W1vVm2tiMlNdtpU/MR5rWUWC01U6dBp1pKV3ejw6aelFBDCTWUtm1DSefd8XMvhv36MXDxMZz4TkfKqjZR9uESSiuW0259Bfz3v9ChA2e3fYBDOj9L2w0f0ta30a6khj2OPhCueRJOOIFr3jS+vyEsbNqxY/iM2K28CiqmwejRTE56AZ1RMPcFuPhiPv/yDSEgjIuW9R5xJDw1IVyqrmPHsD74+PFJjhEzcGDo7+jRcMYZoRMzZoRgASEDePjh8GUk3cX7EmbNSh4Qxo+Ha69tXjkKwt9a//4hqEFuS1KJgJFGhgHhHISbbw4VvbIyVJIqFB59iy3kG3AWYdwi8fxLwE0NvWbo0KGeV9XV7lu2uG/d6l5Ts+O22tqwvSU2b3ZfscJ97Vr3qqrU+1VUuP/3v+6vvuq+YUPyfWpr3detc3/7bffVq5vWj9pa9+3bd26vqnIvLw99rK1t2jETtm93X7o09C1TqqtDv+qrrHTv29e9rMx94cL0j7dihft557k//XTm+phKba3773/v/v77zT/G6NHuoTjo/u67metb3E9/6m6249/4ww+H93z++eYd8/HHw+uffDL59quvDtu3bWve8eVjwFxP8blaLBnGciB+lfq+UVvhKilJvUaPWcvX7+nQYcdrHqfSs2e4NcQsLNrWnIXbzJKfOF9WtuNFeJqjtLRuoDZTSkqS96tTp3B20sqVYSA9Xb17hzOacsEs+fU0miIxjtGuXepFB1uqR48Qktatq5v53cSSVNxDD8F9Nw1hEmANZRhlZc0r1bVyW7fC4sVhWCuRqKVSLAFjDjDIzPYhBIpzgC/kt0uyyxk8OHtlmkKRCMCZXnQwLj7bOxEwEpfWS7MkFVdeDn+b0YsxnMsXGhrDUDmqQXK/iG0AABNESURBVO7hfId588L/029+M7R/+tPhuxI0/t2yKOZhuHs18HVgBrAAuM/d38hvr0SKUCKryPQaUnHJZnuvWhUNNjX9Q/2ii+DIIZv4Lr/7eMHbnWzcqICRwpQp4RyNPfeEAQPgzDPh+9+vGw667LKwyv68eWHFmIYUS4aBu08Hpue7HyJFLZFhZDOTSrYAYUVFs7ILCInQLVeWc+R5g/jJ3YO4MdnZwMow2LYtTD+aNSvc7r8/nGi3fHmYevOZz4QzRYcNCxevSpyp3JST+IomYIhIBnzyk+GsrXQvvNQcyRYgTHPSXipDD63mEv7EzY9cytcWwAEH1NuhFQeMBQvCKjaPPhoSrTZtYPjwEKP32itMgEyUn1pKAUOkNRkwIIxu7rdf9t4jWUmqoiK8d3OVlnINP+a4Sw9n//2P3Xl7KwoYFRWhzDRoUFgYoGNHePHFMG1gzJiw/Fl8jcd0FxlIhwKGSGszcGB2j7/77uFspfoZxlFpXn88mdJSulDJOUe+A3YsmzfXWw9y06a6QLUL2roVpk2Dv/41ZBK1tWEJtJNOCisRLF2a2cCQSlEMeotIETHbcXmQ2tqwQm4LSlLxpUGmTw8fkokV2oFdPsMYPTqs5PL662FRgVdfDRedSshFsABlGCKSDfHZ3mvWhKDRzEFvYIeZ3ocfHlYIufBCePrpaCL9LhQwampCNnH33WEdyo4d4Yc/DFNnRo3K3tnQ6VCGISKZF1/iPDEHI0MZRu/e8Pvfw7PPhuVDgF3itNotW0LWMHhwuATL/PlhQh3A6afDySfnN1iAAoaIZEO8JNXEdaSSqrf44PnnhwHeK66ISlNFnmEsWxbKbJdcEv7XTZ4c5kQk1rosFAoYIpJ58ZJUJjKMeosPmsGf/xzKNY88XBtGhYssYGzYULcOZN++8OUvh8u8zJ4dJtclvVRtnhVgl0Sk6HXvHq4N4t6idaQ+luR6GH37hjkIPdptgssomoCxZQvcdBNcd114vGJFWMbt17/Od88apwxDRDKvR4/w4b5hQ8gwSkubt7hlQorrYfToAWzaxGyOYto7B+78ugJSXR2yokGDwtIcw4eHjKIl/1tyTQFDRDIvPnkvsSxIU68LEpcY7U2yWq1v3MQPuJ4vTjqJRYua/xbZtnBhuDBU//7hulqPPAJHHpnvXjWNAoaIZF58eZBVq1o24A11y+gnWa3WNm/ib3yJtmXOaafVVcAKwZw54Wq9EK6wO3duOLvrU5/Kb7+aSwFDRDIvvgBhC9eR+lhpafIr7m3aRH+W8dDP57N8eViZdcOGlr9dSyxZAl/4Qig73XhjuDQIwOGH526SXTYoYIhI5sUzjBasVLuDsrLk1/TeuBGAEcOqmTwZXnklNj8jxzZsCKf6Dh4MU6eGy7ovWgRdu+anP5mms6REJPPiYxiZzDCSBYzY9bxPOx6eeSZ/YwNbt4bJd5//fLj8et+++elHtijDEJHM69IlDHK//374FM1ySQr4+LTaESPCGPny5TBuXDhtNVuqq+Guu0KAcA+J1LvvwqRJu16wgCwGDDP7mZktN7OXo9tpsW0/NLPFZrbQzE6NtY+J2hab2RWx9n3M7IWo/Z9mpgv3ihSyNm2gWzd4883wPJslqXoBI2HhwnAhoSOPDIPNmbR9e1g5dvBguOCCMCs7MU9xF140N+sZxg3uflh0mw5gZkMI1+Q+EBgD/MnMSsysBLgZGAsMAc6N9gW4PjrWQGAdcGGW+y0iLdW9e13AyEWGsfvuOzSPGgXPPRfizPHHw89+9vFwR4ssWBCuQ/WVr4REatq0cDZUY9fD3hXkoyQ1DrjX3be5+3vAYmB4dFvs7u+6exVwLzDOzAwYBUyOXj8JGJ+HfotIU/ToEepCkJcMA8JaTC++GC5P+vOfwy9+0fS33b4dHn8cZswIz/fdFw49NASKuXPh058u7jOfmiLbg95fN7PzgbnAZe6+DugDzI7tUx61ASyr134U0B1Y7+7VSfYXkUIVr81ke9C7rKxu+ZB69twT/vlP+M53woc9wAMPhLbTTgvZR9euIUFJzA986aUQDJ54AqZPh8rKMI/ilFPCMuMPPNDyH6cYtShgmNljwF5JNl0J3AJcDXh0/1vgKy15vzT6MxGYCNC/f/9svpWINCYeMDJRr2moJJXGOlIjRtQ9Xr06BIN7761rMwvxqE0b+O1vw7UoevQIS41/5jNhefHWkkmk0qKA4e4npbOfmf0ZeCh6uhzoF9vcN2ojRfsaoIuZlUZZRnz/+v25HbgdYNiwYZ7mjyEi2ZCYvNetW8pv/03S0DyMJi48eNFF4QJML70UrjuxcWNYCDCxeskvfgHXXBOW8WjJiia7mqyVpMyst7uvjJ6eAbwePZ4G/J+Z/Q7YGxgEvAgYMMjM9iEEhHOAL7i7m9kTwFmEcY0JwIPZ6reIZEgiw8hEOQoaLkk1Y6XaNm1g6NBwqy9RupIdZXMM49dmdhihJPU+cDGAu79hZvcBbwLVwKXuXgNgZl8HZgAlwJ3u/kZ0rB8A95rZNcBLwB1Z7LeIZEIiYGRiwBtaXJKSlstawHD3LzWw7Vrg2iTt04HpSdrfJZxFJSLFItMZRkNnSSlg5ISqcyKSHYkxjFxkGPXmYEh2KGCISHYow9jlKGCISHb07QudOsHBB2fmeBke9Jam02q1IpIdnTqFpc3bZmjpNw16550ChohkT7t2mTtWBudhSPOoJCUixSFZSaqmJiyfroCREwoYIlIckpWkNm8O9woYOaGAISLFIVlJKsXS5pIdChgiUhySZRgNLG0umaeAISLFoaEMQwEjJxQwRKQ4JBv0VsDIKQUMESkOyUpSiWuuKmDkhAKGiBQHlaTyTgFDRIqDBr3zTgFDRIpDWVmYqOexi2nqtNqcUsAQkeJQGq1kVFNT16YMI6cUMESkOCQCRrwspYCRUy0KGGb2OTN7w8xqzWxYvW0/NLPFZrbQzE6NtY+J2hab2RWx9n3M7IWo/Z9m1jZqbxc9XxxtH9CSPotIkSorC/fxge9Nm0J7YptkVUszjNeBzwJPxxvNbAhwDnAgMAb4k5mVmFkJcDMwFhgCnBvtC3A9cIO7DwTWARdG7RcC66L2G6L9RKS1SWQY9QOGsoucaVHAcPcF7r4wyaZxwL3uvs3d3wMWE67JPRxY7O7vunsVcC8wzswMGAVMjl4/CRgfO9ak6PFkYHS0v4i0JslKUlraPKeyNYbRB1gWe14etaVq7w6sd/fqeu07HCvaXhntLyKtSaqSlAJGzjR6ASUzewzYK8mmK939wcx3qfnMbCIwEaB///557o2IZFSqQW8FjJxpNGC4+0nNOO5yoF/sed+ojRTta4AuZlYaZRHx/RPHKjezUqBztH+yvt4O3A4wbNgwT7aPiBSpVBmG5mDkTLZKUtOAc6IznPYBBgEvAnOAQdEZUW0JA+PT3N2BJ4CzotdPAB6MHWtC9Pgs4PFofxFpTTTonXctPa32DDMrB44GHjazGQDu/gZwH/Am8B/gUnevibKHrwMzgAXAfdG+AD8AvmtmiwljFHdE7XcA3aP27wIfn4orIq2ISlJ512hJqiHuPhWYmmLbtcC1SdqnA9OTtL9LOIuqfvtW4HMt6aeI7AI06J13muktIsVBJam8U8AQkeKgeRh5p4AhIsWhfkmqpga2blXAyCEFDBEpDvUzjM2bw71Oq80ZBQwRKQ71MwytVJtzChgiUhzqD3orYOScAoaIFIf6JSkFjJxTwBCR4qCSVN4pYIhIcaifYWzcGO4VMHJGAUNEioPGMPJOAUNEioNKUnmngCEixSHVoLfmYeSMAoaIFIf6GcayZdCmDXTrlr8+tTIKGCJSHOqPYcyfD0OGQIcO+etTK6OAISLFoX5Jav58OOKI/PWnFVLAEJHiEC9JrVgBH3wAQ4fmt0+tjAKGiBSHeIYxf354rAwjp1p6idbPmdkbZlZrZsNi7QPMbIuZvRzdbo1tG2pmr5nZYjO70cwsau9mZjPNbFF03zVqt2i/xWb2qpnpL0SkNYqPYcyfD2Zw2GH57VMr09IM43Xgs8DTSba94+6HRbevxtpvAS4CBkW3MVH7FcAsdx8EzKLu2t1jY/tOjF4vIq1NmzbhVl0N8+bB4ME6pTbHWhQw3H2Buy9Md38z6w10cvfZ7u7A3cD4aPM4YFL0eFK99rs9mA10iY4jIq1NaWldSUrlqJzL5hjGPmb2kpk9ZWbHR219gPLYPuVRG0Avd18ZPf4A6BV7zbIUr9mBmU00s7lmNnf16tUZ+SFEpICUlYUB7/JyDXjnQWljO5jZY8BeSTZd6e4PpnjZSqC/u68xs6HAA2Z2YLqdcnc3M093/9jrbgduBxg2bFiTXy8iBa60FF58MTxWhpFzjQYMdz+pqQd1923AtujxPDN7B/gksBzoG9u1b9QGsMrMerv7yqjkVBG1Lwf6pXiNiLQmpaWwMKqCH354fvvSCmWlJGVmPc2sJHq8L2HA+t2o5LTBzEZEZ0edDySylGnAhOjxhHrt50dnS40AKmOlKxFpTRJzMQYOhM6d89uXVqilp9WeYWblwNHAw2Y2I9p0AvCqmb0MTAa+6u5ro22XAH8BFgPvAI9E7dcBJ5vZIuCk6DnAdODdaP8/R68XkdYocWqtylF50WhJqiHuPhWYmqR9CjAlxWvmAgclaV8DjE7S7sClLemniOwiEhmGBrzzQjO9RaR4KMPIKwUMESkeiYChAe+8UMAQkeJRVgYDBkD37vnuSavUojEMEZGcGjwYevTIdy9aLQUMESke990Hrjm5+aKSlIgUl7DAteSBAoaIiKRFAUNERNKigCEiImlRwBARkbQoYIiISFoUMEREJC0KGCIikhbzXXQSjJl9BKR9vfEUOgOVLTxGD+DDLB4/lWweuxiPH/89FFvfc3n8fPa9oX8rmTh+SxXz77Upxx/s7nsk3eLuu+QNmJuBY9yezX5k4vj5OHYxHj/+eyi2vufy+Pnse6H8my3E/ze5PH5DvweVpBr27yI+fjH3PdvHL+a+Z/v4xdz3bB+/mPuekePvyiWpue4+TP0Q0O+hGOh3VBga+j3syhnG7fnuQKRQ+tHa6fdQ+PQ7Kgwpfw+7bIYhIiKZtStnGCIikkEKGCIikhYFjBYysxozezl2G9DAviPN7KHc9a71MDM3s3tiz0vNbLX+fxcWMxsf/a72z3dfpOkUMFpui7sfFru9n+8OtVKbgIPMrEP0/GRgeVMOYGa6AmX2nQs8E92nzcxKstMdaQoFjCwwsxIz+42ZzTGzV83s4tjmTmb2sJktNLNbzUy/g8yZDvy/6PG5wD8SG8xsuJk9b2YvmdlzZjY4av+ymU0zs8eBWbnvcuthZrsDxwEXAudEbSPN7Olk/ybMbKOZ/dbMXgGOzl/PJUEfVi3XIVaOmhq1XQhUuvuRwJHARWa2T7RtOPANYAiwH/DZnPd413UvcI6ZtQcOAV6IbXsLON7dDwd+Cvwytu0I4Cx3/1TOeto6jQP+4+5vA2vMbGjUnurfxG7AC+5+qLs/k/Peyk6UgrfcFnc/rF7bKcAhZnZW9LwzMAioAl5093cBzOwfhG9ck3PV2V2Zu78ajSGdS8g24joDk8xsEOBAWWzbTHdfm5NOtm7nAn+IHt8bPX+I1P8maoApeeinpKCAkR0GfMPdZ+zQaDaS8GEVp4kwmTUN+F9gJNA91n418IS7nxEFlSdj2zblqG+tlpl1A0YBB5uZAyWEv/2HSf1vYqu71+Sul9IYlaSyYwbwNTMrAzCzT5rZbtG24Wa2T1Sn/TxhAFAy507g5+7+Wr32ztQNgn85pz0SgLOAv7n7J9x9gLv3A94Djkf/JoqGAkZ2/AV4E5hvZq8Dt1GXzc0BbgIWEP7BTE16BGkWdy939xuTbPo18Cszewll1vlwLjv/rU+J2vVvokhoaRARyZuoTPs9dz89332RxinDEBGRtCjDEBGRtCjDaCIz62dmT5jZm2b2hpl9K2rvZmYzzWxRdN81aj8vmrz3WjRh7NDYscZEk5UWm9kV+fqZRETSoQyjicysN9Db3eeb2R7APGA84cybte5+XfTh39Xdf2BmxwAL3H2dmY0FfubuR0VLHbxNWMKinDDwd667v5mPn0tEpDHKMJrI3Ve6+/zo8UeEMzv6EGaxTop2m0QIIrj7c+6+LmqfDfSNHg8HFrv7u+5eRZjINC43P4WISNMpYLRANAHscMISFL3cfWW06QOgV5KXXAg8Ej3uAyyLbSuP2kRECpLOR2+maCG1KcC33X2DmX28zd09ms0a3/9EQsA4LqcdFRHJEGUYzRDN4J4C/N3d74+aV0XjG4lxjorY/ocQJvONc/c1UfNyoF/ssH1p4nLcIiK5pIDRRBZSiTsIA9m/i22aBkyIHk8AHoz27w/cD3wpWqUzYQ4wKFoSoS1huedp2e6/iEhz6SypJjKz44D/Aq8BtVHzjwjjGPcB/YElwNnuvtbM/gKcGbUBVLv7sOhYpwG/JyzEdqe7X5uzH0REpIkUMEREJC0qSYmISFoUMEREJC0KGCIikhYFDBERSYsChoiIpEUBQ0RE0qKAISIiaVHAEBGRtPx/7h3oKpyyfV8AAAAASUVORK5CYII=\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"ax = data[\"Growth rate\"].plot(style=\"r\", label=\"Growth rate\")\n", | |
"ax = future[\"Growth rate\"].plot(style=\"b--\", label=\"Growth rate (expected)\")" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## TL;DR\n", | |
"\n", | |
"Here are results of the modelization. Given the fit parameters, we can \"vulgarize\" into a few key points." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"{'Inflexion point date': Timestamp('2020-04-02 16:23:34.493680+0000', tz='UTC'),\n", | |
" 'End of epidemic date': Timestamp('2020-06-13 08:47:08.987361+0000', tz='UTC'),\n", | |
" 'Max infection rate': 82144.93348774308,\n", | |
" 'Total # infections': 3355432.782178252}" | |
] | |
}, | |
"execution_count": 13, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"x0, c, k = popt\n", | |
"{\n", | |
" 'Inflexion point date': data.index[0] + pd.Timedelta(days=x0),\n", | |
" 'End of epidemic date': data.index[0] + pd.Timedelta(days=2*x0),\n", | |
" 'Max infection rate': d_sigmoid(x0, *popt) * (ymax-ymin),\n", | |
" 'Total # infections': sigmoid(2*x0, *popt) * (ymax-ymin)+ymax\n", | |
"}" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3.8.1 64-bit", | |
"language": "python", | |
"name": "python38164bit61edaacfb5624b5b888578a4f74b0568" | |
}, | |
"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.8.1" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 4 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment