{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Basic Predictions\n", "===============\n", "\n", "This notebook tries to predict number of \"confirmed cases\" from patientdb available at http://api.covid19india.org/. \n", "\n", "Growth rate is computed as rate of change of confirmed cases and smoothened using a 7d rolling average.\n", "It is extrapolated using the following methods:\n", "* Quadartic curve fitting - fails to fit the curve correctly\n", "* Hyperbolic curve fitting using a neural net - fits well and asymptotes the growth rate at ~7%.\n", "\n", "The model is rudimentary and points towards a scenario where we fail to contain the epidemic and it eventually moves to stage 3/4." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from matplotlib import pyplot as plt\n", "from matplotlib.ticker import FuncFormatter\n", "%matplotlib inline\n", "import matplotlib as mpl\n", "from matplotlib.dates import date2num, AutoDateLocator, ConciseDateFormatter, DayLocator, AutoDateFormatter\n", "\n", "import datetime as dt\n", "import pandas as pd\n", "import numpy as np\n", "import requests\n", "\n", "from sklearn.neural_network import MLPRegressor" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Records: 81\n" ] } ], "source": [ "resp = requests.get(\"https://api.covid19india.org/data.json\")\n", "ts = resp.json()['cases_time_series']\n", "\n", "r = {\n", " \"date\": [],\n", " \"confirmed\": [],\n", " \"deceased\": [],\n", " \"recovered\": []\n", "}\n", "\n", "for d in ts:\n", " try:\n", " r['date'].append(dt.datetime.strptime(d['date'] + \"2020\", '%d %B %Y'))\n", " r['confirmed'].append(int(d['dailyconfirmed']))\n", " r['deceased'].append(int(d['dailydeceased']))\n", " r['recovered'].append(int(d['dailyrecovered']))\n", " except Exception as e:\n", " print(d['date'])\n", " tb.print_exc()\n", "\n", "df = pd.DataFrame(data=r, index=r['date'], columns=['confirmed', 'deceased', 'recovered'])\n", "df.sort_index(inplace=True)\n", "df = df[31:][:] #drop Feb data\n", "print(\"Records:\", len(df))" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
confirmeddeceasedrecoveredtotalgrowthsma_growth
2020-05-1647941204012906465.5840285.370063
2020-05-1750491522538956955.5700205.186083
2020-05-18462813124821003234.8361985.113057
2020-05-19615414630321064776.1341875.270289
2020-05-20571613431131121935.3682965.321048
\n", "
" ], "text/plain": [ " confirmed deceased recovered total growth sma_growth\n", "2020-05-16 4794 120 4012 90646 5.584028 5.370063\n", "2020-05-17 5049 152 2538 95695 5.570020 5.186083\n", "2020-05-18 4628 131 2482 100323 4.836198 5.113057\n", "2020-05-19 6154 146 3032 106477 6.134187 5.270289\n", "2020-05-20 5716 134 3113 112193 5.368296 5.321048" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# cum sum\n", "df['total'] = df['confirmed'].cumsum()\n", "\n", "# calc growth rate & its moving avg\n", "df['growth'] = 100 * df['confirmed'] / (df['total'] - df['confirmed'])\n", "sma_gr = df['growth'].rolling(7).mean()\n", "df['sma_growth'] = sma_gr\n", "\n", "# daily plot\n", "ax = df.plot(y='confirmed', kind='line', title=\"Daily cases\", grid=True)\n", "df.tail()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
confirmedtotalsma_growthday_of_yr
2020-05-164794.090646.05.370063137
2020-05-175049.095695.05.186083138
2020-05-184628.0100323.05.113057139
2020-05-196154.0106477.05.270289140
2020-05-205716.0112193.05.321048141
\n", "
" ], "text/plain": [ " confirmed total sma_growth day_of_yr\n", "2020-05-16 4794.0 90646.0 5.370063 137\n", "2020-05-17 5049.0 95695.0 5.186083 138\n", "2020-05-18 4628.0 100323.0 5.113057 139\n", "2020-05-19 6154.0 106477.0 5.270289 140\n", "2020-05-20 5716.0 112193.0 5.321048 141" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# create extrapolation dataframe\n", "last_date = df.index[-1]\n", "projections = pd.DataFrame(index=df.index.union(pd.date_range(start=last_date, periods=150, freq=\"1d\")))\n", "\n", "# fill with orig df\n", "projections['confirmed'] = df['confirmed']\n", "projections['total'] = df['total']\n", "projections['sma_growth'] = df['sma_growth']\n", "projections['day_of_yr'] = projections.index.dayofyear\n", "\n", "# filter data for curve fitting (aka training data)\n", "end_idx = len(df)\n", "start_idx = end_idx - 35 # use 21 day sma data for curve fitting\n", "fit_df = projections[start_idx:end_idx]\n", "fit_df.tail()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEICAYAAACktLTqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzddXhUR/fA8e+JCwFCCB7cvbhLDdpSpL8KlFIoLVagLZSWutH2rbxvXXEpWqRCqZfgXijuGjQ4CSRE5vfHLDSEJEQ2u5HzeZ482d0rc+7K2dm5c2fEGINSSqm8xcPdASillHI+Te5KKZUHaXJXSqk8SJO7UkrlQZrclVIqD9LkrpRSeZAmdzcRkddE5Bt3x5GUiPQUkd/Sua7L4s9IXDlhvzcos5qIrBeRCyLyhCvLzm4iYkSksrvjUJYm9ywSkf0icklEokTkuIhMEJEC7o4rM4wxU40xt7s7juScEZeIlHckHy9n7jcTngXCjTFBxphPXFy204hIuIg85uIy9csjAzS5O8fdxpgCQAOgMfCSm+PJVUTE090xuFA5YEtmNkz6xeSO7bNTTo4tt9Lk7kTGmMPAz0BtABEpJSI/iMhpEdktIv1S2k5EfhKRocke2ygiXR23jYgMFJFdInJGRD4XEXEs8xCRl0TkgIicEJHJIlLIsexKbfURETnk2HagiDR27P+siHyWpMw+IrI0yf2PHdudF5F1ItI6Pc+DiLQTkQgReUFETjp+3fRMsnyiiHwpIgtEJBpoLyKFHLFHOo7lJRHxSCWu6iLyu+N53SEi9ydZ5i8i/3Ps45yILBURf2CxY5Wzjl9ZzVPYbwsRWePYbo2ItEiyLFxERonIMkeTym8iUtSxzE9EvhGRU47ndI2IFE/hefkLaA985oihajqOe5mIfCgip4HXUtinv4hMcry220TkWRGJSLJ8v4iMFJGNQLSIeIlIDcfxnBWRLSLS2bFuBcdjV8ofKyInkuzrGxF5SkTeAlonOY7PkoR0a0rv0xTifk1EZjv2eR7oIyJNRGSFI4ajIvKZiPg41r/y+v3jKPMBx+OdRGSDY5vlIlI3pfLyJWOM/mXhD9gP3Oq4HYatlY1y3F8EfAH4AfWBSOAWx7LXgG8ct+8HViXZZz3gFODjuG+A+UBhoKxjPx0dy/oCu4GKQAFgLjDFsay8Y9uvHDHcDsQA3wHFgNLACaCtY/0+wNIkcTwEhABewNPAMcAvefwpPCftgHjgA8AXaAtEA9UcyycC54CW2AqGHzAZ+B4IcsS9E3g0eVxAIHAIeMQRVwPgJFDLsfxzINxxbJ5AC0cMV54LryRxJt1vEeAM0Mux3x6O+yGO5eHAHqAq4O+4/45j2QDgRyDAUWZDoGAqz0048FiS+zc67nhgqCMm/xT29w72fRYMlAE2AhHJ3p8bsO9Nf8Ab+355AfABbgYuJHltDgINHbd3AHuBGkmW3ZTScdzofZpC3K8BcUBXx3vA3/G8NXMca3lgG/BUsv1XTnK/Afb929TxvPd2HK+vu/NCTvhzewC5/c/xZooCzgIHsMnc3/FhSgCCkqz7H2Ci4/Zr/JvcfYHTQBXH/f8CXyTZzgCtktyfBTznuP0n8HiSZdUcH5orHxADlE6y/BTwQJL7c658gEiW3FM41jNAveTxp7BeO2xSCkwW88uO2xOByUmWeQKxQM0kjw3Atk1fExfwALAkWXlfA686ksSlKzEmW+fKc5Facu8FrE62zQqgj+N2OPBSkmWPA784bvcFlgN10/F+CceRFNN53AdvsL+9QIck9x/j+uTeN8n91tgvaY8kj00HXnPcngIMB0pgk/t7wECgAvY97pH8ONLzPk0h7teAxTc4tqeAecn2nzS5f4mjIpXksR04Kiv5/U+bZZyjqzGmsDGmnDHmcWPMJaAUcNoYcyHJegewNcprGGNisR+Ehxw/iXtgP2RJHUty+yK2lo6jnAPJyvACkjYLHE9y+1IK91M8ASwiTzt+6p8TkbNAIaBoSuum4IwxJjpZXKWS3D+U5HZRbC0y+XFc91xh26ybOn6Gn3XE1RObjIpifwXsSWeMSSV/HlOKIbXXYArwKzBDRI6IyHsi4p2OMtNz3IdIW6lk66S0ftLHSgGHjDGJqZS5CPvl3AbblBWO/eXVFvulmnS7lKT2HKXkmlgdzVTzReSYo6nmbdJ+v5UDnk72Xgjj2vdZvqXJPfscAYqISFCSx8oCh1NZfxI2Sd0CXDTGrMhAOeWSlRHPtQk8w8S2r4/ENhkFG2MKY5tSUmxDTUGwiAQmi+tIkvtJhyM9if21kfw4UnquDgGLHF+mV/4KGGMGOfYTA1RKYbsbDX+a/HlMK4Zrd2xMnDHmdWNMTWwzUCfg4RttR/qO+0ZxH8U2x1wRllKISW4fAcKutKunUOYibO2+neP2UmzzWVvH/fTGlR7J9/ElsB37C7YgtukorffbIeCtZO+FAGPMdCfElutpcs8mxphD2J/q/3GccKsLPApMTWX9FUAi8D+ur7WnZTowzHEyrAC2tjPTGBOfpQOwbcDx2HZTLxF5BSiYwX28LiI+ji+KTsC3Ka1kjEnA/nJ5S0SCRKQctmkgpX7084GqItJLRLwdf41FpIajVjke+EDsyWxPx4lTX8dxJGLPTaRkgWO/DzpOOj4A1HSUlyYRaS8idcT2+jmPTdgJN9oug8edmlnA8yISLCKlgSE3WH8V9vzHs47nrh1wNzDDEdMu7K+5h7DNJuexFYX/49rkfpzUn8vMCsI+f1EiUh0YlGx58jLHAANFpKlYgSJyV7IKVb6lyT179cC29R4B5gGvGmN+T2P9yUAdMvbhHo/9MlgM7MPWXIemuUX6/Irt+bMT+7M9hhs3ESR1DNtGfwT7hTbQGLM9jfWHYpPOXmxtcRr22K7haOa6Heju2Pcx4F3seQuAEcAmYA32PMa72Hbii8BbwDLHT/hmyfZ7CvsF9DT2vMSzQCdjzMl0HGsJYDY2MW3DJsH0vobpOu40vAFEYF/7PxxxxKa2sjHmMtAZuAP7y+EL4OFkr80i4JQx5mCS+wKsT7LOx8C9jl4xzuqvPwJ4EHuCdwwwM9ny14BJjtfvfmPMWqAf8Bn2vbYbe55CAeI4CaFyABF5GOhvjGnl7liywlEb/MYYU+ZG66Zzf32Bh4wxNztjf3mZiAwCuhtj2ro7FuVeWnPPIUQkANsDY7S7Y8mBamFrpioZESkpIi3FXu9QDfvLY56741Lup8k9BxCRDtg24ePYn+XKQUS+Azpiz0Wo6/lgu4JeAP7C9pn/wq0RqRxBm2WUUioP0pq7UkrlQS4drKdw4cKmcmUd1C23i46OJjAw8MYrKqWcYt26dSeNMaEZ2calyb148eKsXbvWlUWqbBAeHk67du3cHYZS+YaIJL96+oa0WUYppfIgTe5KKZUHaXJXSqk8SGc/USoXiIuLIyIigpiYGHeHorKRn58fZcqUwds7PYOKpk2Tu1K5QEREBEFBQZQvX55UJjdSuZwxhlOnThEREUGFChWyvD9tllEqF4iJiSEkJEQTex4mIoSEhDjt15kmd6VyCU3seZ8zX2OXJnev6Ogbr6SUUirLXJvcz593ZXFKKZVvuTa5X7oEOlCZUvnOK6+8wh9//JHh7fbv38+0aRkfKLVPnz7Mnj07w9s5S/K4J06cyJAhN5oky7lcmtwlPh4OHrzxikqpXCchIfWZBd944w1uvfXWDO8zs8ndGeLjMz9TpTvjvsL1XSGXLoVyyechVkql1+s/bmHrEec2cdYsVZBX766V6vL9+/fTsWNHmjZtyvr166latSqTJ0+mZs2a9O3bl99++40hQ4ZQvXp1Bg4cyMWLF6lUqRLjx48nODiYPn360KlTJ+69917WrVvH8OHDiYqKomjRokycOJGSJUuye/duBg4cSGRkJJ6ennz77bc899xzbNu2jfr169O7d2+eeOIJnnvuOcLDw4mNjWXw4MEMGDAAYwxDhw7lr7/+okKFCtxoKPMFCxYwfPhwihYtSoMGDdi7dy/z58/ntdde48iRI+zfv5+iRYsyfvx4Bg0axNq1a/Hy8uKDDz6gffv23HnnnbzzzjvUrVuXm266iW7duvHKK6/w8ssvU65cOcaOHXtN3MHBwRw5coSOHTuyZ88eunXrxnvvvefU1zA5l9bcjYeHTe5KqVxnx44d9O/fn40bN1KwYEG++MLOCeLn58fSpUvp3r07Dz/8MO+++y4bN26kTp06vP7669fsIy4ujqFDhzJ79mzWrVtH3759efHFFwHo2bMngwcP5p9//mH58uWULFmSd955h9atW7NhwwaGDRvGuHHjKFSoEGvWrGHNmjWMGTOGffv2MW/ePHbs2MGmTZsYM2YMy5cvT/U4YmJiGDBgAD///DNLly4lMjLymuXr1q3j+++/Z9q0aXz++ecAbNq0ienTp9O7d29iYmJo06YNS5Ys4fz583h5ebFs2TIAli5dSuvWra+LG2DDhg3MnDmTTZs2MXPmTA4dysiUxBnn0pp7gp+fJnelsiitGnZ2CgsLo2XLlgA89NBDfPKJnRf7gQceAODcuXOcPXuWtm3t9K29e/fmvvvuu2YfO3bsYPPmzdx2222AbcopWbIkFy5c4PDhw3Tr1g2wXxgp+e2339i4cePV9vRz586xa9cuFi9eTI8ePfD09KRUqVLcfHPq0+1u376dihUrXr1QqEePHowe/e/slp07d8bf3x+wyXroUDvffPXq1SlXrhw7d+6kdevWfPLJJ1SoUIG77rqL33//nYsXL7J//36qVavG0aNHryv3lltuoVChQgDUrFmTAwcOEBYWlmqcWeXa5B4QAJs3w5kzEBzsyqKVUlmUvA/2lfsZGdvfGEOtWrVYsWLFNY+fT2dPOmMMn376KR06dLjm8QULFqS7j/iNmmySHk9q6zZu3Ji1a9dSsWJFbrvtNk6ePMmYMWNo2LBhqvv19fW9etvT0zNLbfrp4dJmmYQr38Zp/GRSSuVMBw8evJqUp0+fTqtWra5ZXqhQIYKDg1myZAkAU6ZMuVqLv6JatWpERkZe3U9cXBxbtmyhYMGClClThu+++w6A2NhYLl68SFBQEBcuXLi6fYcOHfjyyy+Ji4sDYOfOnURHR9OmTRtmzJhBQkICR48eZeHChakeR/Xq1dm7dy/79+8HYObMmamu26ZNG6ZOnXq1rIMHD1KtWjV8fHwICwtj1qxZNGvWjNatW/Pf//6X1q1bA1wXtzu4NLkn+vuDl5c2zSiVC9WoUYNJkyZRt25dTp8+zaBBg65bZ9KkSTzzzDPUrVuXDRs28Morr1xdJiL4+Pgwe/ZsRo4cSb169ahfv/7V9vEpU6bwySefULduXVq0aMGxY8eoW7cuXl5e1KtXjw8//JDHHnuMmjVr0qBBA2rXrs2AAQOIj4+nW7duVKlShTp16jBo0KDrvlSS8vf354svvqBjx460atWK4sWLX20uSe7xxx8nISGBOnXq8MADDzBx4sSrNfDWrVtTvHhxAgICaN26NREREVeTe/K43cGlE2RXq1bN7AgOBm9vcHy7q9xHZ2JyvW3btlGjRg23lb9//346derE5s2bM7X93XffzfDhw2nfvr2TI8ucqKgoChQogDGGwYMHU6VKlasnPt0tpddaRNYZYxplZD+uH1umVStYvRp06FKl8oW+ffty8eLF65px3GnMmDHUr1+fWrVqce7cOQYMGODukJzO9f3cW7WC//0P1q0Dx5l3pVTOVr58+UzX2sePH+/kaNKvW7du7Nu375rH3n33XYYNG5ZjaurZ5YbJXUTGA52AE8aY2o7HigAzgfLAfuB+Y8yZdJV4JaEvXarJXSmVrebNm+fuENwmPc0yE4GOyR57DvjTGFMF+NNxP31CQ6FaNT2pqpRS2eiGyd0Ysxg4nezhLsAkx+1JQNcMldqqFSxbBomJGdpMKaVU+mS2zb24MeYogDHmqIgUS21FEekP9AcIDQ0lPDycEkWLUv3MGVZPmsRFJ0wnpVwrKiqK8PBwd4eRrxQqVMjt/aaVa8TExDjl85XtJ1SNMaOB0WC7QrZr1w7KlIF336XJ5cugXepyHe0K6Xrbtm0jKCjI3WEoF/Dz8+Omm27K8n4y2xXyuIiUBHD8P5GhrStVguLFtd1dKeVS4eHh1wwq5u5x37NTZpP7D0Bvx+3ewPcZ2lrEtrtrcldKZVBWxmRJntzzsvR0hZwOtAOKikgE8CrwDjBLRB4FDgL3pb6HVLRqBXPmQESEbaZRSqXPU0/Bhg3O3Wf9+vDRR6kujo6O5v777yciIoKEhARefvllRo4cyYMPPsjChQuJi4tj9OjRPP/88+zevZtnnnmGgQMHEhUVRZcuXThz5gxxcXG8+eabdOnSJdVyRo0axdSpUwkLC6No0aI0bNiQESNG0K5dO1q0aMGyZcvo3Lkz9957L3379iUyMpLQ0FAmTJhA6dKlqVKlCnv27OHcuXMUKVKE8PBw2rRpQ+vWrZkwYQJfffUVnp6efPPNN3z66acALF68mA8++IBjx47x3nvvce+99zr3uXWTGyZ3Y0yPVBbdkqWSr1yttmwZOIYMVUrlTL/88gulSpXip59+AuxQuyNHjiQsLIwVK1YwbNgw+vTpw7Jly4iJiaFWrVoMHDgQPz8/5s2bR8GCBTl58iTNmjWjc+fOKY7guHbtWubMmcP69euJj4+nQYMG14yyePbsWRYtWgTY4Qwefvhhevfuzfjx43niiSf47rvvqFq1Klu3bmXfvn00bNiQJUuW0LRpUyIiIqhcuTIDBw6kQIECjBgxAoBx48Zx9OhRli5dyvbt269+ceQFrr9C9Yr69SEw0DbNaHJXKv3SqGFnlzp16jBixAhGjhxJp06drg6Q1blz56vLo6KiCAoKIigoCD8/P86ePUtgYCAvvPACixcvxsPDg8OHD3P8+HFKlChxXRlLly6lS5cuV8dSv/vuu69Z/kCSPLFixQrmzp0LQK9evXj22WcBO5jX4sWL2bdvH88//zxjxoyhbdu2NG7cONVj69q1Kx4eHtSsWZPjx49n4VnKWVw/tswVXl7QrJm2uyuVC1StWpV169ZRp04dnn/+ed544w3g3zHKPTw8rhmv3MPDg/j4eKZOnUpkZCTr1q1jw4YNFC9enJhUxpXKyDjryV35JdC6dWuWLFnC6tWrufPOOzl79uzVppnUJI3blQMpZjf3JXewTTMbN8K5c24NQymVtiNHjhAQEMBDDz3EiBEj+Pvvv9O13blz5yhWrBje3t4sXLiQAwcOpLpuq1at+PHHH4mJiSEqKupqE1BKWrRowYwZMwCYOnXq1UHJmjZtyvLly/Hw8MDPz4/69evz9ddf56hx1l3F/ck9MRFWrnRrGEqptG3atIkmTZpQv3593nrrLV566aV0bdezZ0/Wrl1Lo0aNmDp1KtWrV0913caNG9O5c2fq1avHPffcQ6NGjVIdZ/2TTz5hwoQJ1K1blylTpvDxxx8DthYeFhZGs2bNAFuTv3DhAnXq1AFsU8+8efOoX7/+1UlF8irXj+e+Y8e/D1y4YKfbe/55GDXKZXGorNGLmFzP3eO5u8qVcdYvXrxImzZtGD16NA0aNHB3WC7lrPHc3XdCFSAoyJ5Y1XZ3pRTQv39/tm7dSkxMDL179853id2Z3JvcwTbNjB4Nly+Dj4+7o1FKZbNTp05xyy3X96T+888/mTZtmhsiyptcmtxTbABq1Qo+/hjWr4emTV0ZjlK5ijEmxf7huU1ISAgbnH0RVh7hzGZyl55QjbxoSExMFnzSyTuUUiny8/Pj1KlTeaqrnrqWMYZTp07h5+fnlP25tOZ+Md7w3q87eO6OJGfMS5a0A4ktXQpPP+3KcJTKNcqUKUNERASRkZHuDkVlIz8/P8o4aTgWlyb3IG/hq0V7KB8SQPcmZf9d0KoV/PQTGGMHFVNKXcPb25sKOveBygCXNsuE+Attqoby0nebWbrr5L8LWrWCkyfhjz9cGY5SSuVZLr+I6fMHb6JysQIMmrqOXccdV4rdfz9Urw7du8OuXa4OSSml8hyXJ/cgP2/G9WmMn7cnj0xcQ+SFWChYEObPt00ynTrBmTOuDksppfIUtww/ULqwP+N6N+JkVCz9Jq8lJi7BnlSdNw/27YN774W4uPTtbNcu6NkTtm/P3qCVUioXcdvYMnXLFOajB27in4izDJ+1wXaRbN0axoyBv/6CIUPsCda0fPstNGwI06bBhAmuCVwppXIBtw4c1rF2CV64owYLNh3jvV8dY8707m3Hmhk9OvVxq2NjYehQ21ZfqxbUrAkrVrgucKWUyuHcOyok8FjrCvRsWpavFu1h6irHcKBvvgn33GP7vc+ff+0G+/bZ3jWffQbDhsGiRdChA6xZY4cwUEop5f7kLiK83rkW7auF8vJ3m/lj63Hw8IDJk6FBA+jRw475DvDDD/axXbtg7lz44AM7Hk2LFhAT4/x5JZVSKpdye3IH8PL04LMHG1C7dCGGTP+bDYfO2in4fvgBChWyPWiefBK6dIGKFeHvv6Fbt3930Ly5/a9NM0opBeSQ5A4Q6OvFuN6NCQ3y5dGJa9h/MhpKlbIJ/tQp+OQTePxxO6F2xYrXbly6NJQtC8uXuyd4pZTKYXJMcgcIDfJl0iNNSDSGPhNWcyoq1jbD/PEHLFgAn38OqQ2q07y51tyVUsohRyV3gIqhBRjbuzFHz8XQd9JaLl1OsIn7jjvS3rBFCzh0CCIiXBOoUkrlYDkuuQM0LBfMJz1uYmPEWYZO/5v4hMQbb9Sihf2vtXellMqZyR2gQ60SvN65Fn9sO8GrP2y58TjW9eqBv7+2uyulFDlhmr00PNy8PIfPXuLrRXspVdifwe0rp76ytzc0bqzJXSmlyME19ytGdqhO1/qleP/XHcxcczDtlZs3t9P1XbrkmuCUUiqHyvHJ3cNDeO/eerSpGsrzczfx25Zjqa/cooUdcGzdOtcFqJRSOVCOT+4APl4efNmzAXXKFGbo9PWs2nsq5RX1YiallAKymNxF5EkR2SwiW0TkKWcFlZJAXy8m9GlM6WB/Hpu8lm1Hz1+/UmgoVK6s7e5KqXwv08ldRGoD/YAmQD2gk4hUcVZgKSkS6MOUR5sS6OPFw+NXc+j0xetXatHCJnedJV4plY9lpeZeA1hpjLlojIkHFgHdbrBNlpUu7M+UR5twOT6RXuNWcTIq9toVmjeHEyfs6JFKKZVPZaUr5GbgLREJAS4BdwJrk68kIv2B/gChoaGEh4dnoch/Da3ryXtrLvJ/n/zFc0388PcSAAK9vWkMbBs3juO33eaUstS1oqKinPY6KqWyh9zw4qC0NhZ5FBgMRAFbgUvGmGGprV+tWjWzY8eOTJeX3MLtJ3hs8lqaVijChEca4+vlCQkJEBwMvXrZsWiU04WHh9OuXTt3h6FUviEi64wxjTKyTZZOqBpjxhljGhhj2gCngV1Z2V9Gta9ejPfvrcvyPad4Yvp6O0yBpyc0baonVZVS+VpWe8sUc/wvC9wDTHdGUBlxT4MyvHp3TX7dcpxn52y0c7G2aGEn+IiKcnU4SimVI2R1+IE5jjb3OGCwMeaME2LKsEdaVuBCTDwf/L6TIF8vXmvWDElMhNWr4eab3RGSUkq5VZaSuzGmtbMCyaqhN1fmQkwcY5bsI6RxKE+AbZrR5K6Uyody9MBhGSEivHBnDaJi4/lg9SEeKl+FInqlqlIqn8oVww+kl4jwZtc6dKpbkl8LViB2yTJITMdY8EoplcfkqeQO4OkhfPhAfS41aorvhXP8+f0Sd4eklFIul+eSO4C3pwc9n3oAgN/GzuP3rcfdHJFSSrlWnkzuAL61amCKFOGWs3sZPPVvFu+MdHdISinlMnk2uePhgTRvzi1ndlOpWAH6TV7L8t0n3R2VUkq5RN5N7gDNm+O5bRtT76lCuZAAHp20ltX7Trs7KqWUynZ5O7m3aAFAkS0bmPpYM0oW9uORCav5+6BbrrVSSimXydvJvXFj8PCA5csJDfJl2mPNKBrkS+/xq9kYcdbd0SmlVLbJ28m9QAGoV+/qtHslCvkxrV8zCvl702vcarYcOefmAJVSKnvk7eQOtmlmxQo4fBiwk31M79eMAB9Peo1bzY5jF9wcoFJKOV/eT+4DB9qmmY4d4Yxtaw8rEsC0fs3w8hB6jl3F7hM6eqRSKm/J+8m9dm347jvYuRM6d4ZLlwCoUDSQaf2aAYYeY1ZqgldK5Sl5P7mDHRlyyhRYtgy6d4f4eAAqFyvA9H7NMAa6j17J7hPaRKOUyhvyR3IHuP9++OQT+OEHGDQIHNMLVikexIz+TQGb4Hcd1wSvlMr98k9yBxgyBF58EcaOhVdfvfpw5WJBzOjfDBGh++iVepJVKZXr5a/kDjBqFDz6qP2fZALtysUKMKN/Mzw9hAfHrGT7sfNuDFIppbIm/yV3EfjqK7j7bhg6FL799uqiSqEFmDmgOd6eHjw4ZhVbj2iCV0rlTvkvuQN4ecGMGdC8OTz0EPzxx9VFFYoGMqN/M3y9POg5dqVe6KSUypXyZ3IHCAiAH3+EqlXhrrtg9uyri8o7Ery/tyc9x65iU4QmeKVU7pJ/kztAkSKwaBE0bGh703z22dVF5UICmdG/OYE+Xjw4ZiXrDuhokkqp3CN/J3ewCf6PP/5tg3/xxavdJMuGBPDtwOYUDfKl17jVOh68UirX0OQOtolmzhzo1w/eftv2pomLA6BUYX9mDmhGWHAAfSauYeH2E24OVimlbkyT+xVeXvD117b/+4QJ0LUrREcDUCzIjxn9m1G1eAH6T1nLz5uOujlYpZRKmyb3pETgtddsV8lffrHDFpy0TTHBgT5M69eMumUKM3ja38xbH+HeWJVSKg2a3FMyYIBtpvnnH2jZEpYuBaCgnzeT+zahWcUQhs/6h2mrDro5UKWUSpkm99R07WpPtEZFQevW9v727QT6ejG+T2PaVQ3lhXmbGLtkr7sjVUqp62hyT0urVrBrF7z1Fvz1lx0+eOBA/E6e4OtejbizTgne/Gkb//ttB8bRw0YppXKCLCV3ERkmIltEZLOITBcRP2cFlmMEBMALL8CePfD44zBuHFSujM+o1/m0U6zCq0AAACAASURBVBW6Nw7j079289J3m0lI1ASvlMoZMp3cRaQ08ATQyBhTG/AEujsrsBwnNNQOGbxtG3TqBG+8gWfVKvzn6GIebxHG1FUHeWLGei7HJ7o7UqWUynKzjBfgLyJeQABwJOsh5XCVK8PMmbBqFdSogQwdyrPDujHeewcL/jnMo5PWEB0b7+4olVL5nGSlrVhEngTeAi4BvxljeqawTn+gP0BoaGjDWbNmZbq8HMcYiqxeTYWxYwnavZvjYRV4oUkv9jVoyvBG/hTwEXdHmC2ioqIoUKCAu8NQKt9o3779OmNMo4xsk+nkLiLBwBzgAeAs8C0w2xjzTWrbVKtWzezYsSNT5eVoiYkwaxa8/DLs3s26MjX5pstARr7VjxKF8t5piPDwcNq1a+fuMJTKN0Qkw8k9K80ytwL7jDGRxpg4YC7QIgv7y708POzcrFu3wtdfUyfuNB9+/gT7mrTlwIbt7o5OKZUPZSW5HwSaiUiAiAhwC7DNOWHlUt7e0L8/Pvv2cuzFN6i7fxPn7r6HdXsi3R2ZUiqfyXRyN8asAmYDfwObHPsa7aS4cjd/f0q8+TIXP/+SuhHbWPLo0/y25Zi7o1JK5SNZ6i1jjHnVGFPdGFPbGNPLGBPrrMDygtDHehN7/wMMWTKNz9+fwZSVB9wdklIqn/BydwB5ne9XX5K4fBlf/foR7UPCOHr2Es90qIZtyVJKqeyhww9kt+BgPCZOpOSxA4zfNocvwvfw9Kx/9GInpVS20uTuCrfcAsOG0eLn6Xxc+Dhz1x+m78Q1XIiJc3dkSqk8SpO7q7z9NtSsSZdPXuKjW8NYsfcU93+9kqPnLrk7MqVUHqTJ3VX8/GDqVDh5kq5fj2Lcww05eCqarp8vY/Phc+6OTimVx2hyd6X69WHUKJg9m3Zrf2f2oBZ4inDfVyv4fetxd0enlMpDNLm72ogRdpz4wYOpcfkM3w1ueXVu1rFL9uq48Eopp9Dk7mqenjB5MhgDffpQLMiXGf2b07GWnfjjpe82E5+gPWmUUlmjyd0dKlSA//wHwsNh5Ur8fTz5/MEGDGxbiamrDvLIxDWc1540Sqks0OTuLg8/DP7+MGUKAB4ewnN3VOfd/6vDij2n+L8vlnPo9EU3B6mUyq00ubtLUJCddHvmTLh8+erDDzQuy+S+TTh+Poauny9j1d5TbgxSKZVbaXJ3p1694PRpWLDgmodbVC7KvMEtKRTgTc+xq5i6SsekUUpljCZ3d7rtNihWDL65fn6TSqEFmPd4S1pWLsqL8zbz0nebiNMTrUqpdNLk7k5eXtCjB/z4I5w5c93iQv7ejO/TmAFtKvLNyoM8NHYVp6J04E2l1I1pcne3Xr1sm/u336a42NNDeP7OGnz4QD3WHzpL58+Wse3oeRcHqZTKbTS5u1uDBlCjxtVeM6npdlMZvh3QnPjERO75Yjk/bzrqogCVUrmRJnd3E7G196VLYd++NFetF1aYH4e0onrJIAZN/Zv3f91OQqJe0aqUup4m95zgwQft/6lTb7hqsYJ+TO/XjAcahfH5wj30mbCa09GXb7idUip/0eSeE5QrB23b2qaZdIwt4+ftybv31uWde+qwat9p7v50KRsjzrogUKVUbqHJPafo1Qt27oQ1a9K9SfcmZZk9sDkA9361gplrDmZXdEqpXEaTe07xf/8Hvr4p9nlPS90yhflxaCuaVijCyDmbeG7ORmLiErIpSKVUbqHJPacoXBg6d4YZMyAuY4OGFQn0YeIjTRjcvhIz1hzi/q9XEHFGx6VRKj/T5J6T9OoFkZHw668Z3tTTQ3imQ3VG92rIvshoOn26lD+36QQgSuVXmtxzko4dISTkhn3e03J7rRL8MLQVpQr58+iktby9YJsOW6BUPqTJPSfx9obu3eGHH+Bc5udVrVA0kLmPt6BXs3KMXrxXm2mUyoc0uec0vXpBTAzMmZOl3fh5ezKqa20+e/Amdh2P4q5Pluo8rUrlI5rcc5omTaBKlSw1zSTVqW4p5g9tRVgRf/pNXsub87dyOT4fNtOcPp2uawiUyis0uec0V4YjCA+Hg87pt16+aCBzBrWgd/NyjF26j/u+XpF/Znk6dQr694eiRaFTJzh82N0RKeUSmU7uIlJNRDYk+TsvIk85M7h8q2dP+3/SJKft0tfLk9e71ObLng3YGxnFnR8v4bv1eTjRJSbC2LFQrRqMHw/332+/MGvVggkTtBav8rxMJ3djzA5jTH1jTH2gIXARmOe0yPKzihXhzjth1Cj4/Xen7vqOOiVZ8ERrqpcM4qmZG3hyxvq8Nxn3339DixbQrx/UrAkbNtjrBzZuhHr1oG9f+/weOuTuSJXKNs5qlrkF2GOM0fngnGXqVJuYunaFlSuduuuwIgFM79eMp2+ryvyNR7njoyWs2X/aqWW4xZkzMGQING5sR9icPBkWLYLate3ySpVg4UL49FNYvNg+Pm6c1uJVniTGCW9sERkP/G2M+SyFZf2B/gChoaENZ82aleXy8guf06e5aehQvC5cYMPHHxNdoYLTy9hzNoGvN8YSedFwdyVvOlfyxstD0twmKiqKAgUKOD2WrAhZupRq//sf3ufPc7hLF/b37Ut8GjH6HTlCtfffJ3jDBk43asSOESOILV7chRErlX7t27dfZ4xplJFtspzcRcQHOALUMsak2deuWrVqZseOHVkqL9/Ztw9atbK1y2XLIBsSfFRsPK/9sIXZ6yKoH1aYj7vXp1xIYKrrh4eH065dO6fHkWnr1tlmmNq1bTv7TTelb7vERPjqK3j2WTuuz+LFtk1eqRxGRDKc3J3RLHMHttaunaizQ4UKdjiCmBg7ofaxY04vooCvF/+9rx6fPXjT1ZOt01YdxBm/6rLd6dNw771QvLh9ntKb2AE8PODxx2H9epvcO3RwWg8lpdzNGcm9BzDdCftRqaldGxYssIm9Qwc4mz1jt3eqW4pfnmpD/bKFeWHeJnpPWMPRc5eypSynSEyEhx+23Rtnz7bdHTOjShX45ReIirLP78mTzo1TKTfIUnIXkQDgNmCuc8JRqWrWDObNg23bbH/ti9nTT71UYX+m9G3KqC61WLPvNLd/uJg56yJyZi3+nXfgp5/gww/txV9ZUbcu/Pgj7N8Pd91lE71SuViWkrsx5qIxJsQYk/mBUFT63XYbTJsGK1bYpojL2TO9noeH0Kt5eX5+sjXVigfx9Lf/0H/KOiIvxGZLeZny55/w8svQo4dtWnGG1q1h5kzbhv9//5dtz69SrqBXqOY2995rTwL+/DM880y2FlW+aCAzBzTnxTtrsGhnJLd/uIifNh7N1jLT5fBhO+9stWowerS9qtdZOneGMWPgt9+gTx/b9KNULuTl7gBUJvTrB1u3wkcf2eaaHj2yrShPD6Ffm4q0qxbK09/+w+Bpf9O4hCe1GsYSGuSbbeWmKi4OHngAoqPtFafZ0SXzkUfsuPojR9p2/I8/du4XiFIuoDX33Oq992wXycceg82bs724KsWDmDuoBSNur8r64wnc+sEivl17yPVt8c89Z7uEjh0LNWpkXznPPAPDh9sLnt5+O/vKUSqbOOUipvTSfu5OdvSo7fpXqJCdWLtgQZcUO23+X8w95MfaA2doVbkob3erQ9mQgOwveM4c2yw1ZIhNutktMdE2zUyZYsscNMheNayUi2Wmn7sm99xu8WK4+Wbo0sV2B3RB80F4eDht2rRl6uqDvPvzduITE3n6tmo80rI8Xp6Z/DEYGwvNm8PevRAYCAEB9n/S23/9ZZPr4sXg4+Pcg0pNXBwMHGiHMoiPtxdLPfqoHYgsh12lq/Iud13EpNypTRvbRDN3Lvz3vy4r1sND6NWsHL8Na0PLSkV5a8E27vlyOduOns/cDidNshcTde4Md9wBjRpBuXLg72/b1/ftg/r1YdYs1yV2sLNjjRsHERHw/vv2oqlHH4WSJe1QwqtX69g0KkfSmnteYIytSc6da7sIZvPQAMmHHzDGMH/jUV77YQvnLsXxaKsKPHFLFQJ903m+Pi4OqlaFYsXsIGk5+eSlMbB8uU34M2fa6w0aNLAXQYWGujs6lUdpzT2/ErFjlletanuSuHhCChHh7nql+GN4W+5pUJqvF+/l1g8W8fOmo+k74Tptmr146KWXcnZiBxtfy5b2+T56FD7/3A4x/Nl1Y+Yp5VZac89Ltm2zw93Wq2eHts2m5osbDRy2dv9pXvpuM9uPXaBt1VBe71yL8kVTGYgsIcG2owcE2CSZ05N7Sjp3theWHTxom5GUcjKtued3NWrYGuXy5bZ3R3y8W8JoVL4I84e24uVONVl34Ay3f7SYD3/fSUxcwvUrz5oFO3fmjlp7aoYPt+PRfPONuyNR6iqtuedFzz9vx11p0sQmnCpVnLr7jAz5e/x8DG/+tI0f/zlC2SIBvN65Fu2rF7MLExPtmC7GwKZNdpTG3MgYaNjQjty5eXPuPQ6VY2nNXVn/+Y892bdrl+1hMnq023p0FC/ox6c9bmLqY03x8hQembiGPhNWs/tEFHz3HWzZAi++mLsTooitvW/bZocdVioH0Jp7Xnb4sL0I548/4O677VWdxYplebeZnazjcnwik5bv55M/d3HpcjxLZj1DMY84PLdvB0/PLMflVpcv27H3a9Z0+ry3SmnNXV2rdGlbk/zoIzsQVu3adlhbN/Hx8qBfm4osfKYdL3vso+TebbxeuwuTVx8iPiGXD9Dl4wNPPGG/SDdudHc0Smlyz/M8PODJJ+0wtqVK2Z4dAwbYC4PcpGigD73/mMLlsLLsvb0rr3y/hTs+XsLinZFui8kp+ve3vX4+/NDdkSilyT3fqFULVq2y84WOGQODB7svlt9/h9Wr8XnxBaYMbMnXvRpyOSGRh8evpvf41Ww9ksmrXN0tOBj69oWpU20feKXcSJN7fuLrC+++a0dWnDQJli51TxxvvgllykCfPogIHWqV4LdhbXjhzupsOHSWuz5dwrCZGzh0Ontmm8pWTz5pu6B+8YW7I1H5nCb3/OjFF6FsWTvKYVyca8tetAiWLLG/IHz/HQ/e18uT/m0qsfiZ9gxoU4kFm45yy/8W8caPWzkdnYtmRKpc2Q7i9uWX2TYVolLpock9PwoMtBNQbN7smqFzkxo1CooXt+PQp6BQgDfP3VGd8GfacU+D0kxcvo827y3ks792cfGyey7KyrDhw+HUKTtUsFJuosk9v+rSBe68E1591XVj0axYYQc2GzHihpfplyzkzzv/V9eOOlk5hP/+tpO274czfum+lK90zUlatbKjWn74oU7Tp9xGk3t+JQKffGKbZZ5+OvvL27rVjlxZrJgdHz2dKhcL4utejZgzqAWVQwvwxvyttHlvIROW5eAkf+Wiph077Fy3SrmBJvf8rFIlO1TBzJm2Rp1dVqywtdn4eNtTJhOTXDQsF8z0/s2Y0b8ZFYoG8vqPW2n7/kIm5tQkf++99qTxBx+4OxKVT2lyz+9GjrRJfvBgOxuSs/30E9xyC4SE2AHN6tbN0u6aVQxh5oDmTO/XjHIhgbz241bavR/O5BX7c1aS9/a2FzX99Rds2ODuaFQ+pMk9v/PzsydVd+y4cS3z4EEYMoQqH31km1luZPJk27Zfo4ad1LpCBefEDDSvFMLM/s2Y9lhTwor488r3W2jz3kJGL97DhRgX9wBKTb9+9uT1qFHa9q5czxjjsr+qVasalUN162aMv78x+/dfv+zkSWOGDzfG19cYX18T7+NjDBjToYMxP/9sTELC9du8/75d55ZbjDl3LltDT0xMNEt3RZoHx6ww5UbON3Ve/cW898s2E3khJlvLTZc337TPw2OPGRMf7+5oVC4FrDUZzLea3JV14IAxAQHGdO3672NRUcaMGmVMwYLGeHgY88gjxhw4YJbOm2eTVsmS9i1UvboxX35pTHS0MYmJxjzzjH38/vuNiXFtgt1w8IwZOGWtKf/cfFP1xQXmpXmbzMFT0S6N4RqJica8/LJ9Ph580Ji4OPfFonItTe4qa955x74lvvvOmM8/N6Z4cXu/a1djtmy5utrChQvtjdhYY6ZMMaZBA7tecLAx7drZ24MHu7WmuvvEBTNy9j+m8gs/mYrP/2SGTvvbbDx01m3xmP/8xz4v3bq5/AtP5X6ZSe465K/61+XLdvz3bdvs/TZt7KQfzZtfs9p1Q/4aY9vUP/oIvv8eXn7Z/uWAmZWOnYth/LJ9TF15gOjLCTQqF8wjLSvQoVZxvDxdfMrp00/tSdaOHe1k5joln0qnzAz5q8ldXWvlSnsCcMgQm4RSSNBpjud++XK2zd2aFedj4vh2bQSTlu/n4OmLlCrkR6/m5enRJIzCAS6Md9w4e6K1bVv44QcICnJd2SrXcnlyF5HCwFigNmCAvsaYFamtr8k9b8jsZB05QUKi4a/tJ5iwbB/L95zCz9uDbjeV4ZGW5ala3EWJdto0ePhhO5n5zz9D4cKuKVflWplJ7l5ZLPNj4BdjzL0i4gMEZHF/SmUrTw/htprFua1mcbYfO8/EZfuZ+3cE01cfpFG5YHo0KctddUvi552NM0M9+KBtknngAWjf3k7wERKSfeWpfCnTNXcRKQj8A1Q06dyJ1tzzhtxcc0/JmejLzF5nE/zek9EU9PPingZl6N4kjOolCmZfwb/8Yq8DuOcemD49+8pRuZ5Lm2VEpD4wGtgK1APWAU8aY6KTrdcf6A8QGhracNasWZkqT+UcUVFRFMjEEAI5nTGGHWcSCT8Ux9pjCcQbqFTIg3ZhXjQp4YWvl/NPEJebNIkKEyey8d13Od2kidP3r/KG9u3buzS5NwJWAi2NMatE5GPgvDHm5dS20Zp73pDXau4pOR19+WpzzZ7IaAJ8POlYqwTdGpSmRaWieHo4KdHHxkK9evZE9ObNdpo+pZJxdZt7BBBhjFnluD8beC4L+1MqxygS6MNjrSvyaKsKrNl/hrl/R/DTpqPMXX+Y4gV96Vq/NN0alM56s42vL3z9NbRrB2+8YbueKuUEWe0tswR4zBizQ0ReAwKNMc+ktr7W3POG/FBzT0lMXAJ/bjvBvPURhO+IJD7RUKNkQe65qTR31i1J6cJZ6Lfet6+d3OPvv6FOHecFrfIEd3SFrI/tCukD7AUeMcacSW19Te55Q35N7kmdiopl/kZbk//n0FkA6oUV5s7aJbijdknKhmSweeXUKahe3U7Tt2wZeOiYfupfehGTcglN7tfafzKanzcf4+fNR9kYcQ6A2qULckftktxRuwQVQ9N58nnKFNv//csvMzShicr7NLkrl9DknrpDpy/yy+ZjLNh8lPUHbY2+avECtK9ejFuqF6dB2cKpD3tgDNx6K6xbZ4eAKFnShZGrnEyTu3IJTe7pc+TsJX7efIw/tx1n9b7TxCcaCvl706ZqKDdXD6Vt1WIUCUw29MHOnXZCky5d7AxZSuGeK1SVUqkoVdifR1tV4NFWFTgfE8fSXSf5a/sJwnec4Md/juAhUD+sMK2rhNKiUgj1yxbGt2pVePFFeOUV6N3bTmKuVCZozV1lmNbcsyYx0bDp8LmriX7T4XMkGvDz9qBx+SK0Cgui9+Bu+MbFIlu22NmcVL6mNXelcgEPD6FeWGHqhRVm2G1VOXcpjlV7T7F8zylW7DnFf/46yZ9N+jJr2nP8fN9A9j7zKg3LBVO3TCECfPQjq9JH3ylKuVkhf29ur1WC22uVACDyQiwr997EmuOr6PDLVN695EX3Jv+Hp6cHNUoG0aBsMA3LBdOgbDBlgv2RHDBuvsp5NLkrlcOEBvlyd71S8ONUeOQRnp85kT7Bl5jxyIusORbN7HURTF5xAIDgAG9qlipIrVKFqFmyILVKFaRC0UDXT0SichxN7krlVP7+drTI6tUp+frrDDt5BObOJT64CDuOX+Dvg2fZcvgcW4+eZ+Ly/VyOTwTA18uD6iWCqFmqIJVCC1z9Kx3s77wxcXK56Nh49kRGsftEkr/IKEZ1qU3LykXdHZ5TaHJXKicTgddes1evPvIINGmC1/z51KpZk1qlCl1dLS4hkb2R0Ww9eo4th8+z9eh5ftl8jDMX466u4+PlQfmQACoWLUClYoGUCwmkTGF/ShX2p2RhP3y9snEMexczxnDuUhwRZy4Rceai4/8l9p6MZs+JKA6fvXR1XS8PoVxIAFWLBWXvOP4upsldqdyge3eoUMH2f2/e3PaB79jx6mJvTw+qlQiiWokgut3072anoy+zNzKKPZFR7I2MZk9kNDuPX+D3bcdJSLy2p1xokC+lC/vbv2B/Qgv4UiTQh5ACPoQE+hJSwIcigT5uTYDGGKIvJxB5IZaTUbGcdPyPvBBLZNRlIi/EXE3kUbHx12xbwNeLciEBNC4fTI9iYVQuVoDKxQpQLiQQ7zzYjKXJXancomlTWLMG7r4b7rrLTkg+ZEiaE5EXCfShSGARGpUvcs3jl+MTOXruEofPXuLwmUscORvD4bMXOXI2hm1Hz/PHtuPEOpp5kivg60XhAG8K+HoR6OtFgI/n1duBPp4E+nrh4+WBl4fg4SH2v9j/np4eeIid7jAuwRCXkEh8QiJxCYb4RPs/Ni6BCzHxXIiNJyomnguxcUTFxBMVG8/5mPirzU9JiUCRAB9Cg3wpE+xPs4ohlAn2p0xwAGWC/QkLDqCgv1e+OvmsyV2p3CQsDJYuhYcegieegB074OOPwTNjtWkfLw/KhdimmZQYY4iKjedU1GVORV/mVFQsp6Ov3L7MmYuXiY6NJ/pyPBdi4jl2LsZxP4Ho2HjiEzN+/YyXh+Dt6YGPlwdBfl4E+XkT5OtFsSA/Khb1IsjPiwJ+XhQJ8KFoAV9Cg3wpWsCXokE+FAnw0ZPIyWhyVyq3KVAA5s6FZ5+F//0Pjh+3g475+TmtCBGxydXPm/JFM34RVWKiIcEYEhLtX3ziv7cTjcHTkci9PQUvD/s/P9WqXUGTu1K5kYcH/Pe/UKoUPP00REbC999DoUI33tYFPDwED4Q8dH4y19HfMUrlZsOHw7RpsHw5tGkDR464OyKVQ2hyVyq369EDfvoJ9u6FFi1sO7zK9zS5K5UX3HYbLFoEly5By5awalXK6yUkwPbtMGOGPTGr8ixtc1cqr2jQwDbPdOgA7dvD1KlQvDhs2AD//GP/b9pkvwCu+Phj2+tG5Tma3JXKSypVsgn+zjvhnnv+fTw4GOrXhwED7P86deCtt+DJJ+HoUXj77TT7yzvF/v0QHm7/Xn7ZxqqyjSZ3pfKaYsVg4ULb9FKihE3mZcpcn7xnzYLBg+Gdd+DYMRg9Gry9nRODMf8m80WL7P8DdrAzQkLgwQc1uWczTe5K5UVBQdCvX9rreHraybhLlYJXX7XdKWfNgoCAzJcbG2v3NX06HDxoHytaFNq2hREjoF07qFnTduVU2UqTu1L5mYid0q94cXj8cbjlFpg/39auM+rgQbjvPli92o6B8+yzNpnXqKHJ3A00uSulbFt8sWK2W2WrVvDrr1C2bPq3//VX6NkTLl+GOXOube9XbqFfp0opq1s3+O03e4K1eXP49luIiUl7m8REeOMNuOMO27yzdq0m9hxCk7tS6l9t2sCSJeDjA/ffb0/IPvaYPSGamGw0xlOn7OiUr75qBzJbuRKqVnVL2Op6mtyVUteqUwd277a1+C5d7Njx7dtDuXIwcqTtK79mje1X/9df8NVXMGlS1k7EKqfT5K6Uup6np73qddIkO+rk9OlQrx588AHUrWvHlgd7leuAAdnfR15lmJ5QVUqlLSDAzgTVvfu/3SUPHLC1+Mz0qlEukaXkLiL7gQtAAhBvjGnkjKCUUjlUaKi98EnleM6oubc3xpx0wn6UUko5iba5K6VUHpTVmrsBfhMRA3xtjBmdfAUR6Q/0BwgNDSU8PDyLRSp3i4qK0tdRqRxOjMn4RLZXNxYpZYw5IiLFgN+BocaYxamtX61aNbNDJxLI9cLDw2nXrp27w1Aq3xCRdRk9p5mlZhljzBHH/xPAPKBJVvanlFLKOTKd3EUkUESCrtwGbgc2OyswpZRSmZeVNvfiwDyxFy94AdOMMb84JSqllFJZkunkbozZC9RzYixKKaWcJEsnVDNcmMgFILUzqoWAc2lsnpXl7to2t+77RtsWBdK6tiG/vRYaV87Zd16Nq5oxJiiN5dczxrjsD1ibxrLRN9g208vdtW1u3Xc6tk31dcyPr4XGlXP2nYfjSvMzl9JfTrqI6cdsXO6ubXPrvm+07Y3kt9dC48o5+86rcWWYq5tl1hodfybX09dRKdfKzGfO1TX3665gVbmSvo5KuVaGP3MurbkrpZRyjZzU5u4UIhImIgtFZJuIbBGRJx2PFxGR30Vkl+N/sLtjTa80jmmmiGxw/O0XkQ3ujjUjRKSjiOwQkd0i8lyyZZ+KSJS7YsssERkvIidEZHOSx+5zvG6JIpLrmrNSOab6IrLS8d5bKyK56ur0ND5Tr4nI4SSfqzvdHWumZfQMbE7/A0oCDRy3g4CdQE3gPeA5x+PPAe+6O9asHlOydf4HvOLuWDNwTJ7AHqAi4AP8c+WYgEbAFCDK3XFm4rjaAA2AzUkeqwFUA8KBRu6O0UnH9Btwh+P2nUC4u+PM4DGllideA0a4Oz5n/GVbzT2lb3vH40MdtbUtIvKes8s1xhw1xvztuH0B2AaUBroAkxyrTQK6Orvs7JLGMQEg9jLh+4HpWS1LRIyITEly30tEIkVkflb3nUwTYLcxZq8x5jIwA+giIp7A+8CzTi7PJYwdOO90sse2GWNy7Yh5KR0TdkTYgo7bhYAjLg0qi270mXIXEfETkdUi8o8jR77ueLyCiKxytDzMFBGfG+0rO5tlJgIdkz4gIu2xSbauMaYW8N9sLB8RKQ/cBKwCihtjjoJ9YYFi2Vl2dkl2TFe0Bo4bY3Y5oYhooLaI+Dvu3wYcdsJ+kysNHEpyP8Lx2BDghyuvlcqxngLeF5FD2M/x826O/bgBPgAAA/JJREFUJ9NS+EwNEZGNjgqqq5tvY4GbjTH1gPpARxFpBrwLfGiMqQKcAR690Y6yLbmn8m0/CHjHGBPrWOdEdpUvIgWAOcBTxpjz2VWOK6VxTD1wQq09iZ+Bu1Lat4g0EZHlIrLe8b+a4/ElIlI/yXrLRKRuGmWkNKOyL3Af8GmWj0Blt0HAMGNMGDAMGOfmeDIlhc/Ul0AlbGI9im3udBljXTnX5O34M8DNwGzH4+lqeXD1CdWqQGvHz4tFItI4OwoREW/sCzbVGDPX8fBxESnpWF4SyLYvluyQyjEhIl7APcBMJxY3A+guIn5AXa79lbAdaGOMuQl4BXjb8fhYoI8jpqqArzFmYxplRABhSe6XAfYDlYHdjvl5A0Rkd1YPRmWL3sCV9+G35MLhvlP6TBljjhtjEowxicAY3HBcIuLp6BxxAjtPxh7grDEm3rHKlV+5aXJ1cvcCgoFmwDPALEd7sdM49jcO2GaM+SDJoh+wb0gc/793ZrnZKY1jArgV2G6MiXBWeY6kXB5ba1+QbHEh4FvHuZQPgVqOx78FOjk+MH2xzXJpWQNUcbQl+gDdge+MMSWMMeWNMeWBi8aYyk44JOV8R4C2jts3A85oEnSZ1D5TVyqADt1wwzDmji+X+tgKTxPsCfnrVrvRfpwxQXZGRABzjT1FvVpEErGDUEU6sYyWQC9gU5KugS8A72C/TB4FDmJ//ucWKR6TMWYBNik6s0nmih+wbantgJAkj48CFhpjujnaKsMBjDEXReR37DmV+7E9XlJljIkXkSHAr9ieM+ONMVucewiuJyLTsc9ZURGJAF7FNk9+CoQCP4nIBmNMB/dFmTGpHFM/4GPHL8cYHFNp5iKp5YkejuZFg/0l+f/t3DFKA0EUxvH/ByIIgoJYKFY22nsBwSvY2KidvY2FBxDt7CWW2mlhZ5GAipWNXiEHUFuLZzEDhpgsCWx2w/L9yh2WeQvJ2zfzljmqJzyIiE9JHVIxvChpJlfva4zQwK46ud+T3vKdvHSfpfh0wbFFxDOD93MBdsqcqypFzxQRhxOatgV8RcSHpO2e6wv8NVj7574inZHxFBH9/ZZ/8supf2XQOz4/TsDTICL2hgzdVRpIiQqeaavSQEpU8J8a+nusgqRl4Ccn9jnSyvwcaAO7pC3TkXYeJvkp5A3wCmxI6uaKuQWs5yX9LXCQq3ibMhHRjYjLAUMXwJmkF1LF3XvPG/ANXFcQolkTrQBtSe+krcvHiHgAToDj3INaYoQGto8fsNJIWiVt02zmhpSZ1aRxxw9YPSTtk76qOXViN6ufK3czswZy5W5m1kBO7mZmDeTkbmbWQE7uZmYN5ORuZtZAv1MU4FiAa5UWAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# fit polynomial curve\n", "coeffs = np.polyfit(fit_df.day_of_yr, fit_df.sma_growth, 2) # 2nd degree\n", "extrapolation_eqn = np.poly1d(coeffs)\n", "projections['projected_growth'] = extrapolation_eqn(projections.day_of_yr)\n", "\n", "# x axis ticks\n", "mj_l = AutoDateLocator()\n", "mj_f = ConciseDateFormatter(mj_l, show_offset=False)\n", "mn_l = DayLocator()\n", " \n", "ax = projections[start_idx:end_idx+5].plot(y='projected_growth', grid='True')\n", "_ = projections[start_idx:end_idx+10].plot(y='sma_growth', color='red', grid=True, title=\"Polynomial projections for growth rate\", ax=ax)\n", "\n", "ax.xaxis.set_major_formatter(mj_f)\n", "ax.xaxis.set_minor_locator(mn_l)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# train a neural network with hyperbolic activation function from day_of_yr => sma_growth\n", "regressor = MLPRegressor(hidden_layer_sizes = (100,), activation = 'logistic', solver='lbfgs', max_iter=500)\n", "# regressor = MLPRegressor(hidden_layer_sizes = (100,), activation = 'tanh', solver='lbfgs', max_iter=500)\n", "_ = regressor.fit(X=fit_df[['day_of_yr']], y=fit_df['sma_growth'])" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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akLwyMhw5uaUUkpdAKcmBCms8oZSSql65sknn+Q///nPBa934MABPv744wte77bbbuOzzz674PUcJSkp6Zy4P/jgA/70p6puSucenNtDKCxw5uaUUtVUWMmPtWeffZaRI0decJkHDx6sUUJwhIKCmrc1ZRNCY+LUw049CgtJP5tPsK9rjrFVypWe+Xor21LOlDwvLCzEw8OjVmX2aBXEU2N6VrpMUlISo0aNYtCgQaxfv56oqCg+/PBDevToweTJk1myZAl/+tOf6NatG1OnTiU7O5tOnToxZ84cQkJCuO222xg9ejTjx48nMTGRadOmkZmZSfPmzfnggw9o2bIle/bsYerUqaSmpuLh4cGnn37KU089xa5du+jTpw+TJk3innvu4ZFHHiE+Pp7c3Fz++Mc/MmXKFIwx3H333SxdupQOHTpQ1SX5v/32W6ZNm0bz5s3p168f+/btY/HixTz99NOkpKSQlJRE8+bNmTNnDnfddRcJCQl4enoyffp0RowYwZVXXsmLL75ITEwMffv2Zdy4cTz55JM88cQTtGvXjnfffZft27eXxB0SEkJKSgqjRo1i7969jBs3jieeeKLC+AICArj33ntZvHgxvr6+fPXVV4SHh3PbbbcRFBREQkICR48e5eWXX2b8+PE1et/rilN7CF5FBSSlZjpzk0opYOfOndx5551s2rSJoKAgZs607qfj4+PDqlWr+N3vfsett97KSy+9xKZNm4iOjuaZZ545p4z8/HzuvvtuPvvsMxITE5k8eTJ/+ctfALjpppv44x//yMaNG1mzZg0tW7bkmWeeIS4ujg0bNnD//ffz3nvvERwczLp161i3bh2zZ89m//79fPHFF+zcuZPNmzcze/Zs1qxZU2E9cnJymDJlCt999x2rVq0iNTX1nPmJiYl89dVXfPzxx7z55psAbN68mQULFjBp0iRycnIYOnQoK1eu5MyZM3h6erJ69WoAVq1aRVxcHC+++OI5cQNs2LCBhQsXsnnzZhYuXEhycnKFMWZlZTF48GA2btzI0KFDmT17dsm8I0eOsGrVKhYvXswjjzxS3bfPaZzaQxDgcFIKvduGOHOzStULZX/JO/PErcjISC6++GIAbr75ZmbMmAHADTfcAEB6ejppaWkMG2bdlnnSpElcf/25N6zbuXMnW7Zs4bLLLgOsHk7Lli3JyMjg8OHDjBs3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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "projections['projected_growth_nn'] = regressor.predict(X=projections[['day_of_yr']])\n", "ax = projections[start_idx:end_idx+150].plot(\n", " y='projected_growth_nn', \n", " grid=True\n", ")\n", "_ = projections[start_idx:end_idx+150].plot(\n", " y='sma_growth', \n", " color='red', \n", " title=\"NeuralNet projections for growth rate\", \n", " ax=ax, \n", " grid=True\n", ")\n", "\n", "ax.xaxis.set_major_formatter(mj_f)\n", "ax.xaxis.set_minor_locator(mn_l)\n", "ax.tick_params(labeltop=False, labelright=True)\n", "\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# compute total and daily numbers based on projected rate\n", "prev_row_total = 0\n", "def project(row):\n", " global prev_row_total\n", " if not np.isnan(row['total']):\n", " prev_row_total = row['total']\n", " return row['total']\n", " prev_row_total *= (1 + row['projected_growth_nn']/100)\n", " return prev_row_total\n", "\n", "projections['projected_total'] = projections.apply(project, axis=1).astype('int64')" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Date\t Projected Cases\n", "May 31\t \t 193477\n", "June 30 \t 642672\n", "July 31 \t 1599555\n" ] }, { "data": { "image/png": "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v4iISJzRYX8REZE4o+QvIiISZ1rdOf/09HQfNGhQtMOQFqKkpISOHTtGOwyJQdo2GmjNmtDzkCHRjSNKorm9LFq0aJe7d6+75mdaXfLv2bMnCxcujHYY0kJkZWWRmZkZ7TAkBmnbaKADn1VWVjSjiJpobi9mtrGhy+iwv4iISJxR8hcREYkzSv4iIiJxptWd84+koqKC3NxcysrKoh2KNEBycjIZGRkkJSVFOxQRkVYlLpJ/bm4uKSkp9O/fn9AdUyXWuTv5+fnk5uYyYMCAaIcjIhKTcnYU1V0pgrg47F9WVkbXrl2V+FsQM6Nr1646WiMicgRlFVXc8czio1o2LpI/oMTfAulvJiJyZA/+ZzWrt6nnLyIiEhfmrd7BX/+7gevO7H9Uyyv5txA//vGPeeONNxq83IYNG3jmmWcavNx1113H888/f8T5v/vd7ygtLa2znfvvv79e6+vfvz+7du2qd3wiIvFqR1EZ//O3JQw9LoV7Jw49qjaU/GNIVVXVEefdd999XHjhhQ1u82iTf10aO/mLiEjdqqud7z63hOLySh6ePIbkpISjaicuRvuH+9m/VrBy695GbXNY71R+8sXhtdbZsGEDEyZMYNy4cSxevJgTTzyRJ598kmHDhnHDDTfw2muvcccddzB06FBuvfVWSktLGThwINOnT6dz585cd911XHrppVxxxRUsWrSIu+++m+LiYrp168aMGTPo1asXOTk53HrrrezcuZOEhAT+9re/ce+997Jq1SpGjx7NlClTuPPOO7n33nvJysqivLyc22+/nVtuuQV351vf+hZvvfUWAwYMoLafep42bRpbt27lvPPOo1u3bsybN4/Zs2dz//334+584Qtf4MEHH+Tee+9l3759jB49muHDh/P0009z2WWXsXnzZsrKyrjrrruYOnVqo/4tRERasyfeW8+7a3fxi8tOZnDPlKNuRz3/ZrRmzRqmTp3K0qVLSU1N5ZFHHgFC17O/9957XH311Vx77bU8+OCDLF26lBEjRvCzn/3skDYqKir41re+xfPPP8+iRYu44YYb+OEPfwjANddcw+23386SJUt4//336dWrFw888ACf+9znyM7O5jvf+Q5PPPEEaWlpLFiwgAULFvD444+zfv16XnjhBdasWcOyZct4/PHHef/994/4Pu6880569+7NvHnzmDdvHlu3buWee+7h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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# plot 100 days from feb 1\n", "ax = projections[0:100].plot(\n", " y='projected_total', \n", " title=\"Projected total cases\", \n", " grid=True,\n", " figsize=(8,3)\n", ")\n", "ax.xaxis.set_major_formatter(mj_f)\n", "ax.xaxis.set_minor_locator(mn_l)\n", "ax.axvline(x=dt.datetime(day=18, month=5, year=2020), color='red')\n", "\n", "#print(\"Projected death Count on \",projections.index[91].strftime(\"%B %d\") , \"is\", projections['projected_total'][91])\n", "print(\"Date\\t Projected Cases\")\n", "print(projections.index[91].strftime(\"%B %d\\t\"),\"\\t\", projections['projected_total'][91])\n", "print(projections.index[121].strftime(\"%B %d\"),\"\\t\", projections['projected_total'][121])\n", "print(projections.index[152].strftime(\"%B %d\"),\"\\t\", projections['projected_total'][152])\n", "#projections[90:96]" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# plot next 100 days \n", "_ = projections[100:].plot(y='projected_total', title=\"Projected total cases\", grid='True')\n", "\n", "#projections[130:10]" ] } ], "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.7.3" } }, "nbformat": 4, "nbformat_minor": 4 }