Master-DataScience-Notes/1year/2trimester/Coding for Data Science - Python language/Python/Examples/HackCovid19.ipynb
Andreaierardi 85dffda1f4 up
2020-03-13 12:21:47 +01:00

98 lines
31 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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5urduzejRo3iscceY9q0adjb27eaxv5yiYmJrFy50nwmkmkIa+zYseY09z/++CPff/99s68fO3Ysr732GmPGjMHHx4eioiJOnjxJeHj4Fc9tnGrf1oKDgzly5AhGo5G8vDzzCbVtdfl7CQwMJDAwkBdffLHJfM71aDUkff755+b7fn5+7NmzBwAfHx9KSkos0gCpc1IJI961OmqBMjcNLfVHdReVCdt+7v2UgiFDlGik0yk77GVPtkuLiYkhKiqK9evXc++993LixAnGjBkDKIHh73//e5M09fb29sTExLB27VreeOMN5s6dy6uvvmoepzeZNWsWM2bMME8qgxJ05s+fz4svvkh9fT0pKSlERUVd0abFixfz+OOPExkZiRCC4OBgNm/ezPz587nvvvuIjIwkOjqaUaNGNfue4uLiKCwsZOzYsYAyPObr69ts7+aBBx5g6tSpBAQEsGvXruv5Vl63m266iQEDBhAREcGwYcOanSNqzZw5c3jooYdwcXFh3759uLi4cM8993D+/HmLHZHepmzDUg9UUMDRh9/lbI0XoSsX0GjEs4lNP23icMFhpminMFrTkONr82Y4eFDZRT95cse1uRuQ2YaljvToo48SExNjXnhxOatkG87JyWHlypXk5uY2GZuT6eu7sfx8nJyg3FHT6kFb5gn5xgkho6OVgHL0KEyc2OL+FUmSbGfEiBH06tWLv/zlLxars00B5fbbb2fevHncdttt2Nl1+KnBki3k5eHkBGWOQS0GlHpDPecqz6FChX9v/0sP9OsHPj7KDvusLBg8uGPaLElSmx06dMjidbYpOjg7O7NgwQLi4+MZN26c+etalZaWkpyczODBgxkyZAj79u2juLiYhIQEQkNDSUhIMM/RCCFYsGABWq2WyMhIDh8+bK4nLS2N0NBQQkNDzccEg/KNioiIQKvVmlenSO1k6qG4t9xDKawsxCiM+PTywdH+Uq43VKpLk/MtrNqRJKn7aVNAeeyxx1i6dCn79u3j8OHD5q9r9dhjjzFlyhROnjzJ0aNHGTJkCMuXL2fixIlkZWUxceJEcy6crVu3kpWVRVZWFu+99x7z588HlJUkS5cu5cCBA2RmZrJ06VJzEJo/fz7vvfee+XUZGRnX3NYeqa4OiotxdLGnspdviwGl2eEuk8hIsLODn3+GhlVBUtvIP4CkzuBafg7bNOT1ww8/8OGHH7Jz507zkJdKpTLvYm2P8vJyvv76a9auXQsoG3IcHR1JT083r/hITU017xpNT09n9uzZqFQqRo8eTWlpKQUFBezevZuEhATzJqqEhAQyMjIYP3485eXl5pUos2fPZuPGjXITZntcuACAQ0BfRI19iwFFV96wwsut35UP9u6tHA/800/www/Q8P8htc7BwYGKigp69+4t0xtJNiOEoKKiAgeH9p1t1KaA8u9//5vTp083SWF/rU6fPo2Pjw/33XcfR48eZcSIEbz++usUFhYSEBAAQEBAgPm8FZ1OR1DQpX0QGo0GnU7XarlGo7miXGqHhu+9s8YHTnFtPRRQJud/+kkZ9ho9WhkKk1rl5eVFcXFxp9n7IPVcDg4O5j/Y26pNASUqKorS0lKL7I7X6/UcPnyYlStXEhcXx2OPPdZqqufmul0qlard5VI7NAQUR40v6lwli0ptrbK9xKTOUMeFqgvYqezw6+3XfD2DBoGrKxQWwq+/QsMfDFLL7O3t8fHxsXUzJOmatGkOpbCwkMGDB5OYmEhSUpL561poNBo0Go05EVtycjKHDx/Gz8+PgoICAAoKCszBS6PRkNcoe21+fj6BgYGtlufn519RLrXD+fMAqPx86dNHKbp8H2vBxQIEAr9efqjtWvi7xN4ehg1T7rew61mSpO6jTT2UpUuXWuyC/v7+BAUF8dNPPxEWFsZXX33F0KFDGTp0KGlpaSxatIi0tDSmT58OKHl/3nzzTVJSUjhw4AAeHh4EBASQmJjIn/70J/NE/Pbt21m2bBleXl64ubmxf/9+4uLiWLduHb///e8t1v4ewXS8s48Pnp7KlEppKfg3Whl81eEuk+hoyMxU5lESEuSeFEnqxtoUUK5niXBzVq5cyT333ENdXR0hISF88MEHGI1GZs6cyerVq+nfv785p88tt9zCli1b0Gq1uLq6mtM3eHl5sXjxYnNOseeee8483vf2228zZ84cqqurmTp1qpyQb4/aWigrUz74vbzw9FSKL++htDmgBARc2pNy6pRyUJckSd1Sm1KvuLm5mech6urqqK+vp1evXpS3toVa6pry8+FvfwM/P5g/n2++ge3bYdQouOWWS09748AbFFcX89DIh5puamzO3r2wY4eS52vWLOu2X5Ikm2lTD+XyFScbN25sd6ZLqYtomD8xJXU09VAaHyteXV9N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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"from scipy.integrate import odeint\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Total population, N.\n",
"N = 160000\n",
"# Initial number of infected and recovered individuals, I0 and R0.\n",
"I0, R0 = 1, 0\n",
"# Everyone else, S0, is susceptible to infection initially.\n",
"S0 = N - I0 - R0\n",
"# Contact rate, beta, and mean recovery rate, gamma, (in 1/days).\n",
"beta, gamma = 0.5, 1./10\n",
"# A grid of time points (in days)\n",
"t = np.linspace(0, 160, 160)\n",
"\n",
"# The SIR model differential equations.\n",
"def deriv(y, t, N, beta, gamma):\n",
" S, I, R = y\n",
" dSdt = -beta * S * I / N\n",
" dIdt = beta * S * I / N - gamma * I\n",
" dRdt = gamma * I\n",
" return dSdt, dIdt, dRdt\n",
"\n",
"# Initial conditions vector\n",
"y0 = S0, I0, R0\n",
"# Integrate the SIR equations over the time grid, t.\n",
"ret = odeint(deriv, y0, t, args=(N, beta, gamma))\n",
"S, I, R = ret.T\n",
"\n",
"# Plot the data on three separate curves for S(t), I(t) and R(t)\n",
"fig = plt.figure(facecolor='w')\n",
"ax = fig.add_subplot(111, axisbelow=True)\n",
"ax.plot(t, S, 'b', alpha=0.5, lw=2, label='Susceptible')\n",
"ax.plot(t, I, 'r', alpha=0.5, lw=2, label='Infected')\n",
"ax.plot(t, R, 'g', alpha=0.5, lw=2, label='Recovered with immunity')\n",
"ax.set_xlabel('Time /days')\n",
"ax.set_ylabel('Number (1000s)')\n",
"#ax.set_ylim(0,1.2)\n",
"ax.yaxis.set_tick_params(length=0)\n",
"ax.xaxis.set_tick_params(length=0)\n",
"ax.grid(b=True, which='major', c='w', lw=2, ls='-')\n",
"legend = ax.legend()\n",
"legend.get_frame().set_alpha(0.5)\n",
"for spine in ('top', 'right', 'bottom', 'left'):\n",
" ax.spines[spine].set_visible(False)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}