From 886e233e244195c77f095e73f92bc426607f61aa Mon Sep 17 00:00:00 2001 From: samirop Date: Fri, 26 Nov 2021 12:24:11 -0300 Subject: [PATCH] Removed deprecated libraries --- deprecated/Data/Confinamiento_COVID19.xlsx | Bin 203703 -> 0 bytes .../Movilidad_diaria_comuna.csv | 346 --- .../Movilidad_diaria_comuna.xlsx | Bin 34227 -> 0 bytes .../Data/UrbanCentersChile/UrbanCenter_0.csv | 3 - .../Data/UrbanCentersChile/UrbanCenter_1.csv | 3 - .../Data/UrbanCentersChile/UrbanCenter_2.csv | 6 - .../Data/UrbanCentersChile/UrbanCenter_3.csv | 3 - .../Data/UrbanCentersChile/UrbanCenter_4.csv | 2 - .../Data/UrbanCentersChile/UrbanCenter_5.csv | 11 - .../Data/UrbanCentersChile/UrbanCenter_6.csv | 3 - .../Data/UrbanCentersChile/UrbanCenter_7.csv | 48 - .../Data/UrbanCentersChile/UrbanCenters.txt | 8 - deprecated/Data/UrbanCentersChile/readme.md | 1 - deprecated/Data/cut_2018_v03.xls | Bin 79872 -> 0 bytes deprecated/Data/cutlist.csv | 346 --- deprecated/Debug/SEIRvsSEIRHVD.ipynb | 689 ----- deprecated/Examples/CreatingDataManager.ipynb | 1660 ------------ deprecated/Examples/Pandasgui_test.ipynb | 598 ----- .../Quarantine_SeroPrev_Dynamics.ipynb | 143 -- deprecated/Examples/SEIR.ipynb | 464 ---- deprecated/Examples/SEIRHVD_basic.ipynb | 263 -- .../SEIR_ImmunityShieldKyneticSat.ipynb | 343 --- deprecated/Examples/SEIR_Optimization.ipynb | 277 -- .../SEIR_Saturation_Kinetics_Dynamics.ipynb | 347 --- deprecated/Examples/SEIR_old.ipynb | 379 --- deprecated/Examples/TOML.ipynb | 178 -- deprecated/Examples/functionslib.ipynb | 240 -- deprecated/src/SEIR/Quarantine.py | 177 -- deprecated/src/SEIR/SEIRHVD_quarantine.py | 56 - deprecated/src/SEIR/SEIRHVD_tables.py | 214 -- deprecated/src/SEIR/SEIR_importdata.py | 399 --- deprecated/src/SEIR/SEIR_optimization.py | 123 - deprecated/src/SEIR/SEIR_parallel.py | 107 - deprecated/src/SEIR/SEIR_plots.py | 338 --- deprecated/src/SEIR/SEIR_tests.py | 138 - deprecated/src/SEIR/SEIR_vars.py | 239 -- deprecated/src/SEIR/SEIRmodel.py | 108 - deprecated/src/SEIR/SIR.py | 152 -- deprecated/src/SEIR/class_SEIR.py | 385 --- deprecated/src/SEIR/class_SEIR2.py | 353 --- deprecated/src/SEIR/class_SEIRQ.py | 371 --- deprecated/src/SEIR/class_SEIRTQM.py | 429 ---- deprecated/src/SEIR/class_SEIR_QA.py | 276 -- deprecated/src/SEIR/class_SEIR_old.py | 1068 -------- deprecated/src/SEIRHVD/SEIRHVD4_tests.py | 637 ----- deprecated/src/SEIRHVD/SEIRHVD_Analysis.py | 111 - deprecated/src/SEIRHVD/SEIRHVD_Example.py | 85 - deprecated/src/SEIRHVD/SEIRHVD_importdata.py | 211 -- deprecated/src/SEIRHVD/SEIRHVD_local.py | 110 - deprecated/src/SEIRHVD/SEIRHVD_plots.py | 1304 ---------- deprecated/src/SEIRHVD/SEIRHVD_quarantine.py | 56 - deprecated/src/SEIRHVD/SEIRHVD_remote.py | 109 - deprecated/src/SEIRHVD/SEIRHVD_tables.py | 214 -- deprecated/src/SEIRHVD/SEIRHVD_tests.py | 217 -- deprecated/src/SEIRHVD/SEIRHVD_vars.py | 241 -- deprecated/src/SEIRHVD/SEIR_tests.py | 140 - deprecated/src/SEIRHVD/class_SEIR.py | 1076 -------- deprecated/src/SEIRHVD/class_SEIRHUVD2.py | 1054 -------- deprecated/src/SEIRHVD/class_SEIRHUVD3.py | 1065 -------- deprecated/src/SEIRHVD/class_SEIRHUVD4.py | 1173 --------- deprecated/src/SEIRHVD/class_SEIRHUVD5.py | 1267 --------- deprecated/src/SEIRHVD/class_SEIRHUVD6.py | 1266 --------- deprecated/src/SEIRHVD/example.py | 32 - deprecated/src/SEIRHVD/readme.md | 239 -- deprecated/src/SEIRHVDStar/README.md | 3 - ...y_and_variable_entropy_optimization..ipynb | 606 ----- deprecated/src/SEIRStar/SEIR_star_QA.ipynb | 1555 ----------- ...ar_connectivity_and_entropy_analysis.ipynb | 2264 ----------------- .../src/SEIRStar/SEIR_star_playground.ipynb | 695 ----- .../SEIR_star_synthetic_data_maker.ipynb | 787 ------ deprecated/src/SEIRStar/class_SEIRStar.py | 301 --- .../src/SEIR_Class_beta - Old Code/Chile.py | 235 -- .../SEIR_Class_beta - Old Code/DataManager.py | 62 - .../Multi_dist_ref_SEIR.py | 369 --- .../SEIR_Class_beta - Old Code/Multi_test.py | 9 - .../Nat_ref_test.py | 34 - .../SEIRHUD_Markov.py | 3 - .../SEIRNational.py | 262 -- .../SEIR_Class_beta - Old Code/SEIRPlot.py | 126 - .../src/SEIR_Class_beta - Old Code/SEIRSym.py | 200 -- .../SEIRplatform.py | 489 ---- .../SEIR_Class_beta - Old Code/SEIRrefiner.py | 798 ------ .../SEIR_Class_beta - Old Code/SEIRtomate.py | 224 -- .../src/SEIR_Class_beta - Old Code/SEIRuni.py | 73 - .../Single_dist_ref_SEIR.py | 707 ----- .../Single_dist_ref_SEIR_pygmo.py | 574 ----- .../SEIR_Class_beta - Old Code/__init__.py | 1 - .../SEIR_Class_beta - Old Code/class_SEIR.py | 196 -- .../SEIR_Class_beta - Old Code/class_test.py | 220 -- .../SEIR_Class_beta - Old Code/pygmo-test.py | 80 - .../temp/CovidSEIR.py | 530 ---- .../temp/param_finder.py | 93 - .../unidataunifier.py | 33 - .../urbancenterslocator.py | 52 - deprecated/src/SEIR_bimodal/SEIRbimodal_QA.py | 98 - .../src/SEIR_bimodal/class_SEIR_bimodal.py | 338 --- deprecated/src/backend/SEIRplatform.py | 626 ----- deprecated/src/utils/Events.py | 172 -- deprecated/src/utils/Quarantine.py | 348 --- deprecated/src/utils/ReproductionNumber.py | 53 - deprecated/src/utils/Smoothing.py | 76 - deprecated/src/utils/Smoothing_retro.py | 82 - deprecated/src/utils/filemanager.py | 46 - deprecated/src/utils/functions.py | 216 -- deprecated/src/utils/importdata.py | 2068 --------------- deprecated/src/utils/readme.md | 49 - deprecated/src/utils/timeutils.py | 15 - 107 files changed, 37669 deletions(-) delete mode 100644 deprecated/Data/Confinamiento_COVID19.xlsx delete mode 100644 deprecated/Data/UrbanCentersChile/Movilidad_diaria_comuna.csv delete mode 100644 deprecated/Data/UrbanCentersChile/Movilidad_diaria_comuna.xlsx delete mode 100644 deprecated/Data/UrbanCentersChile/UrbanCenter_0.csv delete mode 100644 deprecated/Data/UrbanCentersChile/UrbanCenter_1.csv delete mode 100644 deprecated/Data/UrbanCentersChile/UrbanCenter_2.csv delete mode 100644 deprecated/Data/UrbanCentersChile/UrbanCenter_3.csv delete mode 100644 deprecated/Data/UrbanCentersChile/UrbanCenter_4.csv delete mode 100644 deprecated/Data/UrbanCentersChile/UrbanCenter_5.csv delete mode 100644 deprecated/Data/UrbanCentersChile/UrbanCenter_6.csv delete mode 100644 deprecated/Data/UrbanCentersChile/UrbanCenter_7.csv delete mode 100644 deprecated/Data/UrbanCentersChile/UrbanCenters.txt delete mode 100644 deprecated/Data/UrbanCentersChile/readme.md delete mode 100644 deprecated/Data/cut_2018_v03.xls delete mode 100644 deprecated/Data/cutlist.csv delete mode 100644 deprecated/Debug/SEIRvsSEIRHVD.ipynb delete mode 100644 deprecated/Examples/CreatingDataManager.ipynb delete mode 100644 deprecated/Examples/Pandasgui_test.ipynb delete mode 100644 deprecated/Examples/Quarantine_SeroPrev_Dynamics.ipynb delete mode 100644 deprecated/Examples/SEIR.ipynb delete mode 100644 deprecated/Examples/SEIRHVD_basic.ipynb delete mode 100644 deprecated/Examples/SEIR_ImmunityShieldKyneticSat.ipynb delete mode 100644 deprecated/Examples/SEIR_Optimization.ipynb delete mode 100644 deprecated/Examples/SEIR_Saturation_Kinetics_Dynamics.ipynb delete mode 100644 deprecated/Examples/SEIR_old.ipynb delete mode 100644 deprecated/Examples/TOML.ipynb delete mode 100644 deprecated/Examples/functionslib.ipynb delete mode 100644 deprecated/src/SEIR/Quarantine.py delete mode 100644 deprecated/src/SEIR/SEIRHVD_quarantine.py delete mode 100644 deprecated/src/SEIR/SEIRHVD_tables.py delete mode 100644 deprecated/src/SEIR/SEIR_importdata.py delete mode 100644 deprecated/src/SEIR/SEIR_optimization.py delete mode 100644 deprecated/src/SEIR/SEIR_parallel.py delete mode 100644 deprecated/src/SEIR/SEIR_plots.py delete mode 100644 deprecated/src/SEIR/SEIR_tests.py delete mode 100644 deprecated/src/SEIR/SEIR_vars.py delete mode 100644 deprecated/src/SEIR/SEIRmodel.py delete mode 100644 deprecated/src/SEIR/SIR.py delete mode 100644 deprecated/src/SEIR/class_SEIR.py delete mode 100644 deprecated/src/SEIR/class_SEIR2.py delete mode 100644 deprecated/src/SEIR/class_SEIRQ.py delete mode 100644 deprecated/src/SEIR/class_SEIRTQM.py delete mode 100644 deprecated/src/SEIR/class_SEIR_QA.py delete mode 100644 deprecated/src/SEIR/class_SEIR_old.py delete mode 100644 deprecated/src/SEIRHVD/SEIRHVD4_tests.py delete mode 100644 deprecated/src/SEIRHVD/SEIRHVD_Analysis.py delete mode 100644 deprecated/src/SEIRHVD/SEIRHVD_Example.py delete mode 100644 deprecated/src/SEIRHVD/SEIRHVD_importdata.py delete mode 100644 deprecated/src/SEIRHVD/SEIRHVD_local.py delete mode 100644 deprecated/src/SEIRHVD/SEIRHVD_plots.py delete mode 100644 deprecated/src/SEIRHVD/SEIRHVD_quarantine.py delete mode 100644 deprecated/src/SEIRHVD/SEIRHVD_remote.py delete mode 100644 deprecated/src/SEIRHVD/SEIRHVD_tables.py delete mode 100644 deprecated/src/SEIRHVD/SEIRHVD_tests.py delete mode 100644 deprecated/src/SEIRHVD/SEIRHVD_vars.py delete mode 100644 deprecated/src/SEIRHVD/SEIR_tests.py delete mode 100644 deprecated/src/SEIRHVD/class_SEIR.py delete mode 100644 deprecated/src/SEIRHVD/class_SEIRHUVD2.py delete mode 100644 deprecated/src/SEIRHVD/class_SEIRHUVD3.py delete mode 100644 deprecated/src/SEIRHVD/class_SEIRHUVD4.py delete mode 100644 deprecated/src/SEIRHVD/class_SEIRHUVD5.py delete mode 100644 deprecated/src/SEIRHVD/class_SEIRHUVD6.py delete mode 100644 deprecated/src/SEIRHVD/example.py delete mode 100644 deprecated/src/SEIRHVD/readme.md delete mode 100644 deprecated/src/SEIRHVDStar/README.md delete mode 100644 deprecated/src/SEIRStar/Fixed_mobility_and_variable_entropy_optimization..ipynb delete mode 100644 deprecated/src/SEIRStar/SEIR_star_QA.ipynb delete mode 100644 deprecated/src/SEIRStar/SEIR_star_connectivity_and_entropy_analysis.ipynb delete mode 100644 deprecated/src/SEIRStar/SEIR_star_playground.ipynb delete mode 100644 deprecated/src/SEIRStar/SEIR_star_synthetic_data_maker.ipynb delete mode 100644 deprecated/src/SEIRStar/class_SEIRStar.py delete mode 100644 deprecated/src/SEIR_Class_beta - Old Code/Chile.py delete mode 100644 deprecated/src/SEIR_Class_beta - Old Code/DataManager.py delete mode 100644 deprecated/src/SEIR_Class_beta - Old Code/Multi_dist_ref_SEIR.py delete mode 100644 deprecated/src/SEIR_Class_beta - Old Code/Multi_test.py delete mode 100644 deprecated/src/SEIR_Class_beta - Old Code/Nat_ref_test.py delete mode 100644 deprecated/src/SEIR_Class_beta - Old Code/SEIRHUD_Markov.py delete mode 100644 deprecated/src/SEIR_Class_beta - Old Code/SEIRNational.py delete mode 100644 deprecated/src/SEIR_Class_beta - Old Code/SEIRPlot.py delete mode 100644 deprecated/src/SEIR_Class_beta - Old Code/SEIRSym.py delete mode 100644 deprecated/src/SEIR_Class_beta - Old Code/SEIRplatform.py delete mode 100644 deprecated/src/SEIR_Class_beta - Old Code/SEIRrefiner.py delete mode 100644 deprecated/src/SEIR_Class_beta - Old Code/SEIRtomate.py delete mode 100644 deprecated/src/SEIR_Class_beta - Old Code/SEIRuni.py delete mode 100644 deprecated/src/SEIR_Class_beta - Old Code/Single_dist_ref_SEIR.py delete mode 100644 deprecated/src/SEIR_Class_beta - Old Code/Single_dist_ref_SEIR_pygmo.py delete mode 100644 deprecated/src/SEIR_Class_beta - Old Code/__init__.py delete mode 100644 deprecated/src/SEIR_Class_beta - Old Code/class_SEIR.py delete mode 100644 deprecated/src/SEIR_Class_beta - Old Code/class_test.py delete mode 100644 deprecated/src/SEIR_Class_beta - Old Code/pygmo-test.py delete mode 100644 deprecated/src/SEIR_Class_beta - Old Code/temp/CovidSEIR.py delete mode 100644 deprecated/src/SEIR_Class_beta - Old Code/temp/param_finder.py delete mode 100644 deprecated/src/SEIR_Class_beta - Old Code/unidataunifier.py delete mode 100644 deprecated/src/SEIR_Class_beta - Old Code/urbancenterslocator.py delete mode 100644 deprecated/src/SEIR_bimodal/SEIRbimodal_QA.py delete mode 100644 deprecated/src/SEIR_bimodal/class_SEIR_bimodal.py delete mode 100644 deprecated/src/backend/SEIRplatform.py delete mode 100644 deprecated/src/utils/Events.py delete mode 100644 deprecated/src/utils/Quarantine.py delete mode 100644 deprecated/src/utils/ReproductionNumber.py delete mode 100644 deprecated/src/utils/Smoothing.py delete mode 100644 deprecated/src/utils/Smoothing_retro.py delete mode 100644 deprecated/src/utils/filemanager.py delete mode 100644 deprecated/src/utils/functions.py delete mode 100644 deprecated/src/utils/importdata.py delete mode 100644 deprecated/src/utils/readme.md delete mode 100644 deprecated/src/utils/timeutils.py diff --git a/deprecated/Data/Confinamiento_COVID19.xlsx b/deprecated/Data/Confinamiento_COVID19.xlsx deleted file mode 100644 index 49abc5de67b954d579446e61cfb87dfe86e057ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 203703 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 diff --git a/deprecated/Data/UrbanCentersChile/UrbanCenter_0.csv b/deprecated/Data/UrbanCentersChile/UrbanCenter_0.csv deleted file mode 100644 index 3411ba4..0000000 --- a/deprecated/Data/UrbanCentersChile/UrbanCenter_0.csv +++ /dev/null @@ -1,3 +0,0 @@ -,Iquique,Alto Hospicio -Iquique,800466.0,65911.0 -Alto Hospicio,68822.0,322866.0 diff --git a/deprecated/Data/UrbanCentersChile/UrbanCenter_1.csv b/deprecated/Data/UrbanCentersChile/UrbanCenter_1.csv deleted file mode 100644 index c96f345..0000000 --- a/deprecated/Data/UrbanCentersChile/UrbanCenter_1.csv +++ /dev/null @@ -1,3 +0,0 @@ -,La Serena,Coquimbo -La Serena,414223.0,59518.0 -Coquimbo,59812.0,335980.0 diff --git a/deprecated/Data/UrbanCentersChile/UrbanCenter_2.csv b/deprecated/Data/UrbanCentersChile/UrbanCenter_2.csv deleted file mode 100644 index d6fdf94..0000000 --- a/deprecated/Data/UrbanCentersChile/UrbanCenter_2.csv +++ /dev/null @@ -1,6 +0,0 @@ -,Valparaíso,Concón,Viña del Mar,Quilpué,Villa Alemana -Valparaíso,518494.0,6255.0,94509.0,24184.0,14899.0 -Concón,6490.0,71977.0,26924.0,2081.0,1976.0 -Viña del Mar,93846.0,27367.0,608767.0,47531.0,23561.0 -Quilpué,23854.0,2183.0,48708.0,212532.0,32363.0 -Villa Alemana,15759.0,1929.0,23543.0,33077.0,136844.0 diff --git a/deprecated/Data/UrbanCentersChile/UrbanCenter_3.csv b/deprecated/Data/UrbanCentersChile/UrbanCenter_3.csv deleted file mode 100644 index 5d7d66b..0000000 --- a/deprecated/Data/UrbanCentersChile/UrbanCenter_3.csv +++ /dev/null @@ -1,3 +0,0 @@ -,Rancagua,Machalí -Rancagua,420697.0,31305.0 -Machalí,26583.0,48040.0 diff --git a/deprecated/Data/UrbanCentersChile/UrbanCenter_4.csv b/deprecated/Data/UrbanCentersChile/UrbanCenter_4.csv deleted file mode 100644 index 3b90031..0000000 --- a/deprecated/Data/UrbanCentersChile/UrbanCenter_4.csv +++ /dev/null @@ -1,2 +0,0 @@ -,Linares -Linares,155628.0 diff --git a/deprecated/Data/UrbanCentersChile/UrbanCenter_5.csv b/deprecated/Data/UrbanCentersChile/UrbanCenter_5.csv deleted file mode 100644 index 5bf8d46..0000000 --- a/deprecated/Data/UrbanCentersChile/UrbanCenter_5.csv +++ /dev/null @@ -1,11 +0,0 @@ -,Concepción,Coronel,Chiguayante,Hualqui,Lota,Penco,San Pedro de la Paz,Talcahuano,Tomé,Hualpén -Concepción,314.091,12.044,30.874000000000002,3.889,2.8939999999999997,13.175999999999998,46.68600000000001,43.104,6.832000000000001,36.35 -Coronel,12.134,137.127,758.0,162.0,7.456,464.0,7.01,3.218,311.0,1.003 -Chiguayante,30.788,929.0,72.59100000000001,2.985,87.0,432.0,2.099,5.045,460.0,3.1689999999999996 -Hualqui,3.946,96.0,2.82,18.984,0.0,61.0,268.0,1.386,0.0,664.0 -Lota,2.782,7.8,87.0,0.0,46.836000000000006,0.0,878.0,557.0,18.0,353.0 -Penco,13.674000000000001,459.0,280.0,92.0,0.0,55.42100000000001,1.376,3.9530000000000003,1.188,1.8230000000000002 -San Pedro de la Paz,48.123999999999995,6.877999999999999,1.892,266.0,936.0,1.5630000000000002,102.195,10.494000000000002,209.0,4.136 -Talcahuano,42.511,3.2510000000000003,5.2620000000000005,1.203,557.0,4.2669999999999995,10.635,182.495,1.624,23.421999999999997 -Tomé,6.6160000000000005,311.0,528.0,0.0,56.0,1.33,228.0,1.526,56.57,358.0 -Hualpén,36.637,1.198,3.177,606.0,315.0,1.517,4.8469999999999995,23.68,197.0,72.61399999999999 diff --git a/deprecated/Data/UrbanCentersChile/UrbanCenter_6.csv b/deprecated/Data/UrbanCentersChile/UrbanCenter_6.csv deleted file mode 100644 index e3c4b9d..0000000 --- a/deprecated/Data/UrbanCentersChile/UrbanCenter_6.csv +++ /dev/null @@ -1,3 +0,0 @@ -,Temuco,Padre Las Casas -Temuco,767820.0,35299.0 -Padre Las Casas,36217.0,55246.0 diff --git a/deprecated/Data/UrbanCentersChile/UrbanCenter_7.csv b/deprecated/Data/UrbanCentersChile/UrbanCenter_7.csv deleted file mode 100644 index 4ee541e..0000000 --- a/deprecated/Data/UrbanCentersChile/UrbanCenter_7.csv +++ /dev/null @@ -1,48 +0,0 @@ -,Santiago,Cerrillos,Cerro Navia,Conchalí,El Bosque,Estación Central,Huechuraba,Independencia,La Cisterna,La Florida,La Granja,La Pintana,La Reina, Las Condes,Lo Barnechea,Lo Espejo,Lo Prado,Macul,Maipú,Ñuñoa,Pedro Aguirre Cerda,Peñalolén,Providencia,Pudahuel,Quilicura,Quinta Normal,Recoleta,Renca,San Joaquín,San Miguel,San Ramón,Vitacura,Puente Alto,Pirque,Colina,Lampa,Til Til,San Bernardo,Buin,Calera de Tango,Paine,Melipilla,Talagante,El Monte,Isla de Maipo,Padre Hurtado,Peñaflor -Santiago,733072.0,10465.0,12849.0,21202.0,10161.0,31647.0,9165.0,17483.0,12072.0,31688.0,16671.0,0.0,0.0,59510.0,0.0,7917.0,22100.0,23439.0,0.0,58141.0,12220.0,23999.0,82217.0,32503.0,15750.0,23604,35789,20875,13198.0,35117.0,6344.0,14913.0,30942.0,867.0,2750.0,12270.0,0.0,12586,2444.0,630.0,0.0,3203.0,1642.0,544.0,916.0,3400.0,4411.0 -Cerrillos,16225.0,78247.0,562.0,140.0,2361.0,10352.0,0.0,515.0,1172.0,683.0,213.0,1534.0,1060.0,4445.0,910.0,4797.0,336.0,1562.0,31935.0,4169.0,2668.0,275.0,5343.0,3879.0,1035.0,110,658,133,1141.0,3637.0,77.0,588.0,1887.0,0.0,0.0,0.0,0.0,1796,25.0,12.0,0.0,0.0,0.0,95.0,0.0,735.0,265.0 -Cerro Navia,12096.0,980.0,151680.0,0.0,149.0,256.0,802.0,546.0,2972.0,814.0,377.0,294.0,408.0,3676.0,142.0,0.0,4590.0,307.0,2241.0,788.0,571.0,426.0,1765.0,18979.0,1433.0,18501,737,2836,0.0,81.0,1352.0,872.0,92.0,0.0,1330.0,0.0,0.0,262,0.0,355.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 -Conchalí,29349.0,85.0,926.0,91437.0,0.0,1792.0,4794.0,19320.0,214.0,1190.0,0.0,230.0,762.0,5861.0,998.0,0.0,601.0,298.0,1968.0,891.0,0.0,1289.0,6948.0,1046.0,9969.0,1202,8366,1947,1426.0,1647.0,174.0,1773.0,748.0,0.0,951.0,304.0,0.0,1552,241.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 -El Bosque,8955.0,1937.0,0.0,0.0,199052.0,513.0,168.0,894.0,14252.0,1770.0,1316.0,10935.0,0.0,1945.0,948.0,1263.0,0.0,206.0,1405.0,1368.0,0.0,121.0,1438.0,1199.0,460.0,27,555,112,984.0,493.0,557.0,121.0,1615.0,248.0,502.0,0.0,0.0,18047,94.0,417.0,0.0,576.0,0.0,66.0,0.0,0.0,159.0 -Estación Central,36618.0,10610.0,1900.0,848.0,720.0,159849.0,1477.0,883.0,1467.0,8424.0,1314.0,648.0,95.0,5911.0,649.0,2755.0,5406.0,2055.0,19640.0,5925.0,2341.0,507.0,8794.0,10492.0,1391.0,5479,1272,6296,862.0,93.0,536.0,2476.0,3740.0,111.0,774.0,108.0,0.0,1632,216.0,0.0,0.0,111.0,427.0,0.0,94.0,85.0,362.0 -Huechuraba,11405.0,41.0,710.0,4500.0,107.0,2117.0,97696.0,4572.0,466.0,4594.0,0.0,76.0,580.0,4634.0,956.0,859.0,570.0,183.0,4521.0,2841.0,819.0,2972.0,3888.0,1672.0,7506.0,3198,13168,1963,111.0,1383.0,2184.0,3778.0,1233.0,0.0,152.0,297.0,0.0,958,0.0,21.0,0.0,0.0,90.0,0.0,0.0,0.0,0.0 -Independencia,19664.0,508.0,594.0,18651.0,584.0,662.0,4535.0,80108.0,330.0,1175.0,0.0,259.0,612.0,2417.0,407.0,0.0,34.0,987.0,3256.0,657.0,609.0,774.0,3967.0,868.0,6346.0,260,1285,6603,63.0,808.0,607.0,98.0,1044.0,0.0,355.0,845.0,0.0,1635,0.0,0.0,0.0,0.0,79.0,0.0,0.0,0.0,0.0 -La Cisterna,25964.0,2398.0,2783.0,2016.0,15891.0,2386.0,1455.0,3165.0,128626.0,8610.0,3055.0,4601.0,1059.0,10727.0,798.0,3827.0,847.0,5575.0,2451.0,6739.0,1294.0,2977.0,9166.0,1752.0,902.0,374,1909,1613,2664.0,16886.0,13254.0,4482.0,7951.0,139.0,637.0,0.0,0.0,6327,145.0,234.0,0.0,113.0,0.0,0.0,0.0,100.0,551.0 -La Florida,36964.0,784.0,379.0,263.0,1229.0,8836.0,637.0,1264.0,3054.0,423167.0,14970.0,7848.0,6429.0,8948.0,256.0,719.0,891.0,21252.0,7082.0,15247.0,83.0,12685.0,24312.0,1436.0,3311.0,879,2337,1663,7505.0,5574.0,3685.0,3168.0,44257.0,1147.0,267.0,1341.0,0.0,2113,258.0,100.0,0.0,2483.0,0.0,0.0,0.0,0.0,0.0 -La Granja,18339.0,898.0,190.0,16.0,1374.0,1884.0,424.0,0.0,1365.0,18218.0,175770.0,13093.0,1218.0,5279.0,1549.0,183.0,118.0,2159.0,2820.0,2190.0,112.0,2249.0,4427.0,335.0,1244.0,-,3392,67,4809.0,8343.0,14305.0,607.0,5007.0,0.0,22.0,0.0,0.0,3371,0.0,0.0,0.0,0.0,0.0,0.0,351.0,0.0,164.0 -La Pintana,15866.0,1623.0,421.0,230.0,9826.0,1037.0,62.0,45.0,2948.0,9227.0,8605.0,115648.0,2564.0,6733.0,180.0,372.0,,3105.0,2283.0,5009.0,1313.0,1144.0,10320.0,1090.0,691.0,682,2834,1054,232.0,2584.0,10383.0,158.0,14220.0,0.0,448.0,0.0,0.0,8056,130.0,19.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 -La Reina,9367.0,477.0,419.0,337.0,92.0,1470.0,657.0,628.0,415.0,7457.0,192.0,868.0,109814.0,45033.0,3458.0,1155.0,25.0,1777.0,136.0,19521.0,1390.0,12628.0,23632.0,196.0,428.0,-,2223,1152,1137.0,66.0,721.0,3919.0,2033.0,87.0,591.0,0.0,0.0,171,0.0,0.0,0.0,0.0,0.0,0.0,11.0,0.0,81.0 - Las Condes,6105.0,1904.0,2399.0,1058.0,1245.0,4590.0,6087.0,2406.0,1709.0,9301.0,4727.0,8618.0,41157.0,523496.0,31418.0,2078.0,3783.0,9043.0,9406.0,32587.0,1506.0,19536.0,108786.0,9699.0,7708.0,2135,11314,7653,2601.0,2955.0,1523.0,7664.0,7376.0,429.0,6002.0,1015.0,0.0,3829,0.0,427.0,0.0,238.0,444.0,213.0,0.0,67.0,980.0 -Lo Barnechea,10711.0,910.0,1045.0,705.0,642.0,541.0,2077.0,540.0,0.0,181.0,697.0,470.0,2659.0,32353.0,167644.0,735.0,96.0,2090.0,725.0,3820.0,1180.0,2381.0,10905.0,1722.0,4251.0,305,161,-,194.0,795.0,0.0,13889.0,467.0,0.0,1332.0,224.0,0.0,263,0.0,0.0,0.0,0.0,61.0,0.0,0.0,0.0,132.0 -Lo Espejo,13015.0,4104.0,0.0,1185.0,1760.0,4047.0,852.0,264.0,3981.0,1546.0,139.0,490.0,1155.0,4628.0,368.0,125570.0,64.0,249.0,4069.0,6251.0,12773.0,533.0,4080.0,213.0,931.0,215,424,170,485.0,4441.0,0.0,728.0,1770.0,0.0,286.0,0.0,0.0,2389,0.0,0.0,0.0,0.0,513.0,314.0,0.0,0.0,0.0 -Lo Prado,23494.0,327.0,3828.0,81.0,117.0,5262.0,66.0,748.0,146.0,2985.0,170.0,1125.0,704.0,6399.0,604.0,25.0,102862.0,724.0,9134.0,2180.0,235.0,0.0,4157.0,17375.0,3003.0,4752,2013,458,201.0,152.0,830.0,1009.0,3756.0,0.0,0.0,71.0,0.0,655,413.0,0.0,0.0,500.0,32.0,0.0,0.0,218.0,0.0 -Macul,38062.0,1727.0,901.0,857.0,346.0,1278.0,781.0,2915.0,3450.0,25888.0,2920.0,1094.0,2546.0,16219.0,3440.0,261.0,944.0,117407.0,2679.0,21180.0,3249.0,18448.0,25350.0,4452.0,1034.0,1031,3043,-,3524.0,2684.0,530.0,3279.0,8625.0,79.0,0.0,0.0,0.0,1143,0.0,35.0,0.0,112.0,289.0,33.0,0.0,0.0,194.0 -Maipú,50089.0,32702.0,3617.0,1544.0,1528.0,20774.0,2933.0,2899.0,1739.0,4611.0,255.0,1458.0,151.0,11277.0,646.0,3548.0,5790.0,553.0,591266.0,7065.0,5806.0,750.0,12133.0,21968.0,3428.0,522,4125,4473,202.0,446.0,3474.0,1873.0,5656.0,79.0,486.0,206.0,0.0,2039,135.0,667.0,0.0,41.0,687.0,0.0,42.0,2589.0,1034.0 -Ñuñoa,61309.0,1175.0,491.0,237.0,1494.0,4333.0,1475.0,1158.0,592.0,12983.0,1830.0,2671.0,17665.0,38138.0,1114.0,5309.0,411.0,22371.0,9553.0,251941.0,1388.0,24574.0,72062.0,2489.0,2535.0,758,5403,112,9011.0,1681.0,174.0,5855.0,8782.0,296.0,223.0,316.0,0.0,2509,0.0,322.0,0.0,33.0,479.0,0.0,0.0,66.0,246.0 -Pedro Aguirre Cerda,10886.0,3913.0,571.0,0.0,291.0,1992.0,917.0,584.0,1316.0,124.0,201.0,996.0,1904.0,2496.0,1279.0,19994.0,0.0,3245.0,5068.0,1875.0,114957.0,460.0,3926.0,1362.0,4049.0,266,-,2875,1134.0,20209.0,53.0,0.0,1389.0,0.0,108.0,0.0,0.0,-,1006.0,59.0,0.0,0.0,207.0,0.0,405.0,0.0,0.0 -Peñalolén,23796.0,255.0,104.0,900.0,172.0,918.0,2866.0,945.0,1071.0,11276.0,23.0,338.0,15772.0,17568.0,2639.0,0.0,0.0,18200.0,262.0,23934.0,115.0,199808.0,13694.0,423.0,547.0,410,1416,1249,174.0,1918.0,291.0,3097.0,3724.0,21.0,0.0,0.0,0.0,720,,56.0,0.0,397.0,0.0,710.0,0.0,334.0,0.0 -Providencia,103.0,1754.0,2884.0,5264.0,2531.0,9629.0,3548.0,7694.0,2235.0,23928.0,1419.0,6052.0,27128.0,99472.0,10000.0,3111.0,0.0,11817.0,16765.0,71003.0,3211.0,19136.0,312989.0,8382.0,4584.0,3208,1597,7974,3991.0,8662.0,1621.0,13592.0,15353.0,727.0,3633.0,1726.0,0.0,5592,552.0,763.0,0.0,295.0,885.0,630.0,389.0,300.0,670.0 -Pudahuel,50602.0,1793.0,18604.0,910.0,1979.0,13516.0,489.0,1254.0,1003.0,8077.0,30.0,1453.0,1431.0,18669.0,2920.0,145.0,3244.0,3560.0,23137.0,6633.0,1230.0,2740.0,18438.0,289089.0,6176.0,11054,5935,268,5294.0,6162.0,1202.0,3597.0,13888.0,0.0,769.0,151.0,0.0,1737,64.0,285.0,0.0,0.0,0.0,0.0,44.0,223.0,1926.0 -Quilicura,2012.0,1056.0,1359.0,10592.0,627.0,1315.0,7293.0,6188.0,32.0,3145.0,1766.0,241.0,703.0,8920.0,2571.0,1027.0,1229.0,137.0,2504.0,2507.0,4296.0,126.0,7089.0,6334.0,218114.0,2573,7433,7078,2491.0,701.0,0.0,4003.0,2958.0,0.0,2800.0,1498.0,0.0,3789,0.0,32.0,0.0,2174.0,0.0,37.0,0.0,0.0,0.0 -Quinta Normal,26602.0,119.0,18936.0,1245.0,639.0,5242.0,4359.0,611.0,0.0,1391.0,235.0,840.0,1219.0,3116.0,1651.0,408.0,4688.0,655.0,6489.0,3301.0,2029.0,889.0,3617.0,8933.0,3676.0,133612,3774,4059,227.0,2002.0,0.0,229.0,3243.0,0.0,505.0,0.0,0.0,527,0.0,0.0,0.0,35.0,29.0,49.0,0.0,0.0,182.0 -Recoleta,36997.0,123.0,1101.0,7781.0,493.0,1540.0,14876.0,14530.0,1028.0,4999.0,2717.0,1930.0,3370.0,11446.0,1400.0,553.0,1504.0,1996.0,4962.0,5397.0,0.0,2020.0,11402.0,4217.0,6711.0,1261,232054,4378,1839.0,2252.0,2033.0,2392.0,1349.0,0.0,1116.0,1773.0,0.0,1457,0.0,0.0,0.0,354.0,706.0,64.0,270.0,51.0,0.0 -Renca,19126.0,1307.0,2557.0,1493.0,153.0,4807.0,2049.0,7164.0,566.0,4761.0,67.0,987.0,1906.0,12140.0,290.0,139.0,569.0,585.0,4076.0,1824.0,2793.0,1112.0,10521.0,2797.0,8549.0,6354,521,16916,845.0,924.0,87.0,2476.0,689.0,0.0,758.0,2260.0,0.0,291,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 -San Joaquín,13569.0,1243.0,0.0,100.0,2425.0,885.0,671.0,430.0,1926.0,8549.0,4832.0,4342.0,714.0,3770.0,378.0,646.0,0.0,2475.0,2560.0,9761.0,1774.0,1838.0,3973.0,3446.0,2417.0,179,1543,1707,110823.0,9835.0,1065.0,228.0,5452.0,389.0,0.0,0.0,0.0,5648,0.0,0.0,0.0,0.0,40.0,0.0,0.0,0.0,111.0 -San Miguel,40152.0,4283.0,99.0,787.0,4604.0,732.0,903.0,989.0,13578.0,4171.0,5279.0,1623.0,57.0,4968.0,1023.0,4287.0,1282.0,3450.0,4492.0,1626.0,19533.0,2022.0,9605.0,3131.0,727.0,592,1604,224,8967.0,157575.0,1626.0,1386.0,4613.0,73.0,1824.0,159.0,0.0,3767,941.0,116.0,0.0,0.0,236.0,0.0,107.0,0.0,565.0 -San Ramón,933.0,4514.0,5186.0,4795.0,8457.0,5769.0,6598.0,1915.0,13380.0,20308.0,19527.0,14178.0,3935.0,15342.0,2306.0,1593.0,3349.0,3037.0,23099.0,6756.0,3770.0,4720.0,4887.0,11712.0,5134.0,3647,464,2049,2153.0,3464.0,945.0,5413.0,18466.0,0.0,0.0,0.0,0.0,78,77.0,0.0,0.0,35.0,264.0,0.0,13.0,0.0,164.0 -Vitacura,13291.0,580.0,872.0,1180.0,162.0,2676.0,2245.0,1256.0,0.0,2794.0,467.0,844.0,3731.0,77379.0,17108.0,223.0,75.0,2153.0,2233.0,6839.0,0.0,3381.0,15443.0,1462.0,3230.0,1826,277,1486,135.0,875.0,115.0,138506.0,1985.0,32.0,857.0,380.0,0.0,757,0.0,7.0,0.0,0.0,0.0,0.0,0.0,184.0,0.0 -Puente Alto,35636.0,2142.0,201.0,0.0,1584.0,5025.0,697.0,1300.0,2399.0,41877.0,4172.0,12156.0,2049.0,8153.0,1456.0,942.0,135.0,8644.0,5371.0,11990.0,1434.0,4944.0,15485.0,2570.0,1389.0,234,2684,2684,3322.0,3797.0,2029.0,2044.0,584872.0,3749.0,1525.0,231.0,0.0,6785,596.0,0.0,0.0,117.0,37.0,0.0,179.0,149.0,0.0 -Pirque,387.0,1065.0,3823.0,0.0,1725.0,1127.0,1869.0,303.0,177.0,7703.0,485.0,2259.0,3222.0,,1174.0,590.0,1566.0,1031.0,9006.0,3921.0,925.0,5227.0,932.0,3175.0,2187.0,691,1817,1817,1455.0,1022.0,930.0,4111.0,13332.0,11174.0,0.0,0.0,0.0,2926,69.0,,0.0,0.0,0.0,0.0,0.0,0.0,670.0 -Colina,8191.0,183.0,1481.0,921.0,353.0,1183.0,159.0,108.0,777.0,1747.0,27.0,349.0,591.0,,1033.0,281.0,0.0,,1354.0,359.0,108.0,566.0,5167.0,139.0,2213.0,413,967,771,0.0,347.0,0.0,944.0,3027.0,95.0,127760.0,976.0,0.0,0,0.0,0.0,0.0,1176.0,0.0,0.0,0.0,59.0,0.0 -Lampa,23849.0,2705.0,2289.0,2705.0,4171.0,2505.0,1249.0,1906.0,938.0,9784.0,1712.0,0.0,956.0,,318.0,971.0,0.0,3245.0,8724.0,6358.0,2001.0,1922.0,6923.0,5732.0,2301.0,823,2721,3359,1516.0,1423.0,1107.0,444.0,10709.0,151.0,943.0,83376.0,0.0,2997,0.0,0.0,0.0,0.0,337.0,0.0,0.0,0.0,377.0 -Til Til,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 -San Bernardo,15353.0,1793.0,267.0,517.0,18139.0,1560.0,883.0,1432.0,5837.0,3190.0,5148.0,6588.0,325.0,4937.0,288.0,2343.0,0.0,617.0,3208.0,3437.0,680.0,802.0,6460.0,2313.0,3939.0,459,1887,1723,5174.0,4479.0,2047.0,837.0,10209.0,0.0,0.0,0.0,0.0,415402,2182.0,1403.0,0.0,87.0,919.0,62.0,601.0,122.0,916.0 -Buin,3072.0,18.0,0.0,0.0,122.0,0.0,171.0,,187.0,322.0,,720.0,0.0,241.0,,0.0,333.0,,146.0,121.0,1006.0,0.0,650.0,64.0,730.0,0,0,0,0.0,2428.0,0.0,0.0,485.0,0.0,0.0,0.0,0.0,2245,92662.0,0.0,0.0,0.0,0.0,0.0,75.0,123.0,0.0 -Calera de Tango,5154.0,16.0,270.0,0.0,317.0,772.0,19.0,55.0,269.0,1568.0,418.0,32.0,0.0,1684.0,19.0,0.0,0.0,44.0,733.0,685.0,57.0,48.0,2046.0,163.0,25.0,17,36,0,0.0,171.0,121.0,9.0,696.0,0.0,0.0,0.0,0.0,1368,0.0,23722.0,0.0,27.0,173.0,0.0,0.0,250.0,518.0 -Paine,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 -Melipilla,7053.0,285.0,1774.0,75.0,1142.0,2290.0,793.0,306.0,469.0,1546.0,279.0,657.0,1408.0,8062.0,73.0,0.0,492.0,1102.0,1660.0,1313.0,0.0,491.0,3948.0,761.0,2844.0,0,3605,480,232.0,227.0,862.0,927.0,5319.0,0.0,132.0,0.0,0.0,1959,0.0,93.0,0.0,0.0,0.0,75.0,1420.0,110.0,870.0 -Talagante,5373.0,343.0,0.0,117.0,527.0,833.0,711.0,919.0,545.0,524.0,112.0,0.0,114.0,1009.0,79.0,361.0,235.0,926.0,1644.0,381.0,103.0,469.0,4304.0,322.0,69.0,26,890,162,115.0,459.0,138.0,762.0,1555.0,13.0,726.0,0.0,0.0,1142,0.0,181.0,0.0,144.0,45481.0,552.0,1416.0,396.0,3822.0 -El Monte,452.0,889.0,1110.0,616.0,652.0,109.0,541.0,676.0,269.0,3698.0,55.0,0.0,637.0,2553.0,329.0,0.0,729.0,89.0,2011.0,3133.0,53.0,2563.0,1765.0,1314.0,612.0,776,728,0,60.0,260.0,0.0,937.0,2120.0,0.0,0.0,0.0,0.0,1016,83.0,0.0,0.0,40.0,674.0,20911.0,345.0,113.0,764.0 -Isla de Maipo,2131.0,144.0,0.0,0.0,147.0,318.0,0.0,38.0,1191.0,190.0,0.0,209.0,0.0,2189.0,21.0,0.0,0.0,140.0,38.0,895.0,285.0,230.0,351.0,813.0,656.0,0,351,0,513.0,393.0,0.0,150.0,607.0,0.0,0.0,0.0,0.0,548,0.0,0.0,0.0,1343.0,1265.0,345.0,12103.0,0.0,0.0 -Padre Hurtado,5987.0,0.0,0.0,0.0,0.0,209.0,324.0,89.0,125.0,94.0,0.0,0.0,0.0,2390.0,0.0,0.0,0.0,181.0,1856.0,66.0,0.0,794.0,1904.0,242.0,365.0,0,937,103,0.0,604.0,0.0,355.0,407.0,0.0,0.0,0.0,0.0,219,0.0,245.0,0.0,0.0,107.0,169.0,0.0,35839.0,103.0 -Peñaflor,6024.0,349.0,154.0,659.0,231.0,1276.0,262.0,802.0,455.0,1879.0,1412.0,1840.0,243.0,2865.0,385.0,0.0,721.0,48.0,1694.0,580.0,348.0,1266.0,8635.0,1896.0,193.0,149,823,999,520.0,1493.0,374.0,582.0,2745.0,0.0,251.0,0.0,0.0,1459,0.0,636.0,0.0,775.0,4125.0,538.0,0.0,72.0,5992.0 diff --git a/deprecated/Data/UrbanCentersChile/UrbanCenters.txt b/deprecated/Data/UrbanCentersChile/UrbanCenters.txt deleted file mode 100644 index 93ebb9d..0000000 --- a/deprecated/Data/UrbanCentersChile/UrbanCenters.txt +++ /dev/null @@ -1,8 +0,0 @@ -{0: ['Iquique', 'Alto Hospicio'], - 1: ['La Serena', 'Coquimbo'], - 2: ['Valparaíso', 'Concón', 'Viña del Mar', 'Quilpué', 'Villa Alemana'], - 3: ['Rancagua', 'Machalí'], - 4: ['Linares'], - 5: ['Concepción','Coronel','Chiguayante','Hualqui','Lota','Penco','San Pedro de la Paz','Talcahuano','Tomé','Hualpén'], - 6: ['Temuco', 'Padre Las Casas'], - 7: ['Santiago','Cerrillos','Cerro Navia','Conchalí','El Bosque','Estación Central','Huechuraba','Independencia','La Cisterna','La Florida','La Granja','La Pintana','La Reina','Las Condes','Lo Barnechea','Lo Espejo','Lo Prado','Macul','Maipú','Ñuñoa','Pedro Aguirre Cerda','Peñalolén','Providencia','Pudahuel','Quilicura','Quinta Normal','Recoleta','Renca','San Joaquín','San Miguel','San Ramón','Vitacura','Puente Alto','Pirque','Colina','Lampa','Til Til','San Bernardo','Buin','Calera de Tango','Paine','Melipilla','Talagante','El Monte','Isla de Maipo','Padre Hurtado','Peñaflor']} diff --git a/deprecated/Data/UrbanCentersChile/readme.md b/deprecated/Data/UrbanCentersChile/readme.md deleted file mode 100644 index 62c6dfd..0000000 --- a/deprecated/Data/UrbanCentersChile/readme.md +++ /dev/null @@ -1 +0,0 @@ -# Data de movilidad por Centros Urbanos diff --git a/deprecated/Data/cut_2018_v03.xls b/deprecated/Data/cut_2018_v03.xls deleted file mode 100644 index b3b83bb5de47be8a3875d3912891a75d56188440..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79872 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 Y1V%q?h)E0lID01k56XWAGuHh74>y_l3jhEB diff --git a/deprecated/Data/cutlist.csv b/deprecated/Data/cutlist.csv deleted file mode 100644 index 5f8ca05..0000000 --- a/deprecated/Data/cutlist.csv +++ /dev/null @@ -1,346 +0,0 @@ -01101 -01107 -01401 -01402 -01403 -01404 -01405 -02101 -02102 -02103 -02104 -02201 -02202 -02203 -02301 -02302 -03101 -03102 -03103 -03201 -03202 -03301 -03302 -03303 -03304 -04101 -04102 -04103 -04104 -04105 -04106 -04201 -04202 -04203 -04204 -04301 -04302 -04303 -04304 -04305 -05101 -05102 -05103 -05104 -05105 -05107 -05109 -05201 -05301 -05302 -05303 -05304 -05401 -05402 -05403 -05404 -05405 -05501 -05502 -05503 -05504 -05506 -05601 -05602 -05603 -05604 -05605 -05606 -05701 -05702 -05703 -05704 -05705 -05706 -05801 -05802 -05803 -05804 -06101 -06102 -06103 -06104 -06105 -06106 -06107 -06108 -06109 -06110 -06111 -06112 -06113 -06114 -06115 -06116 -06117 -06201 -06202 -06203 -06204 -06205 -06206 -06301 -06302 -06303 -06304 -06305 -06306 -06307 -06308 -06309 -06310 -07101 -07102 -07103 -07104 -07105 -07106 -07107 -07108 -07109 -07110 -07201 -07202 -07203 -07301 -07302 -07303 -07304 -07305 -07306 -07307 -07308 -07309 -07401 -07402 -07403 -07404 -07405 -07406 -07407 -07408 -08101 -08102 -08103 -08104 -08105 -08106 -08107 -08108 -08109 -08110 -08111 -08112 -08201 -08202 -08203 -08204 -08205 -08206 -08207 -08301 -08302 -08303 -08304 -08305 -08306 -08307 -08308 -08309 -08310 -08311 -08312 -08313 -08314 -09101 -09102 -09103 -09104 -09105 -09106 -09107 -09108 -09109 -09110 -09111 -09112 -09113 -09114 -09115 -09116 -09117 -09118 -09119 -09120 -09121 -09201 -09202 -09203 -09204 -09205 -09206 -09207 -09208 -09209 -09210 -09211 -10101 -10102 -10103 -10104 -10105 -10106 -10107 -10108 -10109 -10201 -10202 -10203 -10204 -10205 -10206 -10207 -10208 -10209 -10210 -10301 -10302 -10303 -10304 -10305 -10306 -10307 -10401 -10402 -10403 -10404 -11101 -11102 -11201 -11202 -11203 -11301 -11302 -11303 -11401 -11402 -12101 -12102 -12103 -12104 -12201 -12202 -12301 -12302 -12303 -12401 -12402 -13101 -13102 -13103 -13104 -13105 -13106 -13107 -13108 -13109 -13110 -13111 -13112 -13113 -13114 -13115 -13116 -13117 -13118 -13119 -13120 -13121 -13122 -13123 -13124 -13125 -13126 -13127 -13128 -13129 -13130 -13131 -13132 -13201 -13202 -13203 -13301 -13302 -13303 -13401 -13402 -13403 -13404 -13501 -13502 -13503 -13504 -13505 -13601 -13602 -13603 -13604 -13605 -14101 -14102 -14103 -14104 -14105 -14106 -14107 -14108 -14201 -14202 -14203 -14204 -15101 -15102 -15201 -15202 -16101 -16102 -16103 -16104 -16105 -16106 -16107 -16108 -16109 -16201 -16202 -16203 -16204 -16205 -16206 -16207 -16301 -16302 -16303 -16304 -16305 diff --git a/deprecated/Debug/SEIRvsSEIRHVD.ipynb b/deprecated/Debug/SEIRvsSEIRHVD.ipynb deleted file mode 100644 index 9473603..0000000 --- a/deprecated/Debug/SEIRvsSEIRHVD.ipynb +++ /dev/null @@ -1,689 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Comparación dinámicas SEIR vs SEIRHVD\n", - "\n", - "**Created by:** Samuel Ropert \n", - "**Creation date:** 30/04/2020 \n", - "**Institution:** Computational Biology Lab - Fundación Ciencia y Vida, Chile \n", - "\n", - "El modelo SEIRHVD presenta comportamientos extraños para un modelo compartimental de este tipo. El objetivo de este notebook es compararlo con un modelo SEIR con los mismos parámetros, y de encontrar incosistencias será la herramienta para identificar el problema.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Resumen:\n", - "SEIRHVD tenía un bug en la implementación de las ecuaciones diferenciales. Habían variables cambiadas, en vez de los infectados críticos y severos estaban ingresados los expuestos diarios y acumulados." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Import Libraries" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Linux\n" - ] - } - ], - "source": [ - "import sys\n", - "from pathlib import Path\n", - "sys.path.insert(1, '../src/SEIR/')\n", - "sys.path.insert(1, '../src/SEIRHVD/')\n", - "sys.path.insert(1, '../src/utils/')\n", - "\n", - "from datetime import datetime\n", - "import numpy as np\n", - "from numpy import linalg as LA\n", - "import pandas as pd\n", - "from time import time\n", - "\n", - "import platform\n", - "OS = platform.system()\n", - "\n", - "import matplotlib.pyplot as plt\n", - "if OS == 'Linux': \n", - " %matplotlib tk\n", - " print('Linux')\n", - "elif OS == 'Windows':\n", - " %matplotlib qt\n", - " print('Windows')\n", - "else:\n", - " print('OS not detected :-|')\n", - "\n", - "\n", - "from class_SEIR2 import SEIR\n", - "from class_SEIRHUVD6 import SEIRHVD \n", - "from Quarantine import Quarantine" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Epidemiological Parameters\n", - "* **beta:** Infection rate\n", - "* **mu:** Initial exposed obtained from the initial infected mu=E0/I0\n", - "* **Scale Factor:** Proportion of real infected compared to reported ones (1: all the infecteds are reported)\n", - "* **Sero Prevalence Factor:** Adjust the proportion of the population that enters the virus dynamics\n", - "* **Exposed Infection:** rate compared to the infected (0 the don't infect, 1 the infect in the same rate as the infected )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Simulation Parameters" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "beta = 0.2 # Contagion rate\n", - "mu = 1.5 # E0/I0 initial rate\n", - "SeroPrevalence = 1\n", - "expinfection = 0\n", - "\n", - "# Simulation time\n", - "tsim = 500\n", - "# Population\n", - "population = 1000000\n", - "# Initial Active Infected \n", - "I0 = 100\n", - "I_ac0 = 100\n", - "I_d0 = 0\n", - "# Kinetic Saturation: 0 for mass action mixing\n", - "k=0" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Quarantines" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "def alpha(t):\n", - " return 1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# SEIRHVD params" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "#state parameters: \n", - "pE_Ias = 1 # Transition from exposed to Asymptomatic Infected\n", - "tE_Ias = 3.0\n", - "tIas_R = 12.0" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create simulation Object" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "simseir = SEIR(tsim=tsim,alpha=alpha,beta=beta,mu=mu,sigma=1/tE_Ias,gamma=1/tIas_R,I0=I0,I_ac0=I_ac0,I_d0=I_d0,population=population,expinfection=0)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Compartimental model State parameters changed\n" - ] - } - ], - "source": [ - "simseirhvd = SEIRHVD(tsim,beta,mu=mu,alpha=alpha,I0=I0,I_ac0=I_ac0,I_d0=I_d0,population=population)\n", - "simseirhvd.tE_Ias = tE_Ias\n", - "simseirhvd.tIas_R = tIas_R\n", - "\n", - "# Set infected transition probability \n", - "simseirhvd.pE_Ias = 1 # Transition from exposed to Asymptomatic Infected\n", - "simseirhvd.pE_Imi = 0 # Transition from exposed to Mild Infected\n", - "simseirhvd.pE_Icr = 0 # Transition from exposed to Critical Infected\n", - "simseirhvd.pE_Ise = 0 # Transition from exposed to Serious Infected\n", - "simseirhvd.setnewparams()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Simulate\n", - "The different scenarios are simulated in parallel threads " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - " message: 'The solver successfully reached the end of the integration interval.'\n", - " nfev: 334\n", - " njev: 9\n", - " nlu: 9\n", - " sol: None\n", - " status: 0\n", - " success: True\n", - " t: array([0.00000000e+00, 6.32455532e-07, 1.26491106e-06, 4.05010253e-03,\n", - " 8.09894016e-03, 1.21477778e-02, 5.26361540e-02, 9.31245302e-02,\n", - " 1.33612906e-01, 1.74101283e-01, 4.06157719e-01, 6.38214156e-01,\n", - " 8.70270592e-01, 1.10232703e+00, 1.33438346e+00, 1.77086250e+00,\n", - " 2.20734153e+00, 2.64382056e+00, 3.08029959e+00, 3.51677862e+00,\n", - " 4.04870727e+00, 4.58063593e+00, 5.11256458e+00, 5.64449324e+00,\n", - " 6.04970075e+00, 6.45490827e+00, 6.86011578e+00, 7.73367531e+00,\n", - " 8.60723485e+00, 9.48079438e+00, 1.04927290e+01, 1.15046636e+01,\n", - " 1.25165983e+01, 1.32210507e+01, 1.39255032e+01, 1.46299557e+01,\n", - " 1.78474554e+01, 1.86518303e+01, 1.94562053e+01, 2.02605802e+01,\n", - " 2.10649551e+01, 2.17075663e+01, 2.23501775e+01, 2.29927887e+01,\n", - " 2.53382333e+01, 2.76836780e+01, 3.00291226e+01, 3.06154838e+01,\n", - " 3.12018449e+01, 3.17882061e+01, 3.23745672e+01, 3.29523740e+01,\n", - " 3.48083612e+01, 3.66643483e+01, 3.85203354e+01, 4.06085179e+01,\n", - " 4.26967005e+01, 4.47848830e+01, 4.68730655e+01, 4.99722095e+01,\n", - " 5.30713535e+01, 5.61704975e+01, 5.92696415e+01, 6.29962333e+01,\n", - " 6.67228250e+01, 7.04494167e+01, 7.41760084e+01, 7.79026001e+01,\n", - " 8.16291918e+01, 8.53557835e+01, 8.90823752e+01, 9.33005151e+01,\n", - " 9.75186549e+01, 1.00997435e+02, 1.04476214e+02, 1.07954994e+02,\n", - " 1.11433774e+02, 1.14912553e+02, 1.18391333e+02, 1.21870112e+02,\n", - " 1.25348892e+02, 1.28827672e+02, 1.32306451e+02, 1.35785231e+02,\n", - " 1.39264011e+02, 1.42742790e+02, 1.46221570e+02, 1.49700350e+02,\n", - " 1.53179129e+02, 1.56657909e+02, 1.60792743e+02, 1.64927578e+02,\n", - " 1.69062412e+02, 1.73197246e+02, 1.77332081e+02, 1.81466915e+02,\n", - " 1.84667025e+02, 1.87867135e+02, 1.91067244e+02, 1.94267354e+02,\n", - " 1.97467464e+02, 2.01555134e+02, 2.05642803e+02, 2.09730472e+02,\n", - " 2.13818142e+02, 2.17905811e+02, 2.21993481e+02, 2.26081150e+02,\n", - " 2.30168820e+02, 2.34256489e+02, 2.38344159e+02, 2.42431828e+02,\n", - " 2.46158019e+02, 2.49884209e+02, 2.53610400e+02, 2.57336590e+02,\n", - " 2.61062781e+02, 2.64788971e+02, 2.68515162e+02, 2.72241352e+02,\n", - " 2.75967542e+02, 2.79693733e+02, 2.83419923e+02, 2.86354166e+02,\n", - " 2.89288410e+02, 2.92222653e+02, 2.95156896e+02, 2.98091139e+02,\n", - " 3.01494856e+02, 3.04898574e+02, 3.08302291e+02, 3.11706009e+02,\n", - " 3.15690350e+02, 3.19674691e+02, 3.23659033e+02, 3.27643374e+02,\n", - " 3.31627715e+02, 3.36322019e+02, 3.41016322e+02, 3.45710626e+02,\n", - " 3.50404930e+02, 3.55099233e+02, 3.59793537e+02, 3.64487841e+02,\n", - " 3.69182145e+02, 3.73876448e+02, 3.78570752e+02, 3.83265056e+02,\n", - " 3.87959359e+02, 3.92653663e+02, 3.97347967e+02, 4.02042270e+02,\n", - " 4.06736574e+02, 4.11430878e+02, 4.16125182e+02, 4.20819485e+02,\n", - " 4.25513789e+02, 4.30208093e+02, 4.34902396e+02, 4.39596700e+02,\n", - " 4.44797741e+02, 4.49998781e+02, 4.55199822e+02, 4.60400863e+02,\n", - " 4.65601903e+02, 4.70802944e+02, 4.76746219e+02, 4.82689493e+02,\n", - " 4.88632768e+02, 4.94576043e+02, 5.00000000e+02])\n", - " t_events: None\n", - " y: array([[9.99750000e+05, 9.99750000e+05, 9.99750000e+05, ...,\n", - " 1.21222451e+05, 1.21222451e+05, 1.21222451e+05],\n", - " [1.50000000e+02, 1.49999981e+02, 1.49999962e+02, ...,\n", - " 5.04898608e-05, 3.65501014e-05, 2.72090523e-05],\n", - " [1.00000000e+02, 1.00000026e+02, 1.00000053e+02, ...,\n", - " 5.80961399e-04, 4.20563607e-04, 3.13080872e-04],\n", - " ...,\n", - " [0.00000000e+00, 3.16227526e-05, 6.32454812e-05, ...,\n", - " 1.77969595e-05, 1.28839489e-05, 9.59077791e-06],\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]])\n", - " y_events: None" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "simseir.integr_sci(0,tsim,0.01)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - " message: 'The solver successfully reached the end of the integration interval.'\n", - " nfev: 1018\n", - " njev: 19\n", - " nlu: 19\n", - " sol: None\n", - " status: 0\n", - " success: True\n", - " t: array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,\n", - " 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,\n", - " 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,\n", - " 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,\n", - " 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,\n", - " 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,\n", - " 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,\n", - " 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n", - " 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,\n", - " 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,\n", - " 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,\n", - " 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,\n", - " 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,\n", - " 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,\n", - " 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,\n", - " 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,\n", - " 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,\n", - " 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,\n", - " 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,\n", - " 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,\n", - " 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,\n", - " 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,\n", - " 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,\n", - " 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,\n", - " 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,\n", - " 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,\n", - " 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,\n", - " 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n", - " 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,\n", - " 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,\n", - " 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,\n", - " 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,\n", - " 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,\n", - " 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,\n", - " 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,\n", - " 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467,\n", - " 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480,\n", - " 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,\n", - " 494, 495, 496, 497, 498, 499])\n", - " t_events: None\n", - " y: array([[9.99750000e+05, 9.99726234e+05, 9.99696138e+05, ...,\n", - " 1.21460596e+05, 1.21460596e+05, 1.21460596e+05],\n", - " [1.50000000e+02, 1.27859495e+02, 1.17340227e+02, ...,\n", - " 3.25797687e-05, 3.08561978e-05, 2.92243802e-05],\n", - " [0.00000000e+00, 1.53934503e+01, 2.49767455e+01, ...,\n", - " 9.59033564e-06, 9.14303275e-06, 8.69335664e-06],\n", - " ...,\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]])\n", - " y_events: None" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "simseirhvd.integr_sci(0,tsim,0.01)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Simulation Analysis" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Plots\n", - "This libraries have predefined plot functions which plot the main epidemiological variables.\n", - "Each function has the following optional arguments:\n", - "* days [int] Number of days to display\n", - "* showparams [bool] Display simulation parameters \n", - "* ylim [int] Limit the vertical axis\n", - "* norm [int/float] Normalize the results\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### SEIR Plot with Active infected" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "plt.plot(simseir.t,simseir.S,label='S SEIR',color = 'blue',linestyle='dashed')\n", - "plt.plot(simseir.t,simseir.E,label='E SEIR',color = 'cyan',linestyle='dashed')\n", - "plt.plot(simseir.t,simseir.I,label='I SEIR',color = 'red',linestyle='dashed')\n", - "plt.plot(simseir.t,simseir.R,label='R SEIR',color = 'green',linestyle='dashed')\n", - "\n", - "plt.plot(simseirhvd.t,simseirhvd.S,label='S SEIRHVD',color = 'blue')\n", - "plt.plot(simseirhvd.t,simseirhvd.E,label='E SEIRHVD',color = 'cyan')\n", - "plt.plot(simseirhvd.t,simseirhvd.I,label='I SEIRHVD',color = 'red')\n", - "plt.plot(simseirhvd.t,simseirhvd.R,label='R SEIRHVD',color = 'green')\n", - "plt.title('Epidemiological Plot')\n", - "plt.legend(loc=0)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# wtf SEIRHVD" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## IC" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(simseirhvd.S[0])\n", - "print(simseirhvd.E[0])\n", - "print(simseirhvd.I[0])\n", - "print(simseirhvd.R[0])\n", - "print(simseirhvd.H[0])\n", - "print(simseirhvd.V[0])\n", - "print(simseirhvd.D[0])\n", - "print(simseirhvd.B[0])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "simseirhvd.S[0]+simseirhvd.E[0]+simseirhvd.I[0]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plt.plot(simseirhvd.S+simseirhvd.E+simseirhvd.Ias+simseirhvd.R)\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "type(simseirhvd.alpha)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plt.plot(range(100),simseirhvd.alpha(range(100)))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(simseirhvd.N)\n", - "print(simseir.N)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "simseirhvd.mu" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plt.plot(simseirhvd.t,simseirhvd.S,label='S SEIRHVD',color = 'blue')\n", - "plt.plot(simseirhvd.t,simseirhvd.E,label='E SEIRHVD',color = 'cyan')\n", - "plt.plot(simseirhvd.t,simseirhvd.Ias,label='Ias SEIRHVD',color = 'red')\n", - "plt.plot(simseirhvd.t,simseirhvd.Imi,label='Imi SEIRHVD')\n", - "plt.plot(simseirhvd.t,simseirhvd.Ise,label='Ise SEIRHVD')\n", - "plt.plot(simseirhvd.t,simseirhvd.Icr,label='Icr SEIRHVD')\n", - "\n", - "plt.plot(simseirhvd.t,simseirhvd.R,label='R SEIRHVD',color = 'green')\n", - "plt.plot(simseirhvd.t,simseirhvd.H,label='H SEIRHVD',color = 'orange')\n", - "plt.plot(simseirhvd.t,simseirhvd.V,label='V SEIRHVD',color = 'orange')\n", - "plt.plot(simseirhvd.t,simseirhvd.B,label='B SEIRHVD',color = 'orange')\n", - "plt.plot(simseirhvd.t,simseirhvd.D,label='D SEIRHVD',color = 'orange')\n", - "plt.title('Epidemiological Plot')\n", - "plt.legend(loc=0)\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plt.plot(simseirhvd.t,simseirhvd.I,label='I SEIRHVD')\n", - "plt.plot(simseirhvd.t,simseirhvd.Ias,label='Ias SEIRHVD')\n", - "plt.plot(simseirhvd.t,simseirhvd.Imi,label='Imi SEIRHVD')\n", - "plt.plot(simseirhvd.t,simseirhvd.Ise,label='Ise SEIRHVD')\n", - "plt.plot(simseirhvd.t,simseirhvd.Icr,label='Icr SEIRHVD')\n", - "plt.title('Infected Plot')\n", - "plt.legend(loc=0)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot Active Infected" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for i in range(len(quarantines)):\n", - " plt.plot(simulation[i].t,simulation[i].I,label='Quarantine: '+str(i))\n", - "plt.title('Quarantines')\n", - "plt.legend(loc=0)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Plot Accumulated Infected" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for i in range(len(quarantines)):\n", - " plt.plot(simulation[i].t,simulation[i].I_ac,label='Quarantine: '+str(i))\n", - "\n", - "plt.title('Accumulated Infected')\n", - "plt.legend(loc=0)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Plot New Daily Infected" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for i in range(len(quarantines)):\n", - " plt.plot(simulation[i].t,simulation[i].I_d,label='Quarantine: '+str(i))\n", - "\n", - "plt.title('New Daily Infected')\n", - "plt.legend(loc=0)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Variables:\n", - "The simulation object contains several methods and variables with its results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Susceptibles\n", - "simulation[0].S\n", - "# Exposed\n", - "simulation[0].E\n", - "# Infected\n", - "simulation[0].I\n", - "# Recovered\n", - "simulation[0].R" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Peak Calculation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Peak Values per each scenario\n", - "simulation[0].peak" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Peak day counted from the simulation beginning\n", - "simulation[0].peak_t" - ] - }, - { - "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.8.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/deprecated/Examples/CreatingDataManager.ipynb b/deprecated/Examples/CreatingDataManager.ipynb deleted file mode 100644 index 0b87677..0000000 --- a/deprecated/Examples/CreatingDataManager.ipynb +++ /dev/null @@ -1,1660 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "from datetime import datetime\n", - "from datetime import date\n", - "from datetime import timedelta\n", - "import json\n", - "from pandas.core.base import DataError\n", - "import requests\n", - "from requests.auth import HTTPBasicAuth\n", - "import sys\n", - "from pathlib import Path\n", - "sys.path.insert(1, '../src2/utils/')\n", - "sys.path.insert(1, '../src2/data/')\n", - "import functions\n", - "import cv19data" - ] - }, - { - "cell_type": "code", - "execution_count": 105, - "metadata": {}, - "outputs": [], - "source": [ - "import importlib" - ] - }, - { - "cell_type": "code", - "execution_count": 261, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 261, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "importlib.reload(cv19data)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Creating df from data" - ] - }, - { - "cell_type": "code", - "execution_count": 262, - "metadata": {}, - "outputs": [], - "source": [ - "initdate = datetime(2020,10,19)\n", - "enddate = datetime.now()\n", - "tdelta = enddate - initdate \n", - "dates = [initdate + timedelta(days=i) for i in range(tdelta.days + 1) ] \n", - "days = [i for i in range(tdelta.days + 1)] \n", - "df = pd.DataFrame({'day':days,'date':dates})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Import data" - ] - }, - { - "cell_type": "code", - "execution_count": 263, - "metadata": {}, - "outputs": [], - "source": [ - "data = cv19data.ImportData(tstate = '13',initdate=initdate)" - ] - }, - { - "cell_type": "code", - "execution_count": 259, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Importing Accumulated Infected\n", - "updating database\n", - "Importing Active infected\n", - "updating database\n", - "Importing Daily Infected\n", - "updating database\n" - ] - } - ], - "source": [ - "data.importAccumulatedInfected()\n", - "data.importActiveInfected()\n", - "data.importDailyInfected()" - ] - }, - { - "cell_type": "code", - "execution_count": 264, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Importing General Data\n", - "Importing Population\n", - "Importing Active infected\n", - "updating database\n", - "Importing Accumulated Infected\n", - "updating database\n", - "Importing Daily Infected\n", - "updating database\n", - "Importing ICU Beds Data\n", - "updating database\n", - "Importing Deaths by DEIS\n", - "updating database\n", - "Done\n" - ] - } - ], - "source": [ - "data.importdata()" - ] - }, - { - "cell_type": "code", - "execution_count": 265, - "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", - " \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", - " \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", - " \n", - " \n", - " \n", - " \n", - "
daydatesII_acI_dUCI_capacityUCI_use_covidUCI_use_noncovidD_confirmedD_suspectedD_ac_confirmedD_ac_suspected
002020-10-193900.0313728.0446.01180.0351.0684.019.04.019.04.0
112020-10-20NaNNaN442.01178.0358.0682.027.06.046.010.0
222020-10-21NaNNaN430.01169.0367.0648.015.06.061.016.0
332020-10-22NaNNaN421.01166.0366.0666.017.02.078.018.0
442020-10-23NaNNaN416.01165.0352.0675.020.05.098.023.0
.......................................
1371372021-03-058930.0410369.01490.0NaNNaNNaNNaNNaNNaNNaN
1381382021-03-06NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
1391392021-03-07NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
1401402021-03-08NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
1411412021-03-09NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n", - "

142 rows × 12 columns

\n", - "
" - ], - "text/plain": [ - " day dates I I_ac I_d UCI_capacity UCI_use_covid \\\n", - "0 0 2020-10-19 3900.0 313728.0 446.0 1180.0 351.0 \n", - "1 1 2020-10-20 NaN NaN 442.0 1178.0 358.0 \n", - "2 2 2020-10-21 NaN NaN 430.0 1169.0 367.0 \n", - "3 3 2020-10-22 NaN NaN 421.0 1166.0 366.0 \n", - "4 4 2020-10-23 NaN NaN 416.0 1165.0 352.0 \n", - ".. ... ... ... ... ... ... ... \n", - "137 137 2021-03-05 8930.0 410369.0 1490.0 NaN NaN \n", - "138 138 2021-03-06 NaN NaN NaN NaN NaN \n", - "139 139 2021-03-07 NaN NaN NaN NaN NaN \n", - "140 140 2021-03-08 NaN NaN NaN NaN NaN \n", - "141 141 2021-03-09 NaN NaN NaN NaN NaN \n", - "\n", - " UCI_use_noncovid D_confirmed D_suspected D_ac_confirmed \\\n", - "0 684.0 19.0 4.0 19.0 \n", - "1 682.0 27.0 6.0 46.0 \n", - "2 648.0 15.0 6.0 61.0 \n", - "3 666.0 17.0 2.0 78.0 \n", - "4 675.0 20.0 5.0 98.0 \n", - ".. ... ... ... ... \n", - "137 NaN NaN NaN NaN \n", - "138 NaN NaN NaN NaN \n", - "139 NaN NaN NaN NaN \n", - "140 NaN NaN NaN NaN \n", - "141 NaN NaN NaN NaN \n", - "\n", - " D_ac_suspected \n", - "0 4.0 \n", - "1 10.0 \n", - "2 16.0 \n", - "3 18.0 \n", - "4 23.0 \n", - ".. ... \n", - "137 NaN \n", - "138 NaN \n", - "139 NaN \n", - "140 NaN \n", - "141 NaN \n", - "\n", - "[142 rows x 12 columns]" - ] - }, - "execution_count": 265, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data.data" - ] - }, - { - "cell_type": "code", - "execution_count": 274, - "metadata": {}, - "outputs": [], - "source": [ - "%matplotlib tk" - ] - }, - { - "cell_type": "code", - "execution_count": 275, - "metadata": {}, - "outputs": [], - "source": [ - "data.plot('dates','D_ac_suspected')\n", - "data.plot('dates','D_ac_confirmed')\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 220, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 220, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(data.data[['date','I']].dropna()['date'],data.data[['date','I']].dropna()['I'])\n", - "plt.plot(data.data[['date','I_d']].dropna()['date'],data.data[['date','I_d']].dropna()['I_d'])" - ] - }, - { - "cell_type": "code", - "execution_count": 205, - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "Must specify a fill 'value' or 'method'.", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'date'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'I'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfillna\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m~/.local/lib/python3.8/site-packages/pandas/core/series.py\u001b[0m in \u001b[0;36mfillna\u001b[0;34m(self, value, method, axis, inplace, limit, downcast)\u001b[0m\n\u001b[1;32m 4515\u001b[0m \u001b[0mdowncast\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4516\u001b[0m ) -> Optional[\"Series\"]:\n\u001b[0;32m-> 4517\u001b[0;31m return super().fillna(\n\u001b[0m\u001b[1;32m 4518\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4519\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/.local/lib/python3.8/site-packages/pandas/core/generic.py\u001b[0m in \u001b[0;36mfillna\u001b[0;34m(self, value, method, axis, inplace, limit, downcast)\u001b[0m\n\u001b[1;32m 6010\u001b[0m \"\"\"\n\u001b[1;32m 6011\u001b[0m \u001b[0minplace\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvalidate_bool_kwarg\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minplace\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"inplace\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 6012\u001b[0;31m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvalidate_fillna_kwargs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6013\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6014\u001b[0m \u001b[0;31m# set the default here, so functions examining the signaure\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/.local/lib/python3.8/site-packages/pandas/util/_validators.py\u001b[0m in \u001b[0;36mvalidate_fillna_kwargs\u001b[0;34m(value, method, validate_scalar_dict_value)\u001b[0m\n\u001b[1;32m 333\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 334\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mmethod\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 335\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Must specify a fill 'value' or 'method'.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 336\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mmethod\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 337\u001b[0m \u001b[0mmethod\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mclean_fill_method\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mValueError\u001b[0m: Must specify a fill 'value' or 'method'." - ] - } - ], - "source": [ - "plt.plot(data.data['date'],data.data['I'].fillna())" - ] - }, - { - "cell_type": "code", - "execution_count": 110, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Importing Accumulated Infected\n", - "updating database\n" - ] - } - ], - "source": [ - "data.importAccumulatedInfectedMinCiencia()" - ] - }, - { - "cell_type": "code", - "execution_count": 111, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Importing Active Infected by Minciencia\n", - "updating database\n" - ] - } - ], - "source": [ - "data.importActiveInfectedMinciencia()" - ] - }, - { - "cell_type": "code", - "execution_count": 136, - "metadata": {}, - "outputs": [], - "source": [ - " endpoint_counties = 'getNewCasesAllCounties'\n", - " endpoint_regions = 'getNewCasesAllStates'\n", - " endpoint_national = 'getNationalNewCases'" - ] - }, - { - "cell_type": "code", - "execution_count": 143, - "metadata": {}, - "outputs": [], - "source": [ - "I_d_national = pd.DataFrame(data.request(endpoint_national).json()['cases'])\n", - "I_d_national_dates= pd.DataFrame(data.request(endpoint_national).json()['dates'])" - ] - }, - { - "cell_type": "code", - "execution_count": 149, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "pandas.core.series.Series" - ] - }, - "execution_count": 149, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(I_d_national[0])" - ] - }, - { - "cell_type": "code", - "execution_count": 154, - "metadata": {}, - "outputs": [], - "source": [ - "I_d_counties = pd.DataFrame(data.request(endpoint_counties).json()['data'])\n", - "I_d_counties_dates= pd.DataFrame(data.request(endpoint_counties).json()['dates'])" - ] - }, - { - "cell_type": "code", - "execution_count": 161, - "metadata": {}, - "outputs": [], - "source": [ - "I_d_regions = pd.DataFrame(data.request(endpoint_regions).json()['data'])\n", - "I_d_regions_dates= pd.DataFrame(data.request(endpoint_regions).json()['dates'])" - ] - }, - { - "cell_type": "code", - "execution_count": 176, - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
1010110102
010
110
220
320
420
.........
33411415
33511615
33611615
33711615
33811615
\n", - "

339 rows × 2 columns

\n", - "
" - ], - "text/plain": [ - " 10101 10102\n", - "0 1 0\n", - "1 1 0\n", - "2 2 0\n", - "3 2 0\n", - "4 2 0\n", - ".. ... ...\n", - "334 114 15\n", - "335 116 15\n", - "336 116 15\n", - "337 116 15\n", - "338 116 15\n", - "\n", - "[339 rows x 2 columns]" - ] - }, - "execution_count": 176, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "I_d_counties[['10101','10102']]" - ] - }, - { - "cell_type": "code", - "execution_count": 191, - "metadata": {}, - "outputs": [], - "source": [ - "states = ['13','11']\n", - "counties = []\n", - "#counties = ['12101','12102']" - ] - }, - { - "cell_type": "code", - "execution_count": 192, - "metadata": {}, - "outputs": [], - "source": [ - "aux = []" - ] - }, - { - "cell_type": "code", - "execution_count": 193, - "metadata": {}, - "outputs": [], - "source": [ - " for i in states:\n", - " aux.append(I_d_counties.filter(regex='^'+i,axis=1))\n", - " \n", - " aux.append(I_d_counties[counties])\n", - " I_d_r = np.array(pd.concat(aux, axis=1).sum(axis=1))" - ] - }, - { - "cell_type": "code", - "execution_count": 196, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0 146\n", - "1 142\n", - "2 140\n", - "3 140\n", - "4 141\n", - " ... \n", - "336 1350\n", - "337 1404\n", - "338 1443\n", - "339 1471\n", - "340 1490\n", - "Name: 13, Length: 341, dtype: int64" - ] - }, - "execution_count": 196, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "I_d_regions['13']" - ] - }, - { - "cell_type": "code", - "execution_count": 194, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 127, 132, 139, 147, 155, 170, 195, 218, 237, 247, 245,\n", - " 229, 226, 233, 253, 263, 272, 265, 261, 253, 259, 273,\n", - " 294, 316, 356, 416, 482, 550, 630, 711, 794, 873, 952,\n", - " 1019, 1066, 1089, 1108, 1115, 1176, 1292, 1456, 1644, 1792, 1872,\n", - " 1879, 1949, 2132, 2426, 2787, 3125, 3358, 3492, 3505, 3506, 3509,\n", - " 3505, 3543, 3616, 3731, 3818, 3851, 3810, 3711, 3653, 3689, 3814,\n", - " 4011, 4181, 4305, 4377, 4413, 4477, 4571, 4643, 4677, 4651, 4587,\n", - " 4473, 4356, 4241, 4147, 4018, 3880, 3736, 3600, 3484, 3320, 3124,\n", - " 2894, 2656, 2476, 2386, 2377, 2389, 2339, 2221, 2054, 1917, 1819,\n", - " 1775, 1788, 1764, 1706, 1611, 1506, 1380, 1258, 1141, 1065, 1009,\n", - " 980, 989, 1001, 992, 963, 905, 843, 787, 742, 716, 704,\n", - " 701, 713, 737, 760, 786, 820, 846, 869, 881, 879, 855,\n", - " 830, 790, 756, 727, 699, 666, 629, 602, 587, 591, 604,\n", - " 633, 653, 669, 673, 673, 675, 676, 676, 682, 677, 673,\n", - " 673, 675, 684, 689, 679, 668, 647, 625, 602, 590, 577,\n", - " 565, 541, 528, 506, 488, 466, 447, 445, 451, 463, 491,\n", - " 506, 529, 544, 557, 565, 576, 563, 546, 514, 477, 455,\n", - " 436, 436, 438, 445, 448, 447, 439, 425, 409, 401, 413,\n", - " 428, 451, 465, 468, 464, 455, 447, 439, 433, 421, 414,\n", - " 403, 399, 401, 411, 419, 420, 412, 407, 386, 375, 369,\n", - " 369, 359, 350, 337, 335, 341, 348, 360, 366, 372, 368,\n", - " 363, 360, 368, 377, 383, 382, 374, 395, 437, 504, 563,\n", - " 587, 578, 538, 484, 450, 431, 439, 455, 459, 463, 482,\n", - " 506, 551, 589, 622, 632, 632, 609, 594, 587, 586, 586,\n", - " 585, 589, 590, 589, 582, 588, 624, 677, 740, 789, 807,\n", - " 800, 782, 782, 804, 847, 900, 949, 989, 1014, 1027, 1030,\n", - " 1014, 993, 977, 966, 973, 974, 970, 972, 986, 996, 1007,\n", - " 1022, 1029, 1026, 1021, 1006, 994, 984, 961, 937, 899, 866,\n", - " 845, 838, 846, 865, 882, 889, 897, 897, 904, 916, 930,\n", - " 941, 952, 960, 958, 964, 971, 992, 1022, 1065, 1105, 1153,\n", - " 1192, 1229, 1267, 1311, 1370, 1426, 1463, 1491, 1512])" - ] - }, - "execution_count": 194, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "I_d_r" - ] - }, - { - "cell_type": "code", - "execution_count": 184, - "metadata": {}, - "outputs": [], - "source": [ - "aux = []\n", - "for i in states:\n", - " aux.append(I_d_counties.filter(regex='^'+i,axis=1))" - ] - }, - { - "cell_type": "code", - "execution_count": 185, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[ 13101 13102 13103 13104 13105 13106 13107 13108 13109\n", - " 0 11 0 2 2 3 2 2 2 0\n", - " 1 12 0 2 2 3 2 2 2 1\n", - " 2 14 0 2 3 2 3 2 2 1\n", - " 3 16 0 2 3 2 3 3 2 2\n", - " 4 18 1 2 3 2 3 3 2 2\n", - " .. ... ... ... ... ... ... ... ... ...\n", - " 334 93 16 22 20 37 34 12 20 19\n", - " 335 97 17 23 21 38 36 13 22 18\n", - " 336 100 19 23 21 40 38 13 23 17\n", - " 337 102 20 24 21 42 39 14 25 17\n", - " 338 104 21 24 22 43 40 14 26 16\n", - " \n", - " [339 rows x 9 columns],\n", - " 11101 11102\n", - " 0 0 0\n", - " 1 0 0\n", - " 2 0 0\n", - " 3 0 0\n", - " 4 0 0\n", - " .. ... ...\n", - " 334 13 0\n", - " 335 13 0\n", - " 336 13 0\n", - " 337 13 0\n", - " 338 13 0\n", - " \n", - " [339 rows x 2 columns]]" - ] - }, - "execution_count": 185, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "aux" - ] - }, - { - "cell_type": "code", - "execution_count": 168, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0 2020-03-30T03:00:00.000Z\n", - "1 2020-03-31T03:00:00.000Z\n", - "2 2020-04-01T03:00:00.000Z\n", - "3 2020-04-02T03:00:00.000Z\n", - "4 2020-04-03T03:00:00.000Z\n", - " ... \n", - "336 2021-03-01T03:00:00.000Z\n", - "337 2021-03-02T03:00:00.000Z\n", - "338 2021-03-03T03:00:00.000Z\n", - "339 2021-03-04T03:00:00.000Z\n", - "340 2021-03-05T03:00:00.000Z\n", - "Name: 0, Length: 341, dtype: object" - ] - }, - "execution_count": 168, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "I_d_regions_dates[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 169, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0 2020-04-01T03:00:00.000Z\n", - "1 2020-04-02T03:00:00.000Z\n", - "2 2020-04-03T03:00:00.000Z\n", - "3 2020-04-04T03:00:00.000Z\n", - "4 2020-04-05T04:00:00.000Z\n", - " ... \n", - "334 2021-03-01T03:00:00.000Z\n", - "335 2021-03-02T03:00:00.000Z\n", - "336 2021-03-03T03:00:00.000Z\n", - "337 2021-03-04T03:00:00.000Z\n", - "338 2021-03-05T03:00:00.000Z\n", - "Name: 0, Length: 339, dtype: object" - ] - }, - "execution_count": 169, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "I_d_counties_dates[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 165, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0 27\n", - "1 26\n", - "2 25\n", - "3 23\n", - "4 22\n", - " ... \n", - "336 393\n", - "337 401\n", - "338 403\n", - "339 405\n", - "340 406\n", - "Name: 10, Length: 341, dtype: int64" - ] - }, - "execution_count": 165, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "I_d_regions['10']" - ] - }, - { - "cell_type": "code", - "execution_count": 153, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['dates', 'data'])" - ] - }, - "execution_count": 153, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "aux.keys()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create pandas dataframe out of data" - ] - }, - { - "cell_type": "code", - "execution_count": 81, - "metadata": {}, - "outputs": [], - "source": [ - "def dfappend(df,values,days,dataname):\n", - " length = len(df)\n", - " aux = [np.nan for i in range(length)]\n", - " iterator = iter(values)\n", - " for i in days:\n", - " aux[i] = next(iterator)\n", - " auxdf = pd.DataFrame({dataname:aux})\n", - " return pd.concat([df,auxdf],axis=1)" - ] - }, - { - "cell_type": "code", - "execution_count": 82, - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
daydateI
002020-10-193900.0
112020-10-20NaN
222020-10-21NaN
332020-10-22NaN
442020-10-23NaN
............
1321322021-02-28NaN
1331332021-03-017474.0
1341342021-03-02NaN
1351352021-03-03NaN
1361362021-03-04NaN
\n", - "

137 rows × 3 columns

\n", - "
" - ], - "text/plain": [ - " day date I\n", - "0 0 2020-10-19 3900.0\n", - "1 1 2020-10-20 NaN\n", - "2 2 2020-10-21 NaN\n", - "3 3 2020-10-22 NaN\n", - "4 4 2020-10-23 NaN\n", - ".. ... ... ...\n", - "132 132 2021-02-28 NaN\n", - "133 133 2021-03-01 7474.0\n", - "134 134 2021-03-02 NaN\n", - "135 135 2021-03-03 NaN\n", - "136 136 2021-03-04 NaN\n", - "\n", - "[137 rows x 3 columns]" - ] - }, - "execution_count": 82, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dfappend(df,data.Ir,data.tr,'I')" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [], - "source": [ - "length = len(df)\n", - "\n", - "aux = [np.nan for i in range(length)]\n", - "iterator = iter(data.Ir)\n", - "for i in data.tr:\n", - " aux[i] = next(iterator)" - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "metadata": {}, - "outputs": [], - "source": [ - "Ir = pd.DataFrame({'I':aux})" - ] - }, - { - "cell_type": "code", - "execution_count": 77, - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
daydateI
002020-10-193900.0
112020-10-20NaN
222020-10-21NaN
332020-10-22NaN
442020-10-23NaN
............
1321322021-02-28NaN
1331332021-03-017474.0
1341342021-03-02NaN
1351352021-03-03NaN
1361362021-03-04NaN
\n", - "

137 rows × 3 columns

\n", - "
" - ], - "text/plain": [ - " day date I\n", - "0 0 2020-10-19 3900.0\n", - "1 1 2020-10-20 NaN\n", - "2 2 2020-10-21 NaN\n", - "3 3 2020-10-22 NaN\n", - "4 4 2020-10-23 NaN\n", - ".. ... ... ...\n", - "132 132 2021-02-28 NaN\n", - "133 133 2021-03-01 7474.0\n", - "134 134 2021-03-02 NaN\n", - "135 135 2021-03-03 NaN\n", - "136 136 2021-03-04 NaN\n", - "\n", - "[137 rows x 3 columns]" - ] - }, - "execution_count": 77, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pd.concat([df,Ir],axis=1)" - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
daydate
002020-10-19
112020-10-20
222020-10-21
332020-10-22
442020-10-23
.........
1321322021-02-28
1331332021-03-01
1341342021-03-02
1351352021-03-03
1361362021-03-04
\n", - "

137 rows × 2 columns

\n", - "
" - ], - "text/plain": [ - " day date\n", - "0 0 2020-10-19\n", - "1 1 2020-10-20\n", - "2 2 2020-10-21\n", - "3 3 2020-10-22\n", - "4 4 2020-10-23\n", - ".. ... ...\n", - "132 132 2021-02-28\n", - "133 133 2021-03-01\n", - "134 134 2021-03-02\n", - "135 135 2021-03-03\n", - "136 136 2021-03-04\n", - "\n", - "[137 rows x 2 columns]" - ] - }, - "execution_count": 78, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "metadata": {}, - "outputs": [], - "source": [ - "h = [1,2,3,4]" - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "metadata": {}, - "outputs": [], - "source": [ - "h.extend([1,2,3])" - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[1, 2, 3, 4, 1, 2, 3]" - ] - }, - "execution_count": 73, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "h" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
daydate
002020-10-19
112020-10-20
222020-10-21
332020-10-22
442020-10-23
.........
1321322021-02-28
1331332021-03-01
1341342021-03-02
1351352021-03-03
1361362021-03-04
\n", - "

137 rows × 2 columns

\n", - "
" - ], - "text/plain": [ - " day date\n", - "0 0 2020-10-19\n", - "1 1 2020-10-20\n", - "2 2 2020-10-21\n", - "3 3 2020-10-22\n", - "4 4 2020-10-23\n", - ".. ... ...\n", - "132 132 2021-02-28\n", - "133 133 2021-03-01\n", - "134 134 2021-03-02\n", - "135 135 2021-03-03\n", - "136 136 2021-03-04\n", - "\n", - "[137 rows x 2 columns]" - ] - }, - "execution_count": 63, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "39" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(data.tr)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[0,\n", - " 5,\n", - " 7,\n", - " 11,\n", - " 14,\n", - " 18,\n", - " 21,\n", - " 25,\n", - " 28,\n", - " 32,\n", - " 35,\n", - " 39,\n", - " 42,\n", - " 46,\n", - " 49,\n", - " 53,\n", - " 56,\n", - " 60,\n", - " 63,\n", - " 67,\n", - " 70,\n", - " 74,\n", - " 77,\n", - " 81,\n", - " 84,\n", - " 88,\n", - " 91,\n", - " 95,\n", - " 98,\n", - " 102,\n", - " 105,\n", - " 109,\n", - " 112,\n", - " 116,\n", - " 119,\n", - " 123,\n", - " 126,\n", - " 130,\n", - " 133]" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data.tr" - ] - } - ], - "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.8.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/deprecated/Examples/Pandasgui_test.ipynb b/deprecated/Examples/Pandasgui_test.ipynb deleted file mode 100644 index 03984aa..0000000 --- a/deprecated/Examples/Pandasgui_test.ipynb +++ /dev/null @@ -1,598 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# pandasgui test" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Linux\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import matplotlib.dates as mdates \n", - "from datetime import datetime\n", - "from numpy import linalg as LA\n", - "import multiprocessing\n", - "from joblib import Parallel, delayed\n", - "from datetime import timedelta\n", - "\n", - "import platform\n", - "OS = platform.system()\n", - "\n", - "import matplotlib.pyplot as plt\n", - "if OS == 'Linux': \n", - " #%matplotlib tk\n", - " print('Linux')\n", - "elif OS == 'Windows':\n", - " %matplotlib qt\n", - " print('Windows')\n", - "elif OS == 'Darwin':\n", - " %matplotlib tk\n", - " print('Mac (Funciona?)')\n", - "else:\n", - " print('OS not detected :-|')\n", - "\n", - "import sys\n", - "from pathlib import Path\n", - "sys.path.insert(1, '../src/SEIRHVD/')\n", - "sys.path.insert(1, '../src/utils/')\n", - "sys.path.insert(1, 'src/SEIRHVD/')\n", - "sys.path.insert(1, 'src/utils/')\n", - "\n", - "from class_SEIRHUVD5 import SEIRHVD \n", - "from Quarantine import Quarantine\n", - "from Quarantine import SeroPrevDynamics\n", - "from importdata import ImportData\n", - "\n", - "\n", - "from pandasgui import show" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "initdate = datetime(2020,10,19)\n", - "tstate = '13101'" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Importing General Data\n", - "Importing Population\n", - "Dlab Endpoint Error\n", - "Importing Population\n", - "Importing Active infected\n", - "Importing Accumulated Infected\n", - "Importing Daily Infected\n", - "Importing ICU Beds Data\n", - "Importing Deaths by DEIS\n", - "Importing Active Infected by Minciencia\n", - "Done\n" - ] - } - ], - "source": [ - "state = ImportData(tstate=tstate,initdate = initdate)\n", - "state.importdata()" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "data = {'Ir':state.Ir,'Ir_dates':state.Ir_dates,'Ir_t':state.tr,'Dr':state.Dr,'Dr_dates':state.Br_dates,'Dr_t':state.Br_tr}\n", - "dataframe = pd.DataFrame(dict([ (k,pd.Series(v)) for k,v in data.items() ]))\n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'x': 'Ir_dates', 'y': 'Ir'} ['Ir_dates']\n", - "{'x': 'Ir_dates', 'y': 'Ir', 'color': 'Ir'} ['Ir', 'Ir_dates']\n", - "{'x': ['Dr_t', 'Ir_t'], 'y': ['Dr', 'Ir']} ['Ir_t', 'Dr_t']\n", - "{'x': ['Dr_t', 'Ir_t'], 'y': ['Dr', 'Ir']} ['Ir_t', 'Dr_t']\n", - "{'x': 'Dr_dates', 'y': ['Dr', 'Ir']} ['Dr_dates']\n", - "{'x': 'Dr_dates', 'y': 'Dr'} ['Dr_dates']\n" - ] - } - ], - "source": [ - "show(dataframe)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "a = np.array([0,10,np.nan,13,np.nan,18])" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "b = np.array([0,1,2,3,4,5])" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(b,a)" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "df = pd.DataFrame({'a':a,'b':b})" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{} []\n" - ] - } - ], - "source": [ - "show(df)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "None" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [], - "source": [ - "xs = np.arange(8)\n", - "series1 = np.array([1, 3, 3, None, None, 5, 8, 9]).astype(np.double)\n", - "s1mask = np.isfinite(series1)\n", - "series2 = np.array([2, None, 5, None, 4, None, 3, 2]).astype(np.double)\n", - "s2mask = np.isfinite(series2)" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ True, True, True, False, False, True, True, True])" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "s1mask" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "df['a'].dropna().plot()" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0 0.0\n", - "1 10.0\n", - "2 10.0\n", - "3 13.0\n", - "4 13.0\n", - "5 18.0\n", - "Name: a, dtype: float64" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df['a'].ffill()" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0 0.0\n", - "1 10.0\n", - "2 NaN\n", - "3 13.0\n", - "4 NaN\n", - "5 18.0\n", - "Name: a, dtype: float64" - ] - }, - "execution_count": 50, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df['a']" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": {}, - "outputs": [], - "source": [ - "h = [0,[0,1,2,3],9,'a']\n", - "i = [1,2,3,4]" - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "metadata": {}, - "outputs": [], - "source": [ - "df1 = pd.DataFrame({'h':h,'i':i})" - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "metadata": {}, - "outputs": [], - "source": [ - "dict1 = df1.to_dict()" - ] - }, - { - "cell_type": "code", - "execution_count": 84, - "metadata": {}, - "outputs": [], - "source": [ - "dict2 = {\n", - " 'a':False,\n", - " 'b':10,\n", - " 'c':[0,1,2,3],\n", - " 'd':datetime(2020,1,1)\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 81, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'a'" - ] - }, - "execution_count": 81, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dict1['h'][3]" - ] - }, - { - "cell_type": "code", - "execution_count": 85, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'a': False,\n", - " 'b': 10,\n", - " 'c': [0, 1, 2, 3],\n", - " 'd': datetime.datetime(2020, 1, 1, 0, 0)}" - ] - }, - "execution_count": 85, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dict2" - ] - }, - { - "cell_type": "code", - "execution_count": 88, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a = false\n", - "b = 10\n", - "c = [ 0, 1, 2, 3,]\n", - "d = 2020-01-01T00:00:00\n", - "\n" - ] - } - ], - "source": [ - "print(toml.dumps(dict2))" - ] - }, - { - "cell_type": "code", - "execution_count": 87, - "metadata": {}, - "outputs": [ - { - "ename": "KeyError", - "evalue": "'0'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtoml\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdumps\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf1\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_dict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m~/.local/lib/python3.8/site-packages/toml/encoder.py\u001b[0m in \u001b[0;36mdumps\u001b[0;34m(o, encoder)\u001b[0m\n\u001b[1;32m 69\u001b[0m \u001b[0mnewsections\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mencoder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_empty_table\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 70\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0msection\u001b[0m \u001b[0;32min\u001b[0m \u001b[0msections\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 71\u001b[0;31m addtoretval, addtosections = encoder.dump_sections(\n\u001b[0m\u001b[1;32m 72\u001b[0m sections[section], section)\n\u001b[1;32m 73\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/.local/lib/python3.8/site-packages/toml/encoder.py\u001b[0m in \u001b[0;36mdump_sections\u001b[0;34m(self, o, sup)\u001b[0m\n\u001b[1;32m 191\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mre\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmatch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mr'^[A-Za-z0-9_-]+$'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msection\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 192\u001b[0m \u001b[0mqsection\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_dump_str\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msection\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 193\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mo\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0msection\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdict\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 194\u001b[0m \u001b[0marrayoftables\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 195\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mo\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0msection\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyError\u001b[0m: '0'" - ] - } - ], - "source": [ - "print(toml.dumps(df1.to_dict()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# TOML" - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "metadata": {}, - "outputs": [], - "source": [ - ">>> import toml\n", - ">>> toml_string = \"\"\"\n", - "... # This is a TOML document.\n", - "...\n", - "... title = \"TOML Example\"\n", - "...\n", - "... [owner]\n", - "... name = \"Tom Preston-Werner\"\n", - "... dob = 1979-05-27T07:32:00-08:00 # First class dates\n", - "...\n", - "... [database]\n", - "... server = \"192.168.1.1\"\n", - "... ports = [ 8001, 8001, 8002 ]\n", - "... connection_max = 5000\n", - "... enabled = true\n", - "...\n", - "... [servers]\n", - "...\n", - "... # Indentation (tabs and/or spaces) is allowed but not required\n", - "... [servers.alpha]\n", - "... ip = \"10.0.0.1\"\n", - "... dc = \"eqdc10\"\n", - "...\n", - "... [servers.beta]\n", - "... ip = \"10.0.0.2\"\n", - "... dc = \"eqdc10\"\n", - "...\n", - "... [clients]\n", - "... data = [ [\"gamma\", \"delta\"], [1, 2] ]\n", - "...\n", - "... # Line breaks are OK when inside arrays\n", - "... hosts = [\n", - "... \"alpha\",\n", - "... \"omega\"\n", - "... ]\n", - "... \"\"\"\n", - ">>> parsed_toml = toml.loads(toml_string)" - ] - }, - { - "cell_type": "code", - "execution_count": 89, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'title': 'TOML Example',\n", - " 'owner': {'name': 'Tom Preston-Werner',\n", - " 'dob': datetime.datetime(1979, 5, 27, 7, 32, tzinfo=)},\n", - " 'database': {'server': '192.168.1.1',\n", - " 'ports': [8001, 8001, 8002],\n", - " 'connection_max': 5000,\n", - " 'enabled': True},\n", - " 'servers': {'alpha': {'ip': '10.0.0.1', 'dc': 'eqdc10'},\n", - " 'beta': {'ip': '10.0.0.2', 'dc': 'eqdc10'}},\n", - " 'clients': {'data': [['gamma', 'delta'], [1, 2]],\n", - " 'hosts': ['alpha', 'omega']}}" - ] - }, - "execution_count": 89, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "parsed_toml" - ] - }, - { - "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.8.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/deprecated/Examples/Quarantine_SeroPrev_Dynamics.ipynb b/deprecated/Examples/Quarantine_SeroPrev_Dynamics.ipynb deleted file mode 100644 index 1153713..0000000 --- a/deprecated/Examples/Quarantine_SeroPrev_Dynamics.ipynb +++ /dev/null @@ -1,143 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Linux\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "from datetime import datetime\n", - "from numpy import linalg as LA\n", - "import multiprocessing\n", - "from joblib import Parallel, delayed\n", - "from datetime import timedelta\n", - "\n", - "import platform\n", - "OS = platform.system()\n", - "\n", - "import matplotlib.pyplot as plt\n", - "if OS == 'Linux': \n", - " %matplotlib tk\n", - " print('Linux')\n", - "elif OS == 'Windows':\n", - " %matplotlib qt\n", - " print('Windows')\n", - "else:\n", - " print('OS not detected :-|')\n", - "\n", - "import sys\n", - "from pathlib import Path\n", - "sys.path.insert(1, '../src/SEIRHVD/')\n", - "sys.path.insert(1, '../src/utils/')\n", - "sys.path.insert(1, 'src/SEIRHVD/')\n", - "sys.path.insert(1, 'src/utils/')\n", - "\n", - "from Quarantine import Quarantine\n", - "from Quarantine import SeroPrevDynamics\n", - "from importdata import ImportData" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Quarantines" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "En proceso\n" - ] - } - ], - "source": [ - "print('En proceso')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# SeroPrevalence Dynamics\n", - "The following functions allow to create " - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "def f(x,y):\n", - " return(x+y)\n", - "def g(x,y):\n", - " return(2*x+3*y)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def sumafunct(functions):\n", - " def aux(t):\n", - " a = functions[0](t)\n", - " for i in \n", - " return a(t)+b(t)\n", - " return aux" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def chisum(a,b):\n", - " def aux(t):\n", - " return a(t)+b(t)\n", - " return aux" - ] - } - ], - "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.8.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/deprecated/Examples/SEIR.ipynb b/deprecated/Examples/SEIR.ipynb deleted file mode 100644 index dc9d033..0000000 --- a/deprecated/Examples/SEIR.ipynb +++ /dev/null @@ -1,464 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Compartimental Model Simulator\n", - "\n", - "**Created by:** Samuel Ropert \n", - "**Creation date:** 04/08/2020 \n", - "**Institution:** Computational Biology Lab - Fundación Ciencia y Vida, Chile \n", - "\n", - "## SEIR\n", - "This jupyter notebook shows how to build a single SEIR simulation object with different quarantine scenarios. In this example we show 4 quarantine scenarios, 2 with total quarantines, and 2 with dynamic quarantines.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Import Libraries" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Linux\n" - ] - } - ], - "source": [ - "import sys\n", - "from pathlib import Path\n", - "sys.path.insert(1, '../src/SEIR/')\n", - "sys.path.insert(1, '../src/utils/')\n", - "\n", - "from datetime import datetime\n", - "import numpy as np\n", - "from numpy import linalg as LA\n", - "import pandas as pd\n", - "from time import time\n", - "\n", - "import platform\n", - "OS = platform.system()\n", - "\n", - "import matplotlib.pyplot as plt\n", - "if OS == 'Linux': \n", - " %matplotlib tk\n", - " print('Linux')\n", - "elif OS == 'Windows':\n", - " %matplotlib qt\n", - " print('Windows')\n", - "else:\n", - " print('OS not detected :-|')\n", - "\n", - "\n", - "from class_SEIR2 import SEIR\n", - "from Quarantine import Quarantine" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Epidemiological Parameters\n", - "* **beta:** Infection rate\n", - "* **mu:** Initial exposed obtained from the initial infected mu=E0/I0\n", - "* **Scale Factor:** Proportion of real infected compared to reported ones (1: all the infecteds are reported)\n", - "* **Sero Prevalence Factor:** Adjust the proportion of the population that enters the virus dynamics\n", - "* **Exposed Infection:** rate compared to the infected (0 the don't infect, 1 the infect in the same rate as the infected )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Simulation Parameters" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [], - "source": [ - "beta = 0.2 # Contagion rate\n", - "mu = 1.5 # E0/I0 initial rate\n", - "SeroPrevalence = 1\n", - "expinfection = 0\n", - "\n", - "# Simulation time\n", - "tsim = 500\n", - "# Population\n", - "population = 1000000\n", - "# Initial Active Infected \n", - "I0 = 100\n", - "\n", - "I_ac0 = 100\n", - "# Kinetic Saturation: 0 for mass action mixing\n", - "k=0" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Quarantines\n", - "\n", - "Quarantine object constructor:\n", - " \n", - " \n", - " ```Quarantine(rem_mov,max_mov=0.85,qp=0,iqt=0,fqt=1000,movfunct = 'once')```\n", - " \n", - " * rem_mov: Remanent mobility during Quarantine\n", - " * max_mov: Mobility during non quarantine periods\n", - " * qp: Quarantine period (for dynamic quarantines)\n", - " * iqt: Initial quarantine time\n", - " * fqt: Final quarantine time\n", - " * movfunct: Mobility function \n", - "\n", - "Mobility function types:\n", - " * once: Total quarantine between iqt and fqt\n", - " * square: Periodic quaratine with qp period" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [], - "source": [ - "rem_mob = 0.4 # Mobility during quarantine\n", - "max_mob = 0.8 # Maximum mobility\n", - "# Total quarantine\n", - "\n", - "s1 = Quarantine(0.5)\n", - "s2 = Quarantine(0.5,0.8,qp=14,iqt=50,fqt = 500,movfunct='square')\n", - "s3 = Quarantine(0.5,0.8,qp=14,iqt=50,fqt = 500,movfunct='sawtooth')\n", - "\n", - "quarantines = [s1.alpha,s2.alpha,s3.alpha]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Plot quarantines" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [], - "source": [ - "q1 = [s1.alpha(t) for t in range(tsim)]\n", - "q2 = [s2.alpha(t) for t in range(tsim)]\n", - "q3 = [s3.alpha(t) for t in range(tsim)]" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "plt.plot(range(tsim),q1,label = 'Constant Quarantine')\n", - "plt.plot(range(tsim),q2,label = 'Square Quarantine')\n", - "plt.plot(range(tsim),q3,label = 'Sawtooth Quarantine')\n", - "plt.ylabel('Mobility')\n", - "plt.ylabel('Day')\n", - "plt.ylim(0.45,0.85)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create simulation Object" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [], - "source": [ - "simulation = []\n", - "for i in range(len(quarantines)):\n", - " simulation.append(SEIR(tsim=tsim,alpha=quarantines[i],beta=beta,mu=mu,k=k,I0=I0,population=population,expinfection=1,SeroPrevFactor=1))\n", - "#simulation = SEIR(tsim=tsim,alpha=s2.alpha,beta=beta,mu=mu,k=k,I0=I0,population=population,expinfection=1,SeroPrevFactor=1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Simulate\n", - "The different scenarios are simulated in parallel threads " - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [], - "source": [ - "#simulation = []\n", - "for i in range(len(quarantines)):\n", - " simulation[i].integr_sci(0,tsim,0.01)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Simulation Analysis" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Plots\n", - "This libraries have predefined plot functions which plot the main epidemiological variables.\n", - "Each function has the following optional arguments:\n", - "* days [int] Number of days to display\n", - "* showparams [bool] Display simulation parameters \n", - "* ylim [int] Limit the vertical axis\n", - "* norm [int/float] Normalize the results\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### SEIR Plot with Active infected" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [], - "source": [ - "plt.plot(simulation[0].t,simulation[0].S,label='S',color = 'blue')\n", - "plt.plot(simulation[0].t,simulation[0].E,label='E',color = 'cyan')\n", - "plt.plot(simulation[0].t,simulation[0].I,label='I',color = 'red')\n", - "plt.plot(simulation[0].t,simulation[0].R,label='R',color = 'green')\n", - "plt.title('Epidemiological Plot')\n", - "plt.legend(loc=0)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot Active Infected" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "for i in range(len(quarantines)):\n", - " plt.plot(simulation[i].t,simulation[i].I,label='Quarantine: '+str(i))\n", - "plt.title('Quarantines')\n", - "plt.legend(loc=0)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Plot Accumulated Infected" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [], - "source": [ - "for i in range(len(quarantines)):\n", - " plt.plot(simulation[i].t,simulation[i].I_ac,label='Quarantine: '+str(i))\n", - "\n", - "plt.title('Accumulated Infected')\n", - "plt.legend(loc=0)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Plot New Daily Infected" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "for i in range(len(quarantines)):\n", - " plt.plot(simulation[i].t,simulation[i].I_d,label='Quarantine: '+str(i))\n", - "\n", - "plt.title('New Daily Infected')\n", - "plt.legend(loc=0)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Variables:\n", - "The simulation object contains several methods and variables with its results" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([0.00000000e+00, 1.12938511e-05, 2.25877045e-05, 5.33316552e-02,\n", - " 1.06691788e-01, 1.60102946e-01, 6.97012561e-01, 1.23898182e+00,\n", - " 1.78597253e+00, 2.33794689e+00, 5.09679366e+00, 7.96890454e+00,\n", - " 1.09504366e+01, 1.40378087e+01, 1.72276913e+01, 2.29859534e+01,\n", - " 2.90280105e+01, 3.53411259e+01, 4.19141810e+01, 4.87375149e+01,\n", - " 5.74031531e+01, 6.64172760e+01, 7.57693169e+01, 8.54508180e+01,\n", - " 9.55281373e+01, 1.05928086e+02, 1.16646937e+02, 1.23580054e+02,\n", - " 1.30638990e+02, 1.37823573e+02, 1.53784787e+02, 1.70335746e+02,\n", - " 1.87481214e+02, 2.54810119e+02, 3.30669020e+02, 3.51029766e+02,\n", - " 3.71980415e+02, 3.93541788e+02, 4.38588052e+02, 4.86293859e+02,\n", - " 5.36799724e+02, 6.56236566e+02, 7.91166746e+02, 9.43650644e+02,\n", - " 1.11595419e+03, 1.46768625e+03, 1.90192627e+03, 2.43765729e+03,\n", - " 3.09819557e+03, 4.11559003e+03, 5.42536607e+03, 7.11034935e+03,\n", - " 9.27452650e+03, 1.20471825e+04, 1.70505054e+04, 2.39586233e+04,\n", - " 3.33947979e+04, 4.61024881e+04, 6.29010799e+04, 8.45860846e+04,\n", - " 1.11765491e+05, 1.44649827e+05, 1.82851850e+05, 2.17620149e+05,\n", - " 2.54311382e+05, 2.91743080e+05, 3.28674781e+05, 3.63970864e+05,\n", - " 3.96726322e+05, 4.26338799e+05, 4.52507375e+05, 4.75194986e+05,\n", - " 4.94553595e+05, 5.07624011e+05, 5.18965602e+05, 5.28745769e+05,\n", - " 5.37135053e+05, 5.44299632e+05, 5.51307212e+05, 5.57084649e+05,\n", - " 5.61830863e+05, 5.65719076e+05, 5.69293368e+05, 5.72125735e+05,\n", - " 5.74366776e+05, 5.76137931e+05, 5.77533211e+05, 5.78639141e+05,\n", - " 5.79511850e+05, 5.80198078e+05, 5.80737456e+05, 5.81161996e+05,\n", - " 5.81496464e+05, 5.81759892e+05, 5.81987601e+05, 5.82161946e+05,\n", - " 5.82295356e+05, 5.82397440e+05, 5.82475563e+05, 5.82535358e+05,\n", - " 5.82581124e+05, 5.82616151e+05, 5.82642957e+05, 5.82663469e+05,\n", - " 5.82679166e+05, 5.82691179e+05, 5.82700372e+05, 5.82707407e+05,\n", - " 5.82712791e+05, 5.82716910e+05, 5.82717115e+05])" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Susceptibles\n", - "simulation[0].S\n", - "# Exposed\n", - "simulation[0].E\n", - "# Infected\n", - "simulation[0].I\n", - "# Recovered\n", - "simulation[0].R" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Peak Calculation" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "53737.39093475814" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Peak Values per each scenario\n", - "simulation[0].peak" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "182.68419391442006" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Peak day counted from the simulation beginning\n", - "simulation[0].peak_t" - ] - }, - { - "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.8.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/deprecated/Examples/SEIRHVD_basic.ipynb b/deprecated/Examples/SEIRHVD_basic.ipynb deleted file mode 100644 index d3a0bf9..0000000 --- a/deprecated/Examples/SEIRHVD_basic.ipynb +++ /dev/null @@ -1,263 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Compartimental Model Simulator\n", - "\n", - "**Created by:** Samuel Ropert \n", - "**Creation date:** 04/08/2020 \n", - "**Institution:** Computational Biology Lab - Fundación Ciencia y Vida, Chile \n", - "\n", - "## SEIR\n", - "This file documents the way of simulating a SEIR compartimental model using the libraries devolped by the laboratory\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Import Libraries" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "import sys\n", - "from pathlib import Path\n", - "sys.path.insert(1, '../src/SEIR/')\n", - "sys.path.insert(1, 'src/SEIR/')\n", - "from SEIRmodel import SEIRmodel\n", - "import numpy as np\n", - "from datetime import datetime\n", - "import matplotlib.pyplot as plt\n", - "from joblib import Parallel, delayed\n", - "import multiprocessing" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Epidemiological Parameters" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "beta = 0.2 # Tasa de contagio\n", - "mu = 0 # Razon E0/I0\n", - "ScaleFactor = 1 # Factor de Escala: Numero de infectados por sobre los reportados\n", - "SeroPrevFactor = 1 # Sero Prevalence Factor. Permite ajustar la cantidad de gente que entra en la dinamica\n", - "expinfection = 1 # Proporcion en la que contagian los expuestos" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Simulation Parameters" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "# Simulation time\n", - "tsim = 1000\n", - "# Population\n", - "population = 1000000\n", - "nm = int(population/100000) #Number of 100k people\n", - "# Initial Active Infected \n", - "I_act0 = 100\n" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "# Quarantines\n", - "# [Tsim, max_mov,rem_mov,quarantine period, quarantine initial time, quarantine final time, quarantine type]\n", - "max_mob = 0.85\n", - "rem_mob = [0.6,0.65,0.7]\n", - "quarantine_period = 0\n", - "quarantine_type = 0 #0: Single total quarantine - 1: alternating quarantine with quarantine_period period\n", - "quarantine_init_day = 0\n", - "quarantine_final_day = tsim\n", - "# Define one quarantine array for each different quarantine remanent mobility\n", - "quarantines = [[tsim, max_mob, alpha, quarantine_period, quarantine_init_day, quarantine_final_day, quarantine_type] for alpha in rem_mob]" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "# Kinetic Saturation: 0 for mass action mixing\n", - "k=0" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create simulation Object" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Set initial values\n" - ] - } - ], - "source": [ - "simulation = SEIRmodel(beta = beta,mu = mu,ScaleFactor=ScaleFactor,SeroPrevFactor=SeroPrevFactor,expinfection=expinfection,tsim = tsim,tstate='', k = k)\n", - "simulation.inputarray = np.array(quarantines)\n", - "simulation.addquarantine()\n", - "simulation.initialvalues(I_act0,population,R=0)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "SEIR Model\n", - "[Parallel(n_jobs=8)]: Using backend LokyBackend with 8 concurrent workers.\n", - "[Parallel(n_jobs=8)]: Done 1 tasks | elapsed: 0.6s\n", - "[Parallel(n_jobs=8)]: Done 3 out of 3 | elapsed: 0.6s remaining: 0.0s\n", - "[Parallel(n_jobs=8)]: Done 3 out of 3 | elapsed: 0.6s finished\n" - ] - } - ], - "source": [ - "simulation.simulate()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Simulation Analysis" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Plots" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "simulation.plotseir()\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "simulation.peak\n", - "simulation.peak_t" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "sys.path.insert(1, 'src/')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "from SEIRHVD_local import SEIRHVD_local" - ] - }, - { - "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.8.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/deprecated/Examples/SEIR_ImmunityShieldKyneticSat.ipynb b/deprecated/Examples/SEIR_ImmunityShieldKyneticSat.ipynb deleted file mode 100644 index 4ee4d32..0000000 --- a/deprecated/Examples/SEIR_ImmunityShieldKyneticSat.ipynb +++ /dev/null @@ -1,343 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Saturation Methods Analysis\n", - "\n", - "**Created by:** Samuel Ropert \n", - "**Creation date:** 12/10/2020 \n", - "**Institution:** Computational Biology Lab - Fundación Ciencia y Vida, Chile \n", - "\n", - "## SEIR\n", - "This jupyter notebook shows how periodic examinations affect a pandemy evolution.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Import Libraries" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Linux\n" - ] - } - ], - "source": [ - "import sys\n", - "from pathlib import Path\n", - "sys.path.insert(1, '../src/SEIR/')\n", - "sys.path.insert(1, '../src/utils/')\n", - "\n", - "from datetime import datetime\n", - "import numpy as np\n", - "from numpy import linalg as LA\n", - "import pandas as pd\n", - "from time import time\n", - "import multiprocessing\n", - "from joblib import Parallel, delayed\n", - "\n", - "import platform\n", - "OS = platform.system()\n", - "\n", - "import matplotlib.pyplot as plt\n", - "if OS == 'Linux': \n", - " %matplotlib tk\n", - " print('Linux')\n", - "elif OS == 'Windows':\n", - " %matplotlib qt\n", - " print('Windows')\n", - "else:\n", - " print('OS not detected :-|')\n", - "\n", - "\n", - "from class_SEIR2 import SEIR\n", - "from Quarantine import Quarantine\n", - "from Quarantine import Exams" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "def simulate(simulation,j,tsim):\n", - " simulation.integr_sci(0,tsim,0.1)\n", - " return simulation" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Kinetic Saturation" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Epidemiological Parameters\n", - "* **beta:** Infection rate\n", - "* **mu:** Initial exposed obtained from the initial infected mu=E0/I0\n", - "* **Scale Factor:** Proportion of real infected compared to reported ones (1: all the infecteds are reported)\n", - "* **Sero Prevalence Factor:** Adjust the proportion of the population that enters the virus dynamics\n", - "* **Exposed Infection:** rate compared to the infected (0 the don't infect, 1 the infect in the same rate as the infected )" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "beta = 0.2 # Contagion rate\n", - "mu = 1.5 # E0/I0 initial rate\n", - "SeroPrevalence = 1\n", - "expinfection = 0\n", - "\n", - "# Simulation time\n", - "tsim = 1000\n", - "# Population\n", - "population = 1000000\n", - "# Initial Active Infected \n", - "I0 = 100\n", - "I_ac0 = 100\n", - "\n", - "# Immunity Shield\n", - "k_R=0\n", - "\n", - "# Kinetic Saturation\n", - "k_I = [0,5,10,20,50]\n", - "\n", - "# Quarantine\n", - "s1 = Quarantine(0.5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create simulation Object" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "# Define Simulations\n", - "sims = []\n", - "for i in range(len(k_I)): \n", - " sims.append(SEIR(tsim=tsim,alpha=s1.alpha,beta=beta,mu=mu,k_I=k_I[i],k_R=k_R,I0=I0,population=population,expinfection=1,SeroPrevFactor=1))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Simulate\n", - "The different scenarios are simulated in parallel threads " - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[Parallel(n_jobs=12)]: Using backend LokyBackend with 12 concurrent workers.\n", - "[Parallel(n_jobs=12)]: Done 1 tasks | elapsed: 1.0s\n", - "[Parallel(n_jobs=12)]: Done 2 out of 5 | elapsed: 1.0s remaining: 1.5s\n", - "[Parallel(n_jobs=12)]: Done 3 out of 5 | elapsed: 1.0s remaining: 0.7s\n", - "[Parallel(n_jobs=12)]: Done 5 out of 5 | elapsed: 1.1s remaining: 0.0s\n", - "[Parallel(n_jobs=12)]: Done 5 out of 5 | elapsed: 1.1s finished\n", - "simulation finished\n" - ] - } - ], - "source": [ - "num_cores = multiprocessing.cpu_count()\n", - "simulation = Parallel(n_jobs=num_cores, verbose=50)(delayed(simulate)(sims[i],0,tsim) for i in range(len(k_I)))\n", - "print('simulation finished')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Plots" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Active infected" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "colors = plt.cm.rainbow_r(np.linspace(0,1,len(k_I)))\n", - "for i in range(len(k_I)):\n", - " plt.plot(simulation[i].t,simulation[i].I,label='K_I='+str(k_I[i]), color = colors[i]) \n", - "\n", - "plt.title('Kinetic Saturation')\n", - "plt.legend(loc=0)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Immunity Shield" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [], - "source": [ - "beta = 0.2 # Contagion rate\n", - "mu = 1.5 # E0/I0 initial rate\n", - "SeroPrevalence = 1\n", - "expinfection = 0\n", - "\n", - "# Simulation time\n", - "tsim = 1000\n", - "# Population\n", - "population = 1000000\n", - "# Initial Active Infected \n", - "I0 = 100\n", - "I_ac0 = 100\n", - "\n", - "# Immunity Shield\n", - "k_R = [0,5,10,20,50]\n", - "\n", - "# Kinetic Saturation\n", - "k_I = 0\n", - "\n", - "# Quarantine\n", - "s1 = Quarantine(0.5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create simulation Object" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "# Define Simulations\n", - "sims = []\n", - "for i in range(len(k_R)): \n", - " sims.append(SEIR(tsim=tsim,alpha=s1.alpha,beta=beta,mu=mu,k_I=k_I,k_R=k_R[i],I0=I0,population=population,expinfection=1,SeroPrevFactor=1))\n", - " " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Simulate\n", - "The different scenarios are simulated in parallel threads " - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[Parallel(n_jobs=12)]: Using backend LokyBackend with 12 concurrent workers.\n", - "[Parallel(n_jobs=12)]: Done 1 tasks | elapsed: 0.7s\n", - "[Parallel(n_jobs=12)]: Done 2 out of 5 | elapsed: 0.7s remaining: 1.1s\n", - "[Parallel(n_jobs=12)]: Done 3 out of 5 | elapsed: 0.7s remaining: 0.5s\n", - "[Parallel(n_jobs=12)]: Done 5 out of 5 | elapsed: 0.8s remaining: 0.0s\n", - "[Parallel(n_jobs=12)]: Done 5 out of 5 | elapsed: 0.8s finished\n", - "simulation finished\n" - ] - } - ], - "source": [ - "num_cores = multiprocessing.cpu_count()\n", - "simulation = Parallel(n_jobs=num_cores, verbose=50)(delayed(simulate)(sims[i],0,tsim) for i in range(len(k_R)))\n", - "print('simulation finished')" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [], - "source": [ - "colors = plt.cm.rainbow_r(np.linspace(0,1,len(k_R)))\n", - "for i in range(len(k_R)):\n", - " plt.plot(simulation[i].t,simulation[i].I,label='K_R='+str(k_R[i]), color = colors[i]) \n", - "\n", - "plt.title('Immunity Shield')\n", - "plt.legend(loc=0)\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.8.5" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/deprecated/Examples/SEIR_Optimization.ipynb b/deprecated/Examples/SEIR_Optimization.ipynb deleted file mode 100644 index 796f50d..0000000 --- a/deprecated/Examples/SEIR_Optimization.ipynb +++ /dev/null @@ -1,277 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# SEIR Optimization\n", - "\n", - "Basado en pygmo:\n", - "https://esa.github.io/pygmo2/" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "from pathlib import Path\n", - "sys.path.insert(1, '../src/SEIR/')\n", - "sys.path.insert(1, '../src/utils/')\n", - "\n", - "from datetime import datetime\n", - "import numpy as np\n", - "from numpy import linalg as LA\n", - "import pygmo as pg\n", - "import pandas as pd\n", - "from time import time\n", - "\n", - "import platform\n", - "OS = platform.system()\n", - "\n", - "import matplotlib.pyplot as plt\n", - "if OS == 'Linux': \n", - " %matplotlib tk\n", - " print('Linux')\n", - "elif OS == 'Windows':\n", - " %matplotlib qt\n", - " print('Windows')\n", - "else:\n", - " print('OS not detected :-|')\n", - "\n", - "\n", - "from class_SEIR import SEIR\n", - "from importdata import ImportData as importdata\n", - "from Quarantine import Quarantine" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create Pygmo Optimization Object" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "class SEIROptimization:\n", - " def __init__(self,Ir,tr,I_ac_r,I_ac_tr,tsim,alpha,population,bounds):\n", - " self.Ir = Ir\n", - " self.tr = tr\n", - " self.I_ac_r = I_ac_r\n", - " self.I_ac_tr = I_ac_tr\n", - " self.tsim = tsim \n", - " self.alpha = alpha\n", - " self.population = population \n", - " self.bounds = bounds\n", - " def fitness(self,x): \n", - " sol = SEIR(tsim=self.tsim,alpha=self.alpha,beta=x[0],mu=x[1],k=x[2],I=self.Ir[0],I_ac=self.I_ac_r[0],population=self.population)\n", - " sol.integr_sci(0,tsim,0.1) \n", - " idx=np.searchsorted(sol.t,self.tr)\n", - " res = LA.norm(self.Ir-sol.I[idx])\n", - " return([res])\n", - "\n", - " def get_bounds(self):\n", - " return(self.bounds)\n", - "\n", - " def set_bounds(self,bounds):\n", - " self.bounds = bounds\n", - " return(self.bounds)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Import Data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Import data: \n", - "tstate = '13'\n", - "initdate = datetime(2020,5,15)\n", - "\n", - "Ir,tr,Ir_dates = importdata.importActiveInfected(tstate = tstate, initdate = initdate)\n", - "I_ac_r,I_ac_tr,I_ac_dates = importdata.importAcumulatedInfected(tstate = tstate, initdate = initdate)\n", - "population = importdata.importPopulation(tstate = tstate)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Optimization Params" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "tsim = 1000\n", - "mob = 0.6\n", - "iqt = 0\n", - "alpha = Quarantine(mob,iqt=iqt).alpha\n", - "\n", - "# Params to find\n", - "# beta,mu,k\n", - "lb=[0.01,0.1, 0]\n", - "ub=[ 1, 2,30]\n", - "bounds = [lb,ub]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Run Optimization" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "opti = SEIROptimization(Ir=Ir,tr=tr,I_ac_r=I_ac_r,I_ac_tr=I_ac_tr,tsim=tsim,alpha=alpha,population=population,bounds=bounds)\n", - "algo = pg.algorithm(pg.pso(gen = 20))\n", - "pop = pg.population(opti,50)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "t0 = time()\n", - "pop = algo.evolve(pop)\n", - "t1 = time()\n", - "print('Optimization takes %f seconds' %(t1-t0))\n", - "print('Fitness Value')\n", - "print(pop.champion_f)\n", - "print('Optimal arguments')\n", - "print(pop.champion_x)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "pop.champion_x" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Single simulation example" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "tsim = 1000\n", - "beta = 0.4\n", - "k = 1\n", - "mob = 0.6\n", - "alpha = Quarantine(mob).alpha\n", - "population = 1000000" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "simulation = SEIR(tsim=tsim,alpha=alpha,beta=beta,mu=1,k=k,I=Ir[0],I_ac=I_ac_r[0],population=population)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "simulation.integr_sci(0,tsim,0.1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Plot =)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "endDay = 100\n", - "plt.plot(simulation.t[:endDay],simulation.S[:endDay],label='S')\n", - "plt.plot(simulation.t[:endDay],simulation.E[:endDay],label='E')\n", - "plt.plot(simulation.t[:endDay],simulation.I[:endDay],label='I')\n", - "plt.plot(simulation.t[:endDay],simulation.R[:endDay],label='R')\n", - "plt.legend(loc=0)\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3.8.2 64-bit", - "language": "python", - "name": "python38264bit48ae65e862f64697a29185f9fa581b02" - }, - "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.2" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/deprecated/Examples/SEIR_Saturation_Kinetics_Dynamics.ipynb b/deprecated/Examples/SEIR_Saturation_Kinetics_Dynamics.ipynb deleted file mode 100644 index 6030e58..0000000 --- a/deprecated/Examples/SEIR_Saturation_Kinetics_Dynamics.ipynb +++ /dev/null @@ -1,347 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# SEIR: Saturation Kinetics Dynamics\n", - "\n", - "**Created by:** Samuel Ropert \n", - "**Creation date:** 04/08/2020 \n", - "**Institution:** Computational Biology Lab - Fundación Ciencia y Vida, Chile \n", - "\n", - "## SEIR\n", - "This jupyter notebook explores the saturation kinetics dynamics.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "ename": "ModuleNotFoundError", - "evalue": "No module named 'SEIRmodel'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0msys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minsert\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'../src/'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0msys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minsert\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'src/'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mSEIRmodel\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mSEIRmodel\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mdatetime\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mdatetime\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'SEIRmodel'" - ] - } - ], - "source": [ - "import sys\n", - "from pathlib import Path\n", - "sys.path.insert(1, '../src/')\n", - "sys.path.insert(1, 'src/')\n", - "from SEIRmodel import SEIRmodel\n", - "import numpy as np\n", - "from datetime import datetime\n", - "import matplotlib.pyplot as plt\n", - "import matplotlib\n", - "matplotlib.use(\"TkAgg\")\n", - "%matplotlib tk\n", - "from joblib import Parallel, delayed\n", - "import multiprocessing" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Epidemiological Parameters" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "beta = 0.15 # Contagion rate\n", - "mu = 0 # E0/I0 initial rate\n", - "ScaleFactor = 1 # Scale Factor: Number of real infected over reported \n", - "SeroPrevFactor = 1 # Sero Prevalence Factor: Adjust the proportion of the population that enters the virus dynamics\n", - "expinfection = 1 # Exposed infection rate compared to the infected (0 the don't infect, 1 the infect in the same rate as the infected )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Simulation Parameters" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "# Simulation time\n", - "tsim = 1000\n", - "# Population\n", - "population = 1000000\n", - "# Initial Active Infected \n", - "I_act0 = 100" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "# Mobility\n", - "step = 0.05\n", - "alpha = list(np.arange(0.5,0.9+step,step))\n", - "\n", - "# Saturation Kinetics Factor\n", - "step = 2\n", - "kmax = 10\n", - "k = [0,5,10,15,20,25,30,35,40]#list(np.arange(0,kmax+step,step))" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "# Quarantines\n", - "qt = 0\n", - "qp = 0\n", - "iqt = 0\n", - "fqt = tsim\n", - "sims = [] " - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "# Parallel Simulation function definition\n", - "num_cores = multiprocessing.cpu_count() \n", - "def ParallelSimulation(alpha,k=0, qp = 0, qt = 0,iqt = 0,fqt = 500): \n", - " simulation = SEIRmodel(beta = beta,mu = mu,ScaleFactor=ScaleFactor,SeroPrevFactor=SeroPrevFactor,expinfection=expinfection,tsim = tsim,tstate='', k = k)\n", - " quarantines = [[tsim, 0.85, alpha, qp, iqt, fqt, qt]] \n", - " simulation.inputarray = np.array(quarantines) \n", - " simulation.addquarantine() \n", - " simulation.initialvalues(I_act0,population,R=0)\n", - " simulation.simulate() \n", - " return simulation" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[Parallel(n_jobs=8)]: Using backend LokyBackend with 8 concurrent workers.\n", - "[Parallel(n_jobs=8)]: Done 1 tasks | elapsed: 1.8s\n", - "[Parallel(n_jobs=8)]: Done 2 out of 9 | elapsed: 1.9s remaining: 6.5s\n", - "[Parallel(n_jobs=8)]: Done 3 out of 9 | elapsed: 1.9s remaining: 3.9s\n", - "[Parallel(n_jobs=8)]: Done 4 out of 9 | elapsed: 2.0s remaining: 2.5s\n", - "[Parallel(n_jobs=8)]: Done 5 out of 9 | elapsed: 2.3s remaining: 1.8s\n", - "[Parallel(n_jobs=8)]: Done 6 out of 9 | elapsed: 2.3s remaining: 1.1s\n", - "[Parallel(n_jobs=8)]: Done 7 out of 9 | elapsed: 2.4s remaining: 0.7s\n", - "[Parallel(n_jobs=8)]: Done 9 out of 9 | elapsed: 2.4s remaining: 0.0s\n", - "[Parallel(n_jobs=8)]: Done 9 out of 9 | elapsed: 2.4s finished\n", - "[Parallel(n_jobs=8)]: Using backend LokyBackend with 8 concurrent workers.\n", - "[Parallel(n_jobs=8)]: Done 1 tasks | elapsed: 0.4s\n", - "[Parallel(n_jobs=8)]: Done 2 out of 9 | elapsed: 0.4s remaining: 1.4s\n", - "[Parallel(n_jobs=8)]: Done 3 out of 9 | elapsed: 0.5s remaining: 1.0s\n", - "[Parallel(n_jobs=8)]: Done 4 out of 9 | elapsed: 0.6s remaining: 0.7s\n", - "[Parallel(n_jobs=8)]: Done 5 out of 9 | elapsed: 0.6s remaining: 0.5s\n", - "[Parallel(n_jobs=8)]: Done 6 out of 9 | elapsed: 0.6s remaining: 0.3s\n", - "[Parallel(n_jobs=8)]: Done 7 out of 9 | elapsed: 0.7s remaining: 0.2s\n", - "[Parallel(n_jobs=8)]: Done 9 out of 9 | elapsed: 0.8s remaining: 0.0s\n", - "[Parallel(n_jobs=8)]: Done 9 out of 9 | elapsed: 0.8s finished\n", - "[Parallel(n_jobs=8)]: Using backend LokyBackend with 8 concurrent workers.\n", - "[Parallel(n_jobs=8)]: Done 1 tasks | elapsed: 0.4s\n", - "[Parallel(n_jobs=8)]: Done 2 out of 9 | elapsed: 0.5s remaining: 1.6s\n", - "[Parallel(n_jobs=8)]: Done 3 out of 9 | elapsed: 0.5s remaining: 1.0s\n", - "[Parallel(n_jobs=8)]: Done 4 out of 9 | elapsed: 0.5s remaining: 0.6s\n", - "[Parallel(n_jobs=8)]: Done 5 out of 9 | elapsed: 0.5s remaining: 0.4s\n", - "[Parallel(n_jobs=8)]: Done 6 out of 9 | elapsed: 0.5s remaining: 0.3s\n", - "[Parallel(n_jobs=8)]: Done 7 out of 9 | elapsed: 0.6s remaining: 0.2s\n", - "[Parallel(n_jobs=8)]: Done 9 out of 9 | elapsed: 0.8s remaining: 0.0s\n", - "[Parallel(n_jobs=8)]: Done 9 out of 9 | elapsed: 0.8s finished\n", - "[Parallel(n_jobs=8)]: Using backend LokyBackend with 8 concurrent workers.\n", - "[Parallel(n_jobs=8)]: Done 1 tasks | elapsed: 0.4s\n", - "[Parallel(n_jobs=8)]: Done 2 out of 9 | elapsed: 0.4s remaining: 1.4s\n", - "[Parallel(n_jobs=8)]: Done 3 out of 9 | elapsed: 0.4s remaining: 0.8s\n", - "[Parallel(n_jobs=8)]: Done 4 out of 9 | elapsed: 0.5s remaining: 0.6s\n", - "[Parallel(n_jobs=8)]: Done 5 out of 9 | elapsed: 0.5s remaining: 0.4s\n", - "[Parallel(n_jobs=8)]: Done 6 out of 9 | elapsed: 0.5s remaining: 0.2s\n", - "[Parallel(n_jobs=8)]: Done 7 out of 9 | elapsed: 0.5s remaining: 0.1s\n", - "[Parallel(n_jobs=8)]: Done 9 out of 9 | elapsed: 0.7s remaining: 0.0s\n", - "[Parallel(n_jobs=8)]: Done 9 out of 9 | elapsed: 0.7s finished\n", - "[Parallel(n_jobs=8)]: Using backend LokyBackend with 8 concurrent workers.\n", - "[Parallel(n_jobs=8)]: Done 1 tasks | elapsed: 0.4s\n", - "[Parallel(n_jobs=8)]: Done 2 out of 9 | elapsed: 0.4s remaining: 1.4s\n", - "[Parallel(n_jobs=8)]: Done 3 out of 9 | elapsed: 0.4s remaining: 0.8s\n", - "[Parallel(n_jobs=8)]: Done 4 out of 9 | elapsed: 0.4s remaining: 0.5s\n", - "[Parallel(n_jobs=8)]: Done 5 out of 9 | elapsed: 0.4s remaining: 0.4s\n", - "[Parallel(n_jobs=8)]: Done 6 out of 9 | elapsed: 0.5s remaining: 0.2s\n", - "[Parallel(n_jobs=8)]: Done 7 out of 9 | elapsed: 0.6s remaining: 0.2s\n", - "[Parallel(n_jobs=8)]: Done 9 out of 9 | elapsed: 0.7s remaining: 0.0s\n", - "[Parallel(n_jobs=8)]: Done 9 out of 9 | elapsed: 0.7s finished\n", - "[Parallel(n_jobs=8)]: Using backend LokyBackend with 8 concurrent workers.\n", - "[Parallel(n_jobs=8)]: Done 1 tasks | elapsed: 0.3s\n", - "[Parallel(n_jobs=8)]: Done 2 out of 9 | elapsed: 0.4s remaining: 1.4s\n", - "[Parallel(n_jobs=8)]: Done 3 out of 9 | elapsed: 0.4s remaining: 0.8s\n", - "[Parallel(n_jobs=8)]: Done 4 out of 9 | elapsed: 0.4s remaining: 0.5s\n", - "[Parallel(n_jobs=8)]: Done 5 out of 9 | elapsed: 0.4s remaining: 0.3s\n", - "[Parallel(n_jobs=8)]: Done 6 out of 9 | elapsed: 0.4s remaining: 0.2s\n", - "[Parallel(n_jobs=8)]: Done 7 out of 9 | elapsed: 0.5s remaining: 0.1s\n", - "[Parallel(n_jobs=8)]: Done 9 out of 9 | elapsed: 0.6s remaining: 0.0s\n", - "[Parallel(n_jobs=8)]: Done 9 out of 9 | elapsed: 0.6s finished\n", - "[Parallel(n_jobs=8)]: Using backend LokyBackend with 8 concurrent workers.\n", - "[Parallel(n_jobs=8)]: Done 1 tasks | elapsed: 0.3s\n", - "[Parallel(n_jobs=8)]: Done 2 out of 9 | elapsed: 0.4s remaining: 1.4s\n", - "[Parallel(n_jobs=8)]: Done 3 out of 9 | elapsed: 0.4s remaining: 0.9s\n", - "[Parallel(n_jobs=8)]: Done 4 out of 9 | elapsed: 0.4s remaining: 0.5s\n", - "[Parallel(n_jobs=8)]: Done 5 out of 9 | elapsed: 0.5s remaining: 0.4s\n", - "[Parallel(n_jobs=8)]: Done 6 out of 9 | elapsed: 0.5s remaining: 0.2s\n", - "[Parallel(n_jobs=8)]: Done 7 out of 9 | elapsed: 0.5s remaining: 0.1s\n", - "[Parallel(n_jobs=8)]: Done 9 out of 9 | elapsed: 0.6s remaining: 0.0s\n", - "[Parallel(n_jobs=8)]: Done 9 out of 9 | elapsed: 0.6s finished\n", - "[Parallel(n_jobs=8)]: Using backend LokyBackend with 8 concurrent workers.\n", - "[Parallel(n_jobs=8)]: Done 1 tasks | elapsed: 0.3s\n", - "[Parallel(n_jobs=8)]: Done 2 out of 9 | elapsed: 0.4s remaining: 1.3s\n", - "[Parallel(n_jobs=8)]: Done 3 out of 9 | elapsed: 0.4s remaining: 0.8s\n", - "[Parallel(n_jobs=8)]: Done 4 out of 9 | elapsed: 0.4s remaining: 0.5s\n", - "[Parallel(n_jobs=8)]: Done 5 out of 9 | elapsed: 0.4s remaining: 0.3s\n", - "[Parallel(n_jobs=8)]: Done 6 out of 9 | elapsed: 0.4s remaining: 0.2s\n", - "[Parallel(n_jobs=8)]: Done 7 out of 9 | elapsed: 0.5s remaining: 0.1s\n", - "[Parallel(n_jobs=8)]: Done 9 out of 9 | elapsed: 0.6s remaining: 0.0s\n", - "[Parallel(n_jobs=8)]: Done 9 out of 9 | elapsed: 0.6s finished\n", - "[Parallel(n_jobs=8)]: Using backend LokyBackend with 8 concurrent workers.\n", - "[Parallel(n_jobs=8)]: Done 1 tasks | elapsed: 0.4s\n", - "[Parallel(n_jobs=8)]: Done 2 out of 9 | elapsed: 0.4s remaining: 1.3s\n", - "[Parallel(n_jobs=8)]: Done 3 out of 9 | elapsed: 0.4s remaining: 0.8s\n", - "[Parallel(n_jobs=8)]: Done 4 out of 9 | elapsed: 0.4s remaining: 0.5s\n", - "[Parallel(n_jobs=8)]: Done 5 out of 9 | elapsed: 0.4s remaining: 0.3s\n", - "[Parallel(n_jobs=8)]: Done 6 out of 9 | elapsed: 0.4s remaining: 0.2s\n", - "[Parallel(n_jobs=8)]: Done 7 out of 9 | elapsed: 0.5s remaining: 0.1s\n", - "[Parallel(n_jobs=8)]: Done 9 out of 9 | elapsed: 0.6s remaining: 0.0s\n", - "[Parallel(n_jobs=8)]: Done 9 out of 9 | elapsed: 0.6s finished\n" - ] - } - ], - "source": [ - "# Run Parallel Simulation s\n", - "sims = [] \n", - "for i in k: \n", - " aux = Parallel(n_jobs=num_cores, verbose=50)(delayed(ParallelSimulation)(alpha=j,k=i,qp = qp, qt = qt, iqt = iqt, fqt =fqt) for j in alpha)\n", - " sims.append(aux)\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Analysis\n", - "The following contour plot shows how increasing the saturation kinetics factor, reduces the peak size" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "peak = []\n", - "for i in range(len(k)):\n", - " aux = []\n", - " for j in range(len(alpha)):\n", - " aux.append(sims[i][j].peak[0]/sims[0][j].peak[0])\n", - " peak.append(aux)\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "# Contour Plot\n", - "fig,ax=plt.subplots(1,1)\n", - "cp = ax.contourf(alpha,k,peak) \n", - "fig.colorbar(cp) # Add a colorbar to a plot\n", - "ax.set_title('Peak Size Proportion')\n", - "ax.set_xlabel('Mobility')\n", - "ax.set_ylabel('Saturation Dynamics Factor')\n", - "plt.show() " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Grid Plot\n", - "The following grid plot shows the simulations one by one" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Grid plot\n", - "fig, axs = plt.subplots(len(k), len(alpha))\n", - "for i in range(len(k)):\n", - " for j in range(len(alpha)):\n", - " axs[i, j].plot(sims[i][j].t[0],sims[i][j].I[0],label=\"Infected\") \n", - " axs[i, j].set_title(\"K: \"+str(k[i])+\" | Alpha: \"+str(alpha[j]))\n", - "fig.suptitle('Axes values are scaled individually by default')\n", - "#fig.tight_layout()\n", - "lines, labels = fig.axes[-1].get_legend_handles_labels()\n", - " \n", - "#fig.legend(lines, labels, loc = 'upper center')\n", - "fig.legend(lines, labels,loc = 'best')\n", - "fig.show()\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3.8.2 64-bit", - "language": "python", - "name": "python38264bit48ae65e862f64697a29185f9fa581b02" - }, - "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.2" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/deprecated/Examples/SEIR_old.ipynb b/deprecated/Examples/SEIR_old.ipynb deleted file mode 100644 index 1c207fa..0000000 --- a/deprecated/Examples/SEIR_old.ipynb +++ /dev/null @@ -1,379 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Compartimental Model Simulator\n", - "\n", - "**Created by:** Samuel Ropert \n", - "**Creation date:** 04/08/2020 \n", - "**Institution:** Computational Biology Lab - Fundación Ciencia y Vida, Chile \n", - "\n", - "## SEIR\n", - "This jupyter notebook shows how to build a single SEIR simulation object with different quarantine scenarios. In this example we show 4 quarantine scenarios, 2 with total quarantines, and 2 with dynamic quarantines.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Import Libraries" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "ename": "ModuleNotFoundError", - "evalue": "No module named 'SEIRmodel'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0msys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minsert\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'../src/'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0msys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minsert\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'src/'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mSEIRmodel\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mSEIRmodel\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mdatetime\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mdatetime\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'SEIRmodel'" - ] - } - ], - "source": [ - "import sys\n", - "from pathlib import Path\n", - "sys.path.insert(1, '../src/')\n", - "sys.path.insert(1, 'src/')\n", - "from SEIRmodel import SEIRmodel\n", - "import numpy as np\n", - "from datetime import datetime\n", - "import matplotlib.pyplot as plt\n", - "import matplotlib\n", - "matplotlib.use(\"TkAgg\")\n", - "#%matplotlib tk\n", - "from joblib import Parallel, delayed\n", - "import multiprocessing" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Epidemiological Parameters\n", - "* **beta:** Infection rate\n", - "* **mu:** Initial exposed obtained from the initial infected mu=E0/I0\n", - "* **Scale Factor:** Proportion of real infected compared to reported ones (1: all the infecteds are reported)\n", - "* **Sero Prevalence Factor:** Adjust the proportion of the population that enters the virus dynamics\n", - "* **Exposed Infection:** rate compared to the infected (0 the don't infect, 1 the infect in the same rate as the infected )" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "beta = 0.15 # Contagion rate\n", - "mu = 0 # E0/I0 initial rate\n", - "ScaleFactor = 1 # Scale Factor: Number of real infected over reported \n", - "SeroPrevFactor = 1 # Sero Prevalence Factor: Adjust the proportion of the population that enters the virus dynamics\n", - "expinfection = 1 # Exposed contagion rate compared to the infected (0 the don't infect, 1 the infect in the same rate as the infected )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Simulation Parameters" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "# Simulation time\n", - "tsim = 1000\n", - "# Population\n", - "population = 1000000\n", - "# Initial Active Infected \n", - "I_act0 = 100\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Quarantines\n", - "\n", - "Quarantine Vector: \n", - " [Tsim, max_mob,rem_mob,quarantine period, quarantine initial time, quarantine final time, quarantine type]" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "max_mob = 0.8 # Maximum mobility\n", - "# Total quarantine\n", - "s1 = [tsim,max_mob,0.65,0,0,tsim,0]\n", - "s2 = [tsim,max_mob,0.5,0,0,tsim,0]\n", - "# Dynamic quarantine\n", - "s3 = [tsim,max_mob,0.3,14,0,tsim,1]\n", - "s4 = [tsim,max_mob,0.5,14,0,tsim,1]\n" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "# Define one quarantine array for each different quarantine remanent mobility\n", - "quarantines = [s1,s2,s3,s4]" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "# Kinetic Saturation: 0 for mass action mixing\n", - "k=0" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Create simulation Object" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Set initial values\n" - ] - } - ], - "source": [ - "simulation = SEIRmodel(beta = beta,mu = mu,ScaleFactor=ScaleFactor,SeroPrevFactor=SeroPrevFactor,expinfection=expinfection,tsim = tsim,tstate='', k = k)\n", - "simulation.inputarray = np.array(quarantines)\n", - "simulation.addquarantine()\n", - "simulation.initialvalues(I_act0,population,R=0)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Simulate\n", - "The different scenarios are simulated in parallel threads " - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "SEIR Model\n", - "[Parallel(n_jobs=8)]: Using backend LokyBackend with 8 concurrent workers.\n", - "[Parallel(n_jobs=8)]: Done 1 tasks | elapsed: 1.5s\n", - "[Parallel(n_jobs=8)]: Done 2 out of 4 | elapsed: 1.6s remaining: 1.6s\n", - "[Parallel(n_jobs=8)]: Done 4 out of 4 | elapsed: 17.8s remaining: 0.0s\n", - "[Parallel(n_jobs=8)]: Done 4 out of 4 | elapsed: 17.8s finished\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "../src/SEIR_vars.py:143: RuntimeWarning: invalid value encountered in double_scalars\n", - " self.SHFR = [self.totD[i]/(self.I_se_ac[i][-1]+self.I_cr_ac[i][-1]) for i in range(self.numescenarios)]\n", - "../src/SEIR_vars.py:144: RuntimeWarning: invalid value encountered in true_divide\n", - " self.SHFR_d = [self.B[i]/(self.I_se_ac[i][-1]+self.I_cr_ac[i][-1]) for i in range(self.numescenarios)]\n" - ] - } - ], - "source": [ - "simulation.simulate()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Simulation Analysis" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Plots\n", - "This libraries have predefined plot functions which plot the main epidemiological variables.\n", - "Each function has the following optional arguments:\n", - "* days [int] Number of days to display\n", - "* showparams [bool] Display simulation parameters \n", - "* ylim [int] Limit the vertical axis\n", - "* norm [int/float] Normalize the results\n" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "# Epidemiological curves\n", - "simulation.plotseir(days = 300)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Active Infected curves\n", - "simulation.plotActiveInfected(showparams=True,days = 650)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Accumulated infected\n", - "simulation.plotAccumulatedInfected()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Daily infected\n", - "simulation.plotDailyInfected(days=400)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Exposed\n", - "simulation.plotExposed()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Exposed\n", - "simulation.plotQuarantines(days=100)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Variables:\n", - "The simulation object contains several methods and variables with its results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Susceptibles\n", - "simulation.S\n", - "# Exposed\n", - "simulation.E\n", - "# Infected\n", - "simulation.I\n", - "# Recovered\n", - "simulation.R\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Peak Values per each scenario\n", - "simulation.peak" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Peak time\n", - "simulation.peak_t" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "simulation.showscenarios()" - ] - }, - { - "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.8.5" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/deprecated/Examples/TOML.ipynb b/deprecated/Examples/TOML.ipynb deleted file mode 100644 index 0f4d33d..0000000 --- a/deprecated/Examples/TOML.ipynb +++ /dev/null @@ -1,178 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# pandasgui test" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Linux\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "import matplotlib.dates as mdates \n", - "from datetime import datetime\n", - "from numpy import linalg as LA\n", - "import multiprocessing\n", - "from joblib import Parallel, delayed\n", - "from datetime import timedelta\n", - "\n", - "import platform\n", - "OS = platform.system()\n", - "\n", - "import matplotlib.pyplot as plt\n", - "if OS == 'Linux': \n", - " #%matplotlib tk\n", - " print('Linux')\n", - "elif OS == 'Windows':\n", - " %matplotlib qt\n", - " print('Windows')\n", - "elif OS == 'Darwin':\n", - " %matplotlib tk\n", - " print('Mac (Funciona?)')\n", - "else:\n", - " print('OS not detected :-|')\n", - "\n", - "import sys\n", - "from pathlib import Path\n", - "sys.path.insert(1, '../src/SEIRHVD/')\n", - "sys.path.insert(1, '../src/utils/')\n", - "sys.path.insert(1, 'src/SEIRHVD/')\n", - "sys.path.insert(1, 'src/utils/')\n", - "\n", - "from class_SEIRHUVD5 import SEIRHVD \n", - "from Quarantine import Quarantine\n", - "from Quarantine import SeroPrevDynamics\n", - "from importdata import ImportData\n", - "\n", - "\n", - "from pandasgui import show" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# TOML\n", - "Work in progress" - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "metadata": {}, - "outputs": [], - "source": [ - ">>> import toml\n", - ">>> toml_string = \"\"\"\n", - "... # This is a TOML document.\n", - "...\n", - "... title = \"TOML Example\"\n", - "...\n", - "... [owner]\n", - "... name = \"Tom Preston-Werner\"\n", - "... dob = 1979-05-27T07:32:00-08:00 # First class dates\n", - "...\n", - "... [database]\n", - "... server = \"192.168.1.1\"\n", - "... ports = [ 8001, 8001, 8002 ]\n", - "... connection_max = 5000\n", - "... enabled = true\n", - "...\n", - "... [servers]\n", - "...\n", - "... # Indentation (tabs and/or spaces) is allowed but not required\n", - "... [servers.alpha]\n", - "... ip = \"10.0.0.1\"\n", - "... dc = \"eqdc10\"\n", - "...\n", - "... [servers.beta]\n", - "... ip = \"10.0.0.2\"\n", - "... dc = \"eqdc10\"\n", - "...\n", - "... [clients]\n", - "... data = [ [\"gamma\", \"delta\"], [1, 2] ]\n", - "...\n", - "... # Line breaks are OK when inside arrays\n", - "... hosts = [\n", - "... \"alpha\",\n", - "... \"omega\"\n", - "... ]\n", - "... \"\"\"\n", - ">>> parsed_toml = toml.loads(toml_string)" - ] - }, - { - "cell_type": "code", - "execution_count": 89, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'title': 'TOML Example',\n", - " 'owner': {'name': 'Tom Preston-Werner',\n", - " 'dob': datetime.datetime(1979, 5, 27, 7, 32, tzinfo=)},\n", - " 'database': {'server': '192.168.1.1',\n", - " 'ports': [8001, 8001, 8002],\n", - " 'connection_max': 5000,\n", - " 'enabled': True},\n", - " 'servers': {'alpha': {'ip': '10.0.0.1', 'dc': 'eqdc10'},\n", - " 'beta': {'ip': '10.0.0.2', 'dc': 'eqdc10'}},\n", - " 'clients': {'data': [['gamma', 'delta'], [1, 2]],\n", - " 'hosts': ['alpha', 'omega']}}" - ] - }, - "execution_count": 89, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "parsed_toml" - ] - }, - { - "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.8.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/deprecated/Examples/functionslib.ipynb b/deprecated/Examples/functionslib.ipynb deleted file mode 100644 index 12df6e5..0000000 --- a/deprecated/Examples/functionslib.ipynb +++ /dev/null @@ -1,240 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Functions library\n", - "This library helps building time dependent functions which serve to simulate dynamc processes. So far, this functions are used in compartimental models for simulating the following processes: \n", - "* Mobility change due to lockdowns\n", - "* Mobility change due to holidays or social events \n", - "* Examination dynamics \n", - "* Susceptible dynamics: migration, social clusters permeation\n", - "\n", - "In this jupyter notebook we will show how to use the different tools present in this library\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import sys\n", - "\n", - "from pathlib import Path\n", - "sys.path.insert(1, '../src/SEIR/')\n", - "sys.path.insert(1, '../src/utils/')\n", - "import functions" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Events Creator\n", - "This function allows to create a function specifying its values for different time intervals. \n", - "**Arguments:** \n", - "* **values:** List with the values for the different intervals. It accepts ints or floats\n", - "* **days:** List of pairs (lists) of values that represent the different intervals associated with the given values. len(days) = len(values)\n", - "* **functions:** Additional functions that can be added to the resulting events function.\n", - "\n", - "For values not present in the interval the default value is 0.\n", - "Overlaping values will be added. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Example:**\n", - "The following example will create a function with the following values and intervals:\n", - "* $F_0 = 1$ when $t \\in [0,10]$\n", - "* $F_1 = 10$ when $t \\in [11,15]$\n", - "* $F_2 = 15$ when $t \\in [14,20]$\n", - "* $F_3 = 3$ when $t \\in [19,25]$\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "values = [3,0.55,5,0.2]\n", - "#values = [0,5,3,2]\n", - "days = [[0,10],[11,15],[14,20],[19,25]]" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "ex1 = functions.Events(values,days)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1.5000249688277862" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ex1(10)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "t = np.array(np.arange(0,30,0.05))\n", - "explot = [ex1(i) for i in t]\n", - "plt.plot(t,explot)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Periodic Functions" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## General Construction:\n", - "square(min_val=0,max_val=1,period=14,init=0,end=1000,off_val=0,initphase='min',duty=0.5)\n", - "\n", - "## Square\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "square = functions.square(min_val=0,max_val=10,period=10,init=0,end=50,off_val=5,initphase='max',duty=0.5)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "t = np.arange(0,80,0.5)\n", - "sq = [square(i) for i in list(t)]\n", - "plt.plot(t,sq)\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Function Addition" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "def functionAddition(functarray):\n", - " \"\"\"\n", - " Creates the function that results adding the functions present in the function array\n", - " Receives a list where each element is a function that receives 1 argument\n", - " \"\"\"\n", - " def f(t):\n", - " aux = 0\n", - " for i in functarray: \n", - " aux += i(t)\n", - " return aux\n", - " return f" - ] - }, - { - "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.8.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/deprecated/src/SEIR/Quarantine.py b/deprecated/src/SEIR/Quarantine.py deleted file mode 100644 index 06c9327..0000000 --- a/deprecated/src/SEIR/Quarantine.py +++ /dev/null @@ -1,177 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -import numpy as np -from scipy import signal -import matplotlib.pyplot as plt - -""" -# ------------------------------------------------- # -# # -# SEIRHDV Quarantine Scenarios Definition # -# # -# ------------------------------------------------- # - -Quarantine array: -np.array([tsim,max_mov,rem_mov,qp,iqt,fqt,movfunct]) - -* tsim: Tiempo de simulación -* max_mov: Movilidad máxima durante tiempo sin cuarentena -* rem_mov: Movilidad remanente durante tiempo de cuarentena -* qp: Periodo de Cuarentena para cuarentenas alternantes - qp días con cuarentena, luego qp días sin cuarentena -* iqt: Día de inicio de cuarentena (desde el inicio de la simulación) -* fqt: Día de fin de cuarentena (desde el inicio de la simulación) -* movfunct: Función de movilidad - * 0: Cuarentena total durante el período comprendido entre iqt y fqt - * 1: Cuarentena alternante tipo onda Cuadrada con período qp - * 2: Cuarnetena tipo diente de cierra con período qp - - -""" - -class Quarantine(): - def __init__(self,rem_mov,max_mov=0.85,qp=0,iqt=0,fqt=1000,movfunct = 'once'): - self.rem_mov = rem_mov - self.max_mov = max_mov - self.qp = qp - self.iqt = iqt - self.fqt = fqt - self.movfunct = movfunct - - self.alpha = self.alphafunct() - - - def alphafunct(self): - """ - # max_mov: Movilidad sin cuarentena - # rem_mov: Movilidad con cuarentena - # qp: Periodo cuarentena dinamica - # - qp >0 periodo Qdinamica - # - qp = 0 sin qdinamica - # iqt: Initial quarantine time. Tiempo inicial antes de cuarentena dinamica - # - iqt>0 inicia con cuarentena total hasta iqt - # - iqt<0 sin cuarentena hasta iqt - # fqt: Final quarantine time. Duracion tiempo cuarentena - # movfunct: Tipo de cuarentena dinamica desde iqt - # - once: una vez durante qp dias - # - total: total desde iqt - # - sawtooth: diente de cierra - # - square: onda cuadrada - - - # FQT no funciona en las ondas periódicas - """ - def alpha(t): - if 'square' in self.movfunct or self.movfunct == 1: - def f(t): - return signal.square(t) - if t0: - return(self.rem_mov) - else: - return(self.max_mov) - else: - if self.qp == 0: - return(self.max_mov) - elif tself.fqt: - return(self.max_mov) - else: - return(self.rem_mov) - - - elif 'sawtooth' in self.movfunct or self.movfunct == 2: - def f(t): - return signal.sawtooth(t) - if t0: - return(self.rem_mov) - else: - return(self.max_mov) - else: - if self.qp == 0: - return(self.max_mov) - elif t0 periodo Qdinamica - # - qp = 0 sin qdinamica - # iqt: Initial quarantine time. Tiempo inicial antes de cuarentena dinamica - # - iqt>0 inicia con cuarentena total hasta iqt - # - iqt<0 sin cuarentena hasta iqt - # fqt: Final quarantine time. Duracion tiempo cuarentena - # movfunct: Tipo de cuarentena dinamica desde iqt - # - once: una vez durante qp dias - # - total: total desde iqt - # - sawtooth: diente de cierra - # - square: onda cuadrada - """ - def alpha(t): - if 'square' in movfunct or movfunct == 1: - def f(t): - return signal.square(t) - if t0: - return(rem_mov) - else: - return(max_mov) - else: - if qp == 0: - return(max_mov) - elif tfqt: - return(max_mov) - else: - return(rem_mov) - - - elif 'sawtooth' in movfunct or movfunct == 2: - def f(t): - return signal.sawtooth(t) - if t0: - return(rem_mov) - else: - return(max_mov) - else: - if qp == 0: - return(max_mov) - elif t2: - population += int(aux.loc[aux['Codigo comuna']==int(i)].iloc[:,4].sum()) - else: - if len(tstate)==2: - population = aux.loc[aux['Codigo region']==int(tstate)].iloc[:,4].sum() - if len(tstate)>2: - population = int(aux.loc[aux['Codigo comuna'] == int(tstate)].iloc[:,4]) - print('Import Population') - if self: - self.population = population - return - else: - return population - - def importinfectadosactivos(self=None,tstate = '',initdate=None): - if self: - tstate = self.tstate - initdate = self.initdate - else: - if not tstate: - raise Exception("State code missing") - if not initdate: - raise Exception("Initial date missing") - # ---------------------- # - # Infectados Activos # - # ---------------------- # - cutlist = [] - cutlistpath = "../Data/cutlist.csv" - cutlist = pd.read_csv(cutlistpath, header = None,dtype=str) - - actives = [] - mydict = None - if type(tstate) == list: - for i in tstate: - if len(i)==2: - for index, row in cutlist.iterrows(): - state = str(row[0])[0:2] - comuna = str(row[0]) - if i == state: - endpoint = "http://192.168.2.223:5006/getActiveNewCasesByComuna?comuna="+comuna - r = requests.get(endpoint) - mydict = r.json() - actives.append(mydict['actives']) - #data=pd.DataFrame(mydict) - #Ir = (np.array(actives)).sum(axis=0) - elif len(i)>2: - endpoint = "http://192.168.2.223:5006/getActiveNewCasesByComuna?comuna="+i - r = requests.get(endpoint) - mydict = r.json() - actives.append(mydict['actives']) - #Ir = np.array(mydict['actives']) - Ir = (np.array(actives)).sum(axis=0) - else: - if len(tstate)==2: - for index, row in cutlist.iterrows(): - state = str(row[0])[0:2] - comuna = str(row[0]) - if tstate == state: - endpoint = "http://192.168.2.223:5006/getActiveNewCasesByComuna?comuna="+comuna - r = requests.get(endpoint) - mydict = r.json() - actives.append(mydict['actives']) - #data=pd.DataFrame(mydict) - Ir = (np.array(actives)).sum(axis=0) - elif len(tstate)>2: - endpoint = "http://192.168.2.223:5006/getActiveNewCasesByComuna?comuna="+tstate - r = requests.get(endpoint) - mydict = r.json() - Ir = np.array(mydict['actives']) - - Ir_dates = [datetime.strptime(mydict['dates'][i][:10],'%Y-%m-%d') for i in range(len(mydict['dates']))] - index = np.where(np.array(Ir_dates) >= initdate)[0][0] - Ir=Ir[index:] - Ir_dates=Ir_dates[index:] - tr = [(Ir_dates[i]-initdate).days for i in range(len(Ir))] - print('Infectados Activos') - if self: - self.Ir = Ir - self.Ir_dates = Ir_dates - self.tr = tr - return - else: - return Ir,tr,Ir_dates - - - - # -------------------------------- # - # Datos Infectados acumulados # - # -------------------------------- # - def importinfectadosacumulados(self=None,tstate = '',initdate = None, endpoint = 'https://raw.githubusercontent.com/MinCiencia/Datos-COVID19/master/output/producto1/Covid-19.csv'): - if self: - tstate = self.tstate - initdate = self.initdate - else: - if not tstate: - raise Exception("State code missing") - if not initdate: - raise Exception("Initial date missing") - - aux = pd.read_csv(endpoint) - - if type(tstate) == list: - I_ac_r = aux.loc[aux['Codigo region'].isin(tstate)].iloc[:,5:-1] - I_ac_r = I_ac_r.append(aux.loc[aux['Codigo comuna'].isin(tstate)].iloc[:,5:-1]) - I_ac_r = I_ac_r.sum() - else: - I_ac_r = aux.loc[aux['Codigo region']==int(tstate)].iloc[:,5:-1] - I_ac_r = I_ac_r.append(aux.loc[aux['Codigo comuna']==int(tstate)].iloc[:,5:-1]) - I_ac_r = I_ac_r.sum() - - I_ac_r_dates = [datetime.strptime(I_ac_r.index[i],'%Y-%m-%d') for i in range(len(I_ac_r))] - index = np.where(np.array(I_ac_r_dates) >= initdate)[0][0] - I_ac_r = I_ac_r[index:] - I_ac_r_dates = I_ac_r_dates[index:] - I_ac_r_tr = [(I_ac_r_dates[i]-initdate).days for i in range(len(I_ac_r))] - print('Infectados Acumulados') - if self: - self.I_ac_r = I_ac_r - self.I_ac_r_dates = I_ac_r_dates - self.I_ac_r_tr = I_ac_r_tr - return - else: - return I_ac_r,I_ac_r_tr,I_ac_r_dates - - - - # -------------------------------- # - # Datos Infectados diarios # - # -------------------------------- # - # Falta interpolar - def importinfectadosdiarios(self=None,tstate = '',initdate = None,endpoint = 'https://raw.githubusercontent.com/MinCiencia/Datos-COVID19/master/output/producto1/Covid-19.csv' ): - - if self: - tstate = self.tstate - initdate = self.initdate - else: - if not tstate: - raise Exception("State code missing") - if not initdate: - raise Exception("Initial date missing") - - aux = pd.read_csv(endpoint) - - if type(tstate) == list: - I_ac_r = aux.loc[aux['Codigo region'].isin(tstate)].iloc[:,5:-1] - I_ac_r = I_ac_r.append(aux.loc[aux['Codigo comuna'].isin(tstate)].iloc[:,5:-1]) - I_ac_r = I_ac_r.sum() - else: - I_ac_r = aux.loc[aux['Codigo region']==int(tstate)].iloc[:,5:-1] - I_ac_r = I_ac_r.append(aux.loc[aux['Codigo comuna']==int(tstate)].iloc[:,5:-1]) - I_ac_r = I_ac_r.sum() - - I_ac_r_dates = [datetime.strptime(I_ac_r.index[i],'%Y-%m-%d') for i in range(len(I_ac_r))] - index = np.where(np.array(I_ac_r_dates) >= initdate)[0][0] - I_ac_r = I_ac_r[index:] - I_ac_r_dates = I_ac_r_dates[index:] - I_ac_r_tr = [(I_ac_r_dates[i]-initdate).days for i in range(len(I_ac_r))] - - I_d_r = np.diff(np.interp(list(range(I_ac_r_tr[-1])),I_ac_r_tr,I_ac_r)) - I_d_r_tr = list(range(len(I_d_r))) - I_d_r_dates = [initdate + timedelta(days=i) for i in range(len(I_d_r_tr))] - - print('Infectados diarios') - if self: - self.I_d_r = I_d_r - self.I_d_r_tr = I_d_r_tr - self.I_d_r_dates = I_d_r_dates - return - else: - return I_d_r, I_d_r_tr, I_d_r_dates - - # ------------------ # - # Datos Sochimi # - # ------------------ # - def importsochimi(self=None,tstate = '', initdate = None, endpoint = "http://192.168.2.223:5006/getBedsAndVentilationByState?state="): - - if self: - tstate = self.tstate - initdate = self.initdate - else: - if not tstate: - raise Exception("State code missing") - if not initdate: - raise Exception("Initial date missing") - if type(tstate) == list: - tstate = tstate[0] - - endpoint = endpoint+tstate[:2] - r = requests.get(endpoint) - mydict = r.json() - self.sochimi=pd.DataFrame(mydict) - sochimi = self.sochimi - self.Hr = sochimi['camas_ocupadas'] - self.Vr = sochimi['vmi_ocupados'] - self.Vr_tot = sochimi['vmi_totales'] - self.Hr_tot = sochimi['camas_totales'] - self.sochimi_dates = [datetime.strptime(sochimi['dates'][i][:10],'%Y-%m-%d') for i in range(len(sochimi))] - - index = np.where(np.array(self.sochimi_dates) >= self.initdate)[0][0] - self.Hr=list(self.Hr[index:]) - self.Vr=list(self.Vr[index:]) - self.Hr_tot=list(self.Hr_tot[index:]) - self.Vr_tot=(list(self.Vr_tot[index:])) - self.sochimi_dates = self.sochimi_dates[index:] - self.sochimi_tr = [(self.sochimi_dates[i]-self.initdate).days for i in range(len(self.Hr))] - print('Sochimi') - return(sochimi) - - # -------------------------------- # - # Datos Fallecidos acumulados # - # -------------------------------- # - def importfallecidosacumulados(self,endpoint = 'https://raw.githubusercontent.com/MinCiencia/Datos-COVID19/master/output/producto14/FallecidosCumulativo.csv' ): - if self: - tstate = self.tstate - initdate = self.initdate - else: - if not tstate: - raise Exception("State code missing") - if not initdate: - raise Exception("Initial date missing") - - cut = ['15','01','02','03','04','05','13','06','07','16','08','09','14','10','11','12','00'] - if type(tstate) == list: - tstate = tstate[0] - index = cut.index(tstate[:2]) - self.Br = pd.read_csv(endpoint).iloc[index][1:] - self.Br_dates = [datetime.strptime(self.Br.index[i],'%Y-%m-%d') for i in range(len(self.Br))] - index = np.where(np.array(self.Br_dates) >= self.initdate)[0][0] - self.Br = self.Br[index:] - self.Br_dates = self.Br_dates[index:] - self.Br_tr = [(self.Br_dates[i]-self.initdate).days for i in range(len(self.Br))] - print('Fallecidos Acumulados') - return - - # -------------------------------- # - # Datos PCR y polbación # - # -------------------------------- # - def importpcrpop(self,endpoint = 'https://raw.githubusercontent.com/MinCiencia/Datos-COVID19/master/output/producto7/PCR.csv'): - cut = ['15','01','02','03','04','05','13','06','07','16','08','09','14','10','11','12','00'] - index = cut.index(self.tstate[:2]) - self.population = pd.read_csv(endpoint).iloc[index]['Poblacion'] - self.pcr = pd.read_csv(endpoint).iloc[index][3:] - self.pcr_dates = [datetime.strptime(self.pcr.index[i],'%Y-%m-%d') for i in range(len(self.Br))] - index = np.where(np.array(self.Br_dates) >= self.initdate)[0][0] - self.pcr = self.pcr[index:] - self.pcr_dates = self.pcr_dates[index:] - self.pcr_tr = [(self.pcr_dates[i]-self.initdate).days for i in range(len(self.Br))] - print('PCR Y poblacion') - return - - - # -------------------------- # - # Fallecidos excesivos # - # -------------------------- # - def importfallecidosexcesivos(self,path = '/home/samuel/Documents/Dlab/data/Excess_dead_daily.csv'): - #path = '/home/samuel/Documents/Dlab/data/Excess_dead_daily.csv' - - excess_dead = pd.read_csv(path) - self.ED_RM_df = excess_dead.loc[excess_dead['Codigo region']==int(self.tstate[:2])] - self.ED_RM = [self.ED_RM_df['Defunciones Covid'].iloc[i] + self.ED_RM_df['Exceso de muertes media poderada'].iloc[i] for i in range(len(self.ED_RM_df))] - - self.ED_RM_dates = [datetime.strptime(self.ED_RM_df['Fecha'].iloc[i], '%Y-%m-%d') for i in range(len(self.ED_RM_df))] - index = np.where(np.array(self.ED_RM_dates) >= self.initdate)[0][0] - enddate = max(self.ED_RM_dates) - indexend = np.where(np.array(self.ED_RM_dates) >= enddate)[0][0] - self.ED_RM_dates = self.ED_RM_dates[index:indexend] - self.ED_RM = self.ED_RM[index:indexend] - self.ED_RM_ac = np.cumsum(self.ED_RM) - self.ED_tr = [(self.ED_RM_dates[i]-self.initdate).days for i in range(len(self.ED_RM))] - print('Fallecidos Excesivos') - return - - - # ---------------------------------------- # - # Datos Infectados activos Minciencia # - # ---------------------------------------- # - def importinfectadosactivosminciencia(self=None,tstate = '', initdate = None, endpoint = 'https://raw.githubusercontent.com/MinCiencia/Datos-COVID19/master/output/producto19/CasosActivosPorComuna.csv' ): - if self: - tstate = self.tstate - initdate = self.initdate - else: - if not tstate: - raise Exception("State code missing") - if not initdate: - raise Exception("Initial date missing") - - aux = pd.read_csv(endpoint) - - if type(tstate) == list: - I_minciencia_r = aux.loc[aux['Codigo region'].isin(tstate)].iloc[:,5:-1] - I_minciencia_r = I_minciencia_r.append(aux.loc[aux['Codigo comuna'].isin(tstate)].iloc[:,5:-1]) - I_minciencia_r = I_minciencia_r.sum() - else: - I_minciencia_r = aux.loc[aux['Codigo region']==int(tstate)].iloc[:,5:-1] - I_minciencia_r = I_minciencia_r.append(aux.loc[aux['Codigo comuna']==int(tstate)].iloc[:,5:-1]) - I_minciencia_r = I_minciencia_r.sum() - - - #self.I_minciencia_r = aux.loc[aux['Codigo region']==int(self.tstate[:2])].iloc[:,5:].sum() - - - I_minciencia_r_dates = [datetime.strptime(I_minciencia_r.index[i],'%Y-%m-%d') for i in range(len(I_minciencia_r))] - index = np.where(np.array(I_minciencia_r_dates) >= initdate)[0][0] - I_minciencia_r = I_minciencia_r[index:] - I_minciencia_r_dates = I_minciencia_r_dates[index:] - I_minciencia_r_tr = [(I_minciencia_r_dates[i]-initdate).days for i in range(len(I_minciencia_r))] - print('Infectados Activos Minciencia') - - if self: - self.I_minciencia_r = I_minciencia_r - self.I_minciencia_r_dates = I_minciencia_r_dates - self.I_minciencia_r_tr = I_minciencia_r_tr - return - else: - return I_minciencia_r, I_minciencia_r_dates, I_minciencia_r_tr - - - # ---------------------------------------- # - # Datos Subreporte de Infectados # - # ---------------------------------------- # - def importSubreporte(self = None,tstate = '', initdate = None): - if self: - tstate = self.tstate - initdate = self.initdate - else: - if not tstate: - raise Exception("State code missing") - if not initdate: - raise Exception("Initial date missing") - path = "../Data/subreporte.csv" - subreporte = pd.read_csv(path) - subreporte = subreporte.drop(columns = ['Unnamed: 0']) - subreporte = subreporte.loc[subreporte['cut']==int(tstate[:2])] - subreporte_date = [datetime.strptime(i, '%Y-%m-%d') for i in subreporte['fecha']] - index = np.where(np.array(subreporte_date) >= initdate)[0][0] - subreporte = subreporte.iloc[index:] - subreporte_date = subreporte_date[index:] - subreporte_tr = [(subreporte_date[i]-initdate).days for i in range(len(subreporte))] - print('Subreporte') - if self: - self.subreporte = subreporte - self.subreporte_estimate = np.array(subreporte['estimate']) - self.subreporte_date = subreporte_date - self.subreporte_tr = subreporte_tr - return - else: - return subreporte, np.array(subreporte['estimate']), subreporte_date, subreporte_tr - - - # --------------------------- # - # Importar toda la data # - # --------------------------- # - - def importdata(self): - print('Importando Datos') - self.importfallecidosacumulados() - #self.importfallecidosexcesivos() - self.importinfectadosactivosminciencia() - self.importsochimi() - #self.importpcrpop() - self.importPopulation() - self.importinfectadosactivos() - self.importinfectadosdiarios() - self.importinfectadosacumulados() - print('Done') diff --git a/deprecated/src/SEIR/SEIR_optimization.py b/deprecated/src/SEIR/SEIR_optimization.py deleted file mode 100644 index b8381aa..0000000 --- a/deprecated/src/SEIR/SEIR_optimization.py +++ /dev/null @@ -1,123 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -import numpy as np -from numpy import linalg as LA -import pygmo as pg - -import pandas as pd -from time import time - -from class_SEIR import SEIR -from Quarantine import Quarantine - -""" - Testing pygmo applied into SEIR Class -""" -# To do: -# - Revisar una mejor construccion del objeto SEIRModel, usaria el objeto seir que hicimos al principio -class SEIRModel_pygmo: - def __init__(self,Ir,tr,S0,I0,R0,h,mov,qp,movefunct,bounds): - self.Ir = Ir - self.tr = tr - self.S0 = S0 - self.I0 = I0 - self.R0 = R0 - self.h = h - self.mov = mov - self.qp = qp - self.movefunct = movefunct - self.bounds = bounds - def fitness(self,x): - self.E0=x[3]*self.I0 - sol=pd.DataFrame(SDSEIR.intger(self.S0,self.E0,self.I0,self.R0,min(self.tr),max(self.tr),self.h,x[0],x[1],x[2],self.mov,self.qp,self.tr[-1],self.movefunct)) - idx=np.searchsorted(sol.t,self.tr) - res = LA.norm(self.Ir-sol.I[idx]) - return([res]) - - def get_bounds(self): - return(self.bounds) - - def set_bounds(self,bounds): - self.bounds = bounds - return(self.bounds) - - def get_name(self): - return "SEIR Unsectorial" - - - -# PSO Normal -algo = pg.algorithm(pg.pso(gen = 20)) -pop = pg.population(prob,50) -t0 = time() -pop = algo.evolve(pop) -t1 = time() -print('Optimization takes %f seconds' %(t1-t0)) -print(pop.champion_f) -print(pop.champion_x) - - - - - -class SEIRModel: - def __init__(self,Ir,tr,I_ac_r,I_ac_tr,tsim,alpha,population,bounds): - self.Ir = Ir - self.tr = tr - self.I_ac_r = I_ac_r - self.I_ac_tr = I_ac_tr - self.tsim = tsim - self.alpha = alpha - self.population = population - self.bounds = bounds - def fitness(self,x): - sol = SEIR(tsim=self.tsim,alpha=self.alpha,beta=x[0],mu=x[1],k=x[2],I=self.Ir[0],I_ac=self.I_ac_r[0],population=self.population) - sol.integr_sci(0,tsim,0.1) - idx=np.searchsorted(sol.t,self.tr) - res = LA.norm(self.Ir-sol.I[idx]) - return([res]) - - def get_bounds(self): - return(self.bounds) - - def set_bounds(self,bounds): - self.bounds = bounds - return(self.bounds) - - - - -from datetime import datetime -from importdata import ImportData as importadata -# Import data: -tstate = '13' -initdate = datetime(2020,5,15) - -Ir,tr,Ir_dates = importdata.importActiveInfected(tstate = tstate, initdate = initdate) -I_ac_r,I_ac_tr,I_ac_dates = importdata.importAcumulatedInfected(tstate = tstate, initdate = initdate) -population = ImportData.importPopulation(tstate = tstate) - - - -tsim = 1000 -mob = 0.6 -iqt = 0 -alpha = Quarantine(mob,iqt=iqt).alpha - -# Params to find -# beta,mu,k -lb=[0.01,0.1, 0] -ub=[ 1, 2,30] -bounds = [lb,ub] - -opti = SEIRModel(Ir=Ir,tr=tr,I_ac_r=I_ac_r,I_ac_tr=I_ac_tr,tsim=tsim,alpha=alpha,population=population,bounds=bounds) - -algo = pg.algorithm(pg.pso(gen = 20)) -pop = pg.population(opti,50) -t0 = time() -pop = algo.evolve(pop) -t1 = time() -print('Optimization takes %f seconds' %(t1-t0)) -print(pop.champion_f) -print(pop.champion_x) \ No newline at end of file diff --git a/deprecated/src/SEIR/SEIR_parallel.py b/deprecated/src/SEIR/SEIR_parallel.py deleted file mode 100644 index b6980a3..0000000 --- a/deprecated/src/SEIR/SEIR_parallel.py +++ /dev/null @@ -1,107 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -""" -# -------------------- # -# # -# SEIR Parallel # -# # -# -------------------- # - -Esta deberia ser la libreria de meta analisis. Hacer una clase por tipo de modelo y agregar los meta-anális necesarios - -Estudiar formas más inteligentes de meter argumentos a funciones de python - -Agregar iterador sobre k - -Luego hay que resolver como generar los meta-plots: Normales, grillas, contour, what-else? - - - -""" - - -import sys -from pathlib import Path -sys.path.insert(1, '../SEIR/') -sys.path.insert(1, 'SEIR/') - -import numpy as np -from datetime import datetime -import matplotlib.pyplot as plt -from joblib import Parallel, delayed -import multiprocessing - -from class_SEIR import SEIR - - - -# Get values - -class seirMetaAnalysis: - def __init__(self): - self.sims = [] - self.num_cores = multiprocessing.cpu_count() - - - def sim_run(self,tsim,alpha,beta,mu,k=0,I=100,I_ac=0,I_d=0,R=0,population=1000000,expinfection = 1, SeroPrevFactor=1,intgr=0): - """ - Single SEIR Model simulation - """ - model = SEIR(tsim,alpha,beta,mu,k=k,I=I,I_ac=I_ac,I_d=I_d,R=R,population=population,expinfection = expinfection, SeroPrevFactor=SeroPrevFactor) - if intgr == 0: - print('Fast Solver') - model.integr_sci(0,tsim,0.1,False) - else: - print('Robust Solver') - model.integr(0,tsim,0.1,False) - out=model - return(out) - - def simulate_k(self,tsim,alpha,beta,mu,k=0,I=100,I_ac=0,I_d=0,R=0,population=1000000,expinfection = 1, SeroPrevFactor=1,intgr=0): - """ - Multi SEIR Model simulation - - """ - self.sims=[] - self.sims = (Parallel(n_jobs=self.num_cores, verbose=50)(delayed(self.simulate)(tsim,alpha,beta,mu,k=i,I=I,I_ac=I_ac,I_d=I_d,R=R,population=population,expinfection =expinfection, SeroPrevFactor=SeroPrevFactor,intgr=intgr) for i in k)) - - self.sims=[] - if type(alpha) == list: - self.sims = Parallel(n_jobs=self.num_cores, verbose=50)(delayed(self.sim_run)(tsim,i,beta,mu,k=j,I=I,I_ac=I_ac,I_d=I_d,R=R,population=population,expinfection =expinfection, SeroPrevFactor=SeroPrevFactor,intgr=intgr) for j in k for i in alpha) - else: - self.sims = Parallel(n_jobs=self.num_cores, verbose=50)(delayed(self.sim_run)(tsim,alpha,beta,mu,k=j,I=I,I_ac=I_ac,I_d=I_d,R=R,population=population,expinfection =expinfection, SeroPrevFactor=SeroPrevFactor,intgr=intgr) for j in k) - self.simulated = True - return(self.sims) - - - - def simulate_k2(self,tsim,alpha,beta,mu,k=0,I=100,I_ac=0,I_d=0,R=0,population=1000000,expinfection = 1, SeroPrevFactor=1,intgr=0): - self.sims=[] - for j in k: - if type(alpha) == list: - self.sims.append(Parallel(n_jobs=self.num_cores, verbose=50)(delayed(self.sim_run)(tsim,i,beta,mu,k=j,I=I,I_ac=I_ac,I_d=I_d,R=R,population=population,expinfection =expinfection, SeroPrevFactor=SeroPrevFactor,intgr=intgr) for i in alpha)) - else: - self.sims.append(self.sim_run(tsim,alpha,beta,mu,k=j,I=I,I_ac=I_ac,I_d=I_d,R=R,population=population,expinfection =expinfection, SeroPrevFactor=SeroPrevFactor,intgr=intgr)) - self.simulated = True - return(self.sims) - - - - def simulate(self,tsim,alpha,beta,mu,k=0,I=100,I_ac=0,I_d=0,R=0,population=1000000,expinfection = 1, SeroPrevFactor=1,intgr=0): - self.sims=[] - if type(alpha) == list: - self.sims = Parallel(n_jobs=self.num_cores, verbose=50)(delayed(self.sim_run)(tsim,i,beta,mu,k=k,I=I,I_ac=I_ac,I_d=I_d,R=R,population=population,expinfection =expinfection, SeroPrevFactor=SeroPrevFactor,intgr=intgr) for i in alpha) - else: - self.sims = self.sim_run(tsim,alpha,beta,mu,k=k,I=I,I_ac=I_ac,I_d=I_d,R=R,population=population,expinfection =expinfection, SeroPrevFactor=SeroPrevFactor,intgr=intgr) - self.simulated = True - return(self.sims) - - -""" - def simulate(self,intgr=0): - #params=Parallel(n_jobs=num_cores, verbose=50)(delayed(ref_test.refinepso_all)(Ir,tr,swarmsize=200,maxiter=50,omega=0.5, phip=0.5, phig=0.5,eta_r=[0,1],Q_r=[0,1],obj_func='IN')for i in range(int(rep))) - self.sims=Parallel(n_jobs=self.num_cores, verbose=50)(delayed(self.sim_run)(self.inputarray[i,0],self.inputarray[i,1],self.inputarray[i,2],self.inputarray[i,3],self.inputarray[i,4],self.inputarray[i,5],self.inputarray[i,6]) for i in range(self.inputarray.shape[0])) - self.simulated = True - return(self.sims) -""" \ No newline at end of file diff --git a/deprecated/src/SEIR/SEIR_plots.py b/deprecated/src/SEIR/SEIR_plots.py deleted file mode 100644 index 37947bf..0000000 --- a/deprecated/src/SEIR/SEIR_plots.py +++ /dev/null @@ -1,338 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -""" - - SEIR Plot Functions - -""" -from datetime import datetime, timedelta -import matplotlib.pyplot as plt -import numpy as np -from numpy import linalg as LA - - -class SEIR_plots(): - # -------------------------- # - # Plot function # - # -------------------------- # - def plot(self,title = '',xlabel='',ylabel='',legend=True): - plt.xlabel(xlabel) - plt.ylabel(ylabel) - plt.title(title) - if legend: - plt.legend(loc=0) - plt.show() - - - # -------------------------------------------------------- # - # Infectados # - # -------------------------------------------------------- # - - # ------------------------------ # - # Infectados Activos # - # ------------------------------ # - def plotActiveInfected(self,enddate = datetime(2020,7,30),days=-1, reales= False,ylim = 0,norm=1,scalefactor = False,legend=True, minciencia = True,showparams=False): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - if days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - Isf = norm - if scalefactor: - Isf = self.ScaleFactor*norm - - - # ----------- # - # Plot # - # ----------- # - - # Error - #if self.realdata: - # if minciencia: - # for i in range(self.numescenarios): - # plt.plot([], [], ' ', label='err: '+str(round(100*self.err_Iactives_minciencia[i],2))+'%'+' Mov = '+str(self.inputarray[i][2])) - # - # else: - # for i in range(self.numescenarios): - # plt.plot([], [], ' ', label='err: '+str(round(100*self.err_Iactives[i],2))+'%'+' Mov = '+str(self.inputarray[i][2])) - - # Parametros: - if showparams: - plt.plot([], [], ' ', label='beta: '+str(self.beta)) - plt.plot([], [], ' ', label='mu: '+str(self.mu)) - plt.plot([], [], ' ', label='k: '+str(self.k)) - #plt.plot([], [], ' ', label='ScaleFactor: '+str(self.ScaleFactor)) - #plt.plot([], [], ' ', label='seroprev: '+str(self.SeroPrevFactor)) - #if scalefactor: - # for i in range(self.numescenarios): - # plt.plot([], [], ' ', label='SeroPrev Norm: '+str(round(self.infectedpop_norm[i],2))+'%'+' Mov = '+str(self.inputarray[i][2])) - #else: - # for i in range(self.numescenarios): - # plt.plot([], [], ' ', label='SeroPrev: '+str(round(self.infectedpop[i],2))+'%'+' Mov = '+str(self.inputarray[i][2])) - - - # Reales - #if self.realdata: - # if reales: - # if minciencia: - # plt.scatter(self.I_minciencia_r_tr,self.I_minciencia_r,label='Infectados Activos Minciencia') - # else: - # plt.scatter(self.tr,self.Ir,label='Infectados Activos reales') - - - # Inicio cuarentena general - for i in range(self.numescenarios): - plt.axvline(x=self.inputarray[i][4],linestyle = 'dashed',color = 'grey') - # Fin cuarentena general - plt.axvline(x=self.inputarray[0][5],linestyle = 'dotted',color = 'grey') - - # Infectados - #linestyle = ['dashed','solid','dotted','dashed','solid','dotted','solid','dashed','dotted','dotted'] - #linestyle = ['dashed','solid','dashed','solid','dotted'] - colors = ['red','blue','green','purple','black','lime','cyan','m','indigo','orange','orangered','wheat','salmon'] - #colors = ['lime','lime','purple','purple','black'] - qt = ['TQ' if self.inputarray[i][-1]==0 else 'DQ'+str(int(self.inputarray[i][3])) for i in range(len(self.inputarray))] - for i in range(self.numescenarios): - plt.plot(self.t[i],self.I_act[i]/Isf,label='Mob = '+str(self.inputarray[i][2])+' '+qt[i])#,color = colors[i],linestyle='solid',linewidth=2) - - if days >0: - plt.xlim(0,days) - if ylim >0: - plt.ylim(0,ylim) - self.plot(title = 'Active infected',xlabel='Day',legend=legend) - - - - # -------------------------------- # - # Infectados Acumulados # - # -------------------------------- # - def plotAccumulatedInfected(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False,showparams = False): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - if days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - Isf = norm - if scalefactor: - Isf = self.ScaleFactor*norm - - # ----------- # - # Plot # - # ----------- # - if showparams: - plt.plot([], [], ' ', label='beta: '+str(self.beta)) - plt.plot([], [], ' ', label='mu: '+str(self.mu)) - plt.plot([], [], ' ', label='k: '+str(self.k)) - - # Error - #for i in range(self.numescenarios): - # plt.plot([], [], ' ', label='err: '+str(round(100*self.err[i],2))+'%') - - # Inicio cuarentena general - for i in range(self.numescenarios): - plt.axvline(x=self.inputarray[i][4],linestyle = 'dashed',color = 'grey') - # Fin cuarentena general - plt.axvline(x=self.inputarray[0][5],linestyle = 'dotted',color = 'grey') - - # Reales - #if self.realdata: - # if reales: - # plt.scatter(self.I_ac_r_tr,self.I_ac_r,label='Infectados Activos reales') - - # Infectados - qt = ['TQ' if self.inputarray[i][-1]==0 else 'DQ'+str(int(self.inputarray[i][3])) for i in range(len(self.inputarray))] - for i in range(self.numescenarios): - plt.plot(self.t[i],self.Iac[i]/Isf,label='Mob = '+str(self.inputarray[i][2])+' '+qt[i]) - - if days >0: - plt.xlim(0,days) - if ylim >0: - plt.ylim(0,ylim) - self.plot(title = 'Accumulated Infected',xlabel='Day') - - - # ------------------------------ # - # Infectados Diarios # - # ------------------------------ # - def plotDailyInfected(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False, showparams=False): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - if days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - idx = [np.searchsorted(self.t[i],range(days)) for i in range(self.numescenarios)] - - # Reales - #if self.realdata: - # if reales: - # plt.scatter(self.I_d_r_tr,self.I_d_r,label='Infectados diarios reales') - - if showparams: - plt.plot([], [], ' ', label='beta: '+str(self.beta)) - plt.plot([], [], ' ', label='mu: '+str(self.mu)) - plt.plot([], [], ' ', label='k: '+str(self.k)) - - # Inicio cuarentena general - for i in range(self.numescenarios): - plt.axvline(x=self.inputarray[i][4],linestyle = 'dashed',color = 'grey') - - Idiarios = [self.I_as_d[i]+self.I_mi_d[i]+self.I_se_d[i]+self.I_cr_d[i] for i in range(self.numescenarios)] - - - qt = ['TQ' if self.inputarray[i][-1]==0 else 'DQ'+str(int(self.inputarray[i][3])) for i in range(len(self.inputarray))] - for i in range(self.numescenarios): - plt.plot(self.t[i][:(endD[i])],Idiarios[i][:endD[i]],label='Mob = '+str(self.inputarray[i][2])+' '+qt[i]) - - if days >0: - plt.xlim(0,days) - self.plot(title = 'Infectados Diarios',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d')) - - - # ------------------ # - # Expuestos # - # ------------------ # - def plotExposed(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False,legend=True,showparams=False): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - elif days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - if norm <1: - norm = self.ScaleFactor - - if showparams: - plt.plot([], [], ' ', label='beta: '+str(self.beta)) - plt.plot([], [], ' ', label='mu: '+str(self.mu)) - plt.plot([], [], ' ', label='k: '+str(self.k)) - #Isf = 1 - #if scalefactor: - # Isf = ScaleFactor - - # ----------- # - # Plot # - # ----------- # - # Parametros - #plt.plot([], [], ' ', label='beta: '+str(self.beta)) - #plt.plot([], [], ' ', label='mu: '+str(self.mu)) - #plt.plot([], [], ' ', label='factor de escala: '+str(self.ScaleFactor)) - - # Fecha de Peak - #for i in range(self.numescenarios): - # plt.plot([], [], ' ', label='Mov='+str(self.inputarray[i][2])+'Peak='+self.peak_date[i].strftime('%Y-%m-%d')) - # - - linestyle = ['dashed','solid','dashed','dotted','dotted'] - qt = ['TQ' if self.inputarray[i][-1]==0 else 'DQ'+str(int(self.inputarray[i][3])) for i in range(len(self.inputarray))] - for i in range(self.numescenarios): - plt.plot(self.t[i][:endD[i]],self.E[i][:endD[i]],label='Mob = '+str(self.inputarray[i][2])+' '+qt[i])#,color = 'blue',linestyle=linestyle[i]) - #plt.plot(self.t[i][:endD[i]],self.E_sy[i][:endD[i]],label='Expuestos sintomáticos Mov = '+str(self.inputarray[i][2]),color = 'red',linestyle=linestyle[i]) - - plt.xlim(0,days) - if ylim >0: - plt.ylim(0,ylim) - - self.plot(title = 'Exposed',xlabel='Days',legend=legend) - - - - # -------------------- # - # Curvas SEIR # - # -------------------- # - def plotseir(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False,seir = [1,1,1,1],showparams=False): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - elif days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - - if norm <1: - norm = self.ScaleFactor - #Isf = 1 - #if scalefactor: - # Isf = ScaleFactor - - # ----------- # - # Plot # - # ----------- # - # Parametros - if showparams: - plt.plot([], [], ' ', label='beta: '+str(self.beta)) - plt.plot([], [], ' ', label='mu: '+str(self.mu)) - plt.plot([], [], ' ', label='k: '+str(self.k)) - - # Fecha de Peak - #for i in range(self.numescenarios): - # plt.plot([], [], ' ', label='Mov='+str(self.inputarray[i][2])+'Peak='+self.peak_date[i].strftime('%Y-%m-%d')) - - - linestyle = ['solid','dashed','dotted','-.'] - colors = ['red','blue','green','purple','black','lime','cyan','m','indigo','orange','orangered','wheat','salmon'] - qt = ['TQ' if self.inputarray[i][-1]==0 else 'DQ'+str(int(self.inputarray[i][3])) for i in range(len(self.inputarray))] - for i in range(self.numescenarios): - plt.plot(self.t[i],self.S[i],label='S Mob = '+str(self.inputarray[i][2])+' '+qt[i],linestyle=linestyle[0],color = colors[i]) - plt.plot(self.t[i],self.I[i],label='I Mob = '+str(self.inputarray[i][2])+' '+qt[i],linestyle=linestyle[1],color = colors[i]) - plt.plot(self.t[i],self.E[i],label='E Mob = '+str(self.inputarray[i][2])+' '+qt[i],linestyle=linestyle[2],color = colors[i]) - plt.plot(self.t[i],self.R[i],label='R Mob = '+str(self.inputarray[i][2])+' '+qt[i],linestyle=linestyle[3],color = colors[i]) - #plt.plot(self.t[i],D[i],label='Muertos diarios Mov = '+str(inputarray[i][2]),linestyle=linestyle[i]) - #plt.plot(self.t[i],self.B[i],label='Enterrados Mov = '+str(self.inputarray[i][2]),linestyle=linestyle[i]) - - plt.xlim(0,days) - if ylim >0: - plt.ylim(0,ylim) - - self.plot(title = 'SEIR Model',xlabel='Days') - - - # ------------------------- # - # Plot Cuarentenas # - # ------------------------- # - def plotQuarantines(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - if days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - # ----------- # - # Plot # - # ----------- # - # Inicio cuarentena general - for i in range(self.numescenarios): - plt.axvline(x=self.inputarray[i][4],linestyle = 'dashed',color = 'grey') - # Fin cuarentena general - plt.axvline(x=self.inputarray[0][5],linestyle = 'dotted',color = 'grey') - - - # cuarentenas - linestyle = ['dashed','dotted','-.','*',':'] - qt = ['TQ' if self.inputarray[i][-1]==0 else 'DQ'+str(int(self.inputarray[i][3])) for i in range(len(self.inputarray))] - for i in range(self.numescenarios): - plt.plot(self.t[i],self.quarantines[i],label='Mob = '+str(self.inputarray[i][2])+' '+qt[i]) - - if days >0: - plt.xlim(0,days) - self.plot(title = 'Quarantines',xlabel='Days', ylabel='Mobility') diff --git a/deprecated/src/SEIR/SEIR_tests.py b/deprecated/src/SEIR/SEIR_tests.py deleted file mode 100644 index 21225b6..0000000 --- a/deprecated/src/SEIR/SEIR_tests.py +++ /dev/null @@ -1,138 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -# ----------------- # -# # -# SEIR Model # -# # -# ----------------- # -import sys -from pathlib import Path -sys.path.insert(1, '../src/') -sys.path.insert(1, 'src/') -from SEIRmodel import SEIRmodel -import numpy as np -from datetime import datetime -import matplotlib.pyplot as plt -%matplotlib tk -from joblib import Parallel, delayed -import multiprocessing - -tstate = '' -initdate = datetime(2020,5,15) - -# ------------------- # -# Plot 1 # -# ------------------- # - -# Camas H totales vs infectados severos vs HcrtoD - - - - -# Parametros del modelo -beta = 0.2 # Tasa de contagio -mu = 0 # Razon E0/I0 -ScaleFactor = 1 # Factor de Escala: Numero de infectados por sobre los reportados -SeroPrevFactor = 1 # Sero Prevalence Factor. Permite ajustar la cantidad de gente que entra en la dinamica -expinfection = 1 # Proporcion en la que contagian los expuestos - -tsim = 1000 # Tiempo de simulacion - -# Simular -# Activos Iniciales -I_act0 = 100 -I_as_prop = 1 -I_mi_prop = 0 -I_se_prop = 0 -I_cr_prop = 0 - -# Muertos iniciales -dead0 = 0 - -population = 1000000 -# Initial Hospitalized -H0 = 0 -# Initial VMI -V0 = 0 - -nm = int(population/100000) -#step = 6 - - -# Hospital capacity -Htot = 30*nm - -# VMI Capacity -Vtot = 10*nm - - - -# Quarantines -alpha = 0.6 -quarantines = [[tsim, 0.85, alpha, 0.0, 0.0, tsim, 0.0]] - - - -# Simulation - -# Kinetic Saturation -k=0 - -simulation = SEIRHVD_local(beta = beta,mu = mu,ScaleFactor=ScaleFactor,SeroPrevFactor=SeroPrevFactor,expinfection=expinfection,initdate = initdate, tsim = tsim,tstate=tstate, k = k,I_as_prop = I_as_prop, I_mi_prop = I_mi_prop,I_se_prop = I_se_prop,I_cr_prop = I_cr_prop) -simulation.inputarray = np.array(quarantines) -simulation.addquarantine() -simulation.initialvalues(I_act0,dead0,population,H0,V0,Htot,Vtot,R=0,D=0,H_cr = 0) -simulation.simulate(v=0) - -simulation.plotseird() -simulation.peak -simulation.peak_t - -k=0.1 - -simulation2 = SEIRHVD_local(beta = beta,mu = mu,ScaleFactor=ScaleFactor,SeroPrevFactor=SeroPrevFactor,expinfection=expinfection,initdate = initdate, tsim = tsim,tstate=tstate, k = k,I_as_prop = I_as_prop, I_mi_prop = I_mi_prop,I_se_prop = I_se_prop,I_cr_prop = I_cr_prop) -simulation2.inputarray = np.array(quarantines) -simulation2.addquarantine() -simulation2.initialvalues(I_act0,dead0,population,H0,V0,Htot,Vtot,R=0,D=0,H_cr = 0) -simulation2.simulate(v=0) - -simulation2.plotseird() -simulation2.peak -simulation2.peak_t - -k=1 - -simulation3 = SEIRHVD_local(beta = beta,mu = mu,ScaleFactor=ScaleFactor,SeroPrevFactor=SeroPrevFactor,expinfection=expinfection,initdate = initdate, tsim = tsim,tstate=tstate, k = k,I_as_prop = I_as_prop, I_mi_prop = I_mi_prop,I_se_prop = I_se_prop,I_cr_prop = I_cr_prop) -simulation3.inputarray = np.array(quarantines) -simulation3.addquarantine() -simulation3.initialvalues(I_act0,dead0,population,H0,V0,Htot,Vtot,R=0,D=0,H_cr = 0) -simulation3.simulate(v=0) - -simulation3.plotseird() -simulation3.peak -simulation3.peak_t - -k=10 - -simulation4 = SEIRHVD_local(beta = beta,mu = mu,ScaleFactor=ScaleFactor,SeroPrevFactor=SeroPrevFactor,expinfection=expinfection,initdate = initdate, tsim = tsim,tstate=tstate, k = k,I_as_prop = I_as_prop, I_mi_prop = I_mi_prop,I_se_prop = I_se_prop,I_cr_prop = I_cr_prop) -simulation4.inputarray = np.array(quarantines) -simulation4.addquarantine() -simulation4.initialvalues(I_act0,dead0,population,H0,V0,Htot,Vtot,R=0,D=0,H_cr = 0) -simulation4.simulate(v=0) - -simulation4.plotseird() -simulation4.peak -simulation4.peak_t - -# Plots: - -plt.plot(simulation.t[0],simulation.I[0],label="k=0") -plt.plot(simulation2.t[0],simulation2.I[0],label="k=0.1") -plt.plot(simulation3.t[0],simulation3.I[0],label="k=1") -plt.plot(simulation4.t[0],simulation4.I[0],label="k=10") -plt.legend(loc=0) -plt.ylabel('Infected') -plt.xlabel('Days') -plt.xlim(0,500) -plt.show() \ No newline at end of file diff --git a/deprecated/src/SEIR/SEIR_vars.py b/deprecated/src/SEIR/SEIR_vars.py deleted file mode 100644 index d209dcb..0000000 --- a/deprecated/src/SEIR/SEIR_vars.py +++ /dev/null @@ -1,239 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -import numpy as np -from datetime import timedelta -from datetime import datetime -from numpy import linalg as LA - -""" -# --------------------------------------- # -# Simulation results processing # -# --------------------------------------- # - -Creation of local variables for later analysis -""" - - -class SEIR_vars(): - - # Creacion de variables auxiliares para los analisis - def localvar(self): - # Poblacion total - self.T=[self.sims[i][0].S+self.sims[i][0].E_as+self.sims[i][0].E_sy+self.sims[i][0].I_as+self.sims[i][0].I_cr+self.sims[i][0].I_mi+self.sims[i][0].I_se\ - +self.sims[i][0].H_in+self.sims[i][0].H_out+self.sims[i][0].H_cr+self.sims[i][0].V+self.sims[i][0].D+self.sims[i][0].R+self.sims[i][0].B for i in range(self.numescenarios)] - - - # Susceptibles - self.S = [self.sims[i][0].S for i in range(self.numescenarios)] - # Hospitalizados totales diarios - self.H_sum=[self.sims[i][0].H_in+self.sims[i][0].H_cr+self.sims[i][0].H_out+self.sims[i][0].V for i in range(self.numescenarios)] - # Hospitalizados camas diarios - self.H_bed=[self.sims[i][0].H_in+self.sims[i][0].H_cr+self.sims[i][0].H_out for i in range(self.numescenarios)] - # Hospitalizados ventiladores diarios - self.H_vent=[self.sims[i][0].V for i in range(self.numescenarios)] - # Infectados Acumulados - self.Iac=[self.sims[i][0].I for i in range(self.numescenarios)] - # Infectados activos diarios - self.I = [self.sims[i][0].I_as+self.sims[i][0].I_cr + self.sims[i][0].I_mi + self.sims[i][0].I_se + self.sims[i][0].H_in+self.sims[i][0].H_cr+self.sims[i][0].H_out+self.sims[i][0].V for i in range(self.numescenarios)] - #self.I_act = [self.sims[i][0].I_mi + self.sims[i][0].I_cr + self.sims[i][0].I_se + self.sims[i][0].H_in+self.sims[i][0].H_cr+self.sims[i][0].H_out+self.sims[i][0].V for i in range(self.numescenarios)] - self.I_act = [self.sims[i][0].I_as+self.sims[i][0].I_mi + self.sims[i][0].I_cr + self.sims[i][0].I_se for i in range(self.numescenarios)] - - # Infectados asintomaticos - self.I_as = [self.sims[i][0].I_as for i in range(self.numescenarios)] - # Infectados mild - self.I_mi = [self.sims[i][0].I_mi for i in range(self.numescenarios)] - # Infectados severos - self.I_se = [self.sims[i][0].I_se for i in range(self.numescenarios)] - # Infectados criticos - self.I_cr = [self.sims[i][0].I_cr for i in range(self.numescenarios)] - # suma de infectados "sueltos" - self.I_sum = [self.sims[i][0].I_as+self.sims[i][0].I_cr + self.sims[i][0].I_mi + self.sims[i][0].I_se for i in range(self.numescenarios)] - - # Infectados nuevos diarios - # Infectados asintomaticos - self.I_as_d = [self.sims[i][0].I_as_d for i in range(self.numescenarios)] - # Infectados mild - self.I_mi_d = [self.sims[i][0].I_mi_d for i in range(self.numescenarios)] - # Infectados severos - self.I_se_d = [self.sims[i][0].I_se_d for i in range(self.numescenarios)] - # Infectados criticos - self.I_cr_d = [self.sims[i][0].I_cr_d for i in range(self.numescenarios)] - - - # Infectados acumulados - # Infectados asintomaticos - self.I_as_ac = [self.sims[i][0].I_as_ac for i in range(self.numescenarios)] - # Infectados mild - self.I_mi_ac = [self.sims[i][0].I_mi_ac for i in range(self.numescenarios)] - # Infectados severos - self.I_se_ac = [self.sims[i][0].I_se_ac for i in range(self.numescenarios)] - # Infectados criticos - self.I_cr_ac = [self.sims[i][0].I_cr_ac for i in range(self.numescenarios)] - - - # Expuestos totales diarios - self.E = [self.sims[i][0].E_as+self.sims[i][0].E_sy for i in range(self.numescenarios)] - self.E_as = [self.sims[i][0].E_as for i in range(self.numescenarios)] - self.E_sy = [self.sims[i][0].E_sy for i in range(self.numescenarios)] - - # Fallecidos:: - - # Enterrados/Muertos acumulados - self.B = [self.sims[i][0].B for i in range(self.numescenarios)] - # Muertos diarios - self.D = [self.sims[i][0].D for i in range(self.numescenarios)] - # Infectados Criticos Fallecidos - self.I_crD = [self.sims[i][0].I_crD for i in range(self.numescenarios)] - self.I_crD_d = [self.sims[i][0].I_crD_d for i in range(self.numescenarios)] - # Infectados Serios Fallecidos - self.I_seD = [self.sims[i][0].I_seD for i in range(self.numescenarios)] - self.I_seD_d = [self.sims[i][0].I_seD_d for i in range(self.numescenarios)] - # Hospitalizados Criticos Fallecidos - self.H_crD = [self.sims[i][0].H_crD for i in range(self.numescenarios)] - self.H_crD_d = [self.sims[i][0].H_crD_d for i in range(self.numescenarios)] - # Ventilados Fallecidos - self.VD = [self.sims[i][0].VD for i in range(self.numescenarios)] - self.VD_d = [self.sims[i][0].VD_d for i in range(self.numescenarios)] - - # Recuperados - self.R = [self.sims[i][0].R for i in range(self.numescenarios)] - # Ventiladores diarios - self.V = [self.sims[i][0].V for i in range(self.numescenarios)] - - # Variables temporales - self.t = [self.sims[i][0].t for i in range(self.numescenarios)] - self.dt = [np.diff(self.t[i]) for i in range(self.numescenarios)] - - - # CAMAS - self.H_crin=[self.sims[i][0].H_cr for i in range(self.numescenarios)] - self.H_in=[self.sims[i][0].H_in for i in range(self.numescenarios)] - self.H_out=[self.sims[i][0].H_out for i in range(self.numescenarios)] - self.H_sum=[self.sims[i][0].H_in+self.sims[i][0].H_cr+self.sims[i][0].H_out for i in range(self.numescenarios)] - self.H_tot=[self.sims[i][0].H_in+self.sims[i][0].H_cr+self.sims[i][0].H_out+self.sims[i][0].V for i in range(self.numescenarios)] - - self.CH = [self.sims[i][0].CH for i in range(self.numescenarios)] - self.CV = [self.sims[i][0].CV for i in range(self.numescenarios)] - self.ACH = [self.sims[i][0].ACH for i in range(self.numescenarios)] - self.ACV = [self.sims[i][0].ACV for i in range(self.numescenarios)] - - #Cálculo de la fecha del Peak - self.peakindex = [np.where(self.I[i]==max(self.I[i]))[0][0] for i in range((self.numescenarios))] - self.peak = [max(self.I[i]) for i in range((self.numescenarios))] - self.peak_t = [self.t[i][self.peakindex[i]] for i in range((self.numescenarios))] - self.peak_date = [self.initdate+timedelta(days=round(self.peak_t[i])) for i in range((self.numescenarios))] - - #Cálculo de la fecha de Saturacion_ - self.ventsat = 0 - self.hsta = 0 - - #proporcion de la poblacion que entra en la dinamica de infeccion - #self.population = self.sims[0][0].population - self.infectedsusc = [100*((self.S[i][0] - self.S[i][-1])/self.S[i][0]) for i in range(self.numescenarios)] - self.infectedpop = [100*((self.S[i][0] - self.S[i][-1]))/self.population for i in range(self.numescenarios)] - self.infectedpop_norm = [100*((self.S[i][0] - self.S[i][-1]))/(self.population*self.ScaleFactor) for i in range(self.numescenarios)] - - - # Indicadores: - # Should Have been hospitalized - #self.SHFR = [self.B[i]/(self.I_se_ac[i]+self.I_cr_ac[i]) for i in range(self.numescenarios)] - self.totD = [self.B[i][-1] for i in range(self.numescenarios)] - - #self.SHFR = [self.totD[i]/(self.I_se_ac[i][-1]+self.I_cr_ac[i][-1]) if self.totD[i]>15 else 0.15 for i in range(self.numescenarios)] - self.SHFR = [self.totD[i]/(self.I_se_ac[i][-1]+self.I_cr_ac[i][-1]) for i in range(self.numescenarios)] - self.SHFR_d = [self.B[i]/(self.I_se_ac[i][-1]+self.I_cr_ac[i][-1]) for i in range(self.numescenarios)] - - # ----------------- # - # QA Variables # - # ----------------- # - # Infected accumulated checksum - self.Iac_checksum = [[self.Iac[i][j] - self.I_as_ac[i][j] - self.I_mi_ac[i][j] - self.I_se_ac[i][j] - self.I_cr_ac[i][j] - self.I_act0 for j in range(len(self.t[i]))] for i in range(self.numescenarios)] - # Accumulated Infected proportion over time - self.I_as_ac_prop = [[self.I_as_ac[i][j]/self.Iac[i][j] for j in range(len(self.t[i]))] for i in range(self.numescenarios)] - self.I_mi_ac_prop = [[self.I_mi_ac[i][j]/self.Iac[i][j] for j in range(len(self.t[i]))] for i in range(self.numescenarios)] - self.I_se_ac_prop = [[self.I_se_ac[i][j]/self.Iac[i][j] for j in range(len(self.t[i]))] for i in range(self.numescenarios)] - self.I_cr_ac_prop = [[self.I_cr_ac[i][j]/self.Iac[i][j] for j in range(len(self.t[i]))] for i in range(self.numescenarios)] - - # Accumulated Infected proportion sum - must be 1 - self.Iac_prop = [self.I_as_ac_prop[i][-1] +self.I_mi_ac_prop[i][-1] +self.I_se_ac_prop[i][-1] +self.I_cr_ac_prop[i][-1] +self.I_act0/self.Iac[i][-1] for i in range(self.numescenarios)] - - # Deaths - self.D_checksum = [max(self.VD_d[i]+self.H_crD_d[i]+self.I_seD_d[i]+self.I_crD_d[i] -self.D[i]) for i in range(self.numescenarios)] - #self.B_checksum = [max(self.VD[i]+self.H_crD[i]+self.I_seD[i]+self.I_crD[i]-self.B[i]) for i in range(self.numescenarios)] - - # Population: - self.population_checksum = [max(self.S[i]+self.E_as[i]+self.E_sy[i]+self.I_as[i]+self.I_mi[i]+self.I_se[i]+self.I_cr[i] - +self.H_crin[i]+self.H_in[i]+self.H_out[i]+self.V[i]+self.R[i]+self.D[i]-self.population) for i in range(self.numescenarios)] - - # -------------- # - # Errores # - # -------------- # - if self.realdata: - # Camas - idx = [np.searchsorted(self.t[i],self.sochimi_tr) for i in range(self.numescenarios)] - self.err_bed = [LA.norm(self.Hr-self.H_sum[i][idx[i]])/LA.norm(self.Hr) for i in range(self.numescenarios)] - self.err_vent = [LA.norm(self.Vr-self.V[i][idx[i]])/LA.norm(self.Vr) for i in range(self.numescenarios)] - - # Infecatos Activos - idx = [np.searchsorted(self.t[i],self.tr) for i in range(self.numescenarios)] - self.err_Iactives = [LA.norm(self.Ir-self.I[i][idx[i]])/LA.norm(self.Ir) for i in range(self.numescenarios)] - idx = [np.searchsorted(self.t[i],self.I_minciencia_r_tr) for i in range(self.numescenarios)] - self.err_Iactives_minciencia = [LA.norm(self.I_minciencia_r-self.I[i][idx[i]])/LA.norm(self.Ir) for i in range(self.numescenarios)] - - # Infectados acumulados - #idx = [np.searchsorted(t[i],tr) for i in range(self.numescenarios)] - #err_Iactives = [LA.norm(Ir-I[i][idx[i]])/LA.norm(Ir) for i in range(self.numescenarios)] - - # Fallecidos - idx = [np.searchsorted(self.t[i],self.Br_tr) for i in range(self.numescenarios)] - self.err_dead = [LA.norm(self.Br-self.B[i][idx[i]])/LA.norm(self.Br) for i in range(self.numescenarios)] - - self.quarantines = [] - for i in range(self.numescenarios): - self.quarantines.append([self.sims[i][0].alpha(t) for t in self.t[i]]) - - # -------------------- # - # Fecha de Colapso # - # -------------------- # - self.H_colapsedate = [] - self.H_colapseday = [] - self.V_colapsedate = [] - self.V_colapseday = [] - for i in range(self.numescenarios): - try: - self.H_colapseday.append(np.where(self.CH[i]>0)[0][0]) - self.H_colapsedate.append((self.initdate+timedelta(days=self.H_colapseday[i])).strftime('%Y/%m/%d')) - except: - self.H_colapseday.append(self.tsim) - self.H_colapsedate.append("None") - try: - self.V_colapseday.append(np.where(self.CV[i]>0)[0][0]) - self.V_colapsedate.append((self.initdate+timedelta(days=self.V_colapseday[i])).strftime('%Y/%m/%d')) - except: - self.V_colapseday.append(self.tsim) - self.V_colapsedate.append("None") - - """ - # ---------------------------------- # - # Estudio Resultados # - # ---------------------------------- # - """ - # ---------------------------------- # - # Resumen de resultados # - # ---------------------------------- # - def resume(self): - print("Resumen de resultados:") - qtype = "" - for i in range(self.numescenarios): - if self.inputarray[i][-1]==0: - qtype = "Cuarentena total" - if self.inputarray[i][-1]>0: - qtype ="Cuarentena Dinámica" - - print("Escenario "+str(i)) - print("Tipo de Cuarentena: "+qtype+'\nmov_rem: '+str(self.inputarray[i][2])+'\nmov_max: '+str(self.inputarray[i][2])+ - "\nInicio cuarentena: "+(self.initdate+timedelta(days=self.inputarray[i][4])).strftime('%Y/%m/%d')+"\nFin cuarentena: "+(self.initdate+timedelta(days=self.inputarray[i][5])).strftime('%Y/%m/%d')) - print("Peak infetados \n"+"Peak value: "+str(self.peak[i])+"\nPeak date: "+str(self.peak_date[i])) - print("Fallecidos totales:"+str(max(self.B[i]))) - print("Fecha de colapso hospitalario \n"+"Camas: "+self.H_colapsedate[i]+"\nVentiladores: "+self.V_colapsedate[i]) - print("\n") diff --git a/deprecated/src/SEIR/SEIRmodel.py b/deprecated/src/SEIR/SEIRmodel.py deleted file mode 100644 index c48434d..0000000 --- a/deprecated/src/SEIR/SEIRmodel.py +++ /dev/null @@ -1,108 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -import class_SEIR as SEIR -import SEIR_plots -import SEIR_vars -from datetime import datetime -from datetime import timedelta -import numpy as np -from scipy.special import expit -import SEIRHVD_quarantine - -""" -# ------------------------------------------- # -# # -# SEIR Simulation # -# # -# ------------------------------------------- # - -""" - -class SEIRmodel(SEIR_plots.SEIR_plots,SEIR_vars.SEIR_vars,SEIRHVD_quarantine.SEIRHVD_quarantine): - def __init__(self,beta,mu,ScaleFactor=1,SeroPrevFactor=1,expinfection=1,tsim = 500,tstate='',bedmodelorder=2, k = 0,initdate = datetime(2020,5,15)): - self.beta = beta - self.mu = mu - self.ScaleFactor = ScaleFactor - self.SeroPrevFactor = SeroPrevFactor - self.expinfection = expinfection - self.tstate = tstate - self.initdate = initdate - self.tsim = tsim - self.May15 = (datetime(2020,5,15)-initdate).days - self.k = k - self.I_as_prop = 1 - self.I_mi_prop = 0 - self.I_cr_prop = 0 - self.I_se_prop = 0 - - # Import real data - #if tstate: - # self.importdata() - # self.I_act0 = self.ScaleFactor*self.Ir[0] - # self.inputdata = True - # Hcmodel = np.poly1d(np.polyfit(self.sochimi_tr, self.Hr_tot, bedmodelorder)) - # Vcmodel = np.poly1d(np.polyfit(self.sochimi_tr, self.Vr_tot, bedmodelorder)) - # Vmax = np.mean(self.Vr_tot[-7:])*1.01# 1500 Vcmodel(tsat) - # Hmax = np.mean(self.Hr_tot[-7:])*1.01# self.Hcmodel(tsat) - # try: - # vents = [Vcmodel(t) for t in range(self.tsim)] - # tsat = int(np.where(np.array(vents)>=Vmax)[0][0]) - # except: - # tsat = self.sochimi_tr[-1]+7 - # self.Htot=lambda t: Hcmodel(t)*(1-expit(t-tsat)) + expit(t-tsat)*Hmax #1997.0 - # self.Vtot=lambda t: Vcmodel(t)*(1-expit(t-tsat)) + expit(t-tsat)*Vmax - # self.H0 = self.Hr[0] # Hospitalizados totales dia 0 - # self.V = self.Vr[0] # Ventilados al dia de inicio - # self.H_cr = 0 #Hospitalizados a la espera de un ventilador día 0 - # self.B = self.Br[0] # Muertos acumulados al dia de inicio - # self.D = self.Br[1]-self.Br[0] # Muertos en el dia de inicio - # self.R = 0 - # - # self.realdata = True - if True: - self.inputdata = False - print('Set initial values') - self.realdata = False - return - - def initialvalues(self,I_act0,population,R=0): - self.B=0 - self.D = 0 - self.population = population - self.I_act0 = I_act0 - self.H0=0 - self.V=0 - self.Htot = np.poly1d(1000) - self.Vtot = np.poly1d(1000) - self.H_cr = 0 - self.R = R - self.inputdata = True - - - - # -------------- # - # Simulate # - # -------------- # - - def simulate(self,intgr=0): - if not self.inputdata: - return('Set the initial values before running the simulation!') - - print('SEIR Model') - model = SEIR.simSEIRHVD(beta = self.beta, mu = self.mu, inputarray= self.inputarray, B=self.B,D=self.D,V=self.V,I_act0=self.I_act0,R=self.R,Htot=self.Htot,Vtot=self.Vtot,H_cr=self.H_cr,H0=self.H0,expinfection=self.expinfection, SeroPrevFactor= self.SeroPrevFactor, population = self.population,intgr=intgr,I_as_prop = self.I_as_prop, I_mi_prop = self.I_mi_prop,I_se_prop = self.I_se_prop,I_cr_prop = self.I_cr_prop,k=self.k) - self.sims = model.simulate() - self.localvar() - return - - """ - def ParallelSimulation(alpha,k=0, qp = 0, qt = 0,iqt = 0,fqt = 500): - simulation = SEIRmodel(beta = beta,mu = mu,ScaleFactor=ScaleFactor,SeroPrevFactor=SeroPrevFactor,expinfection=expinfection,tsim = tsim,tstate='', k = k) - quarantines = [[tsim, 0.85, alpha, qp, iqt, fqt, qt]] - simulation.inputarray = np.array(quarantines) - simulation.addquarantine() - simulation.initialvalues(I_act0,population,R=0) - simulation.simulate() - return simulation - - """ \ No newline at end of file diff --git a/deprecated/src/SEIR/SIR.py b/deprecated/src/SEIR/SIR.py deleted file mode 100644 index b6c224d..0000000 --- a/deprecated/src/SEIR/SIR.py +++ /dev/null @@ -1,152 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -""" -SEIRHVD Model -""" - -import numpy as np -from scipy.integrate import solve_ivp -from scipy.special import expit -from joblib import Parallel, delayed -from scipy import signal -import pandas as pd -from numpy import linalg as LA -import multiprocessing -#import SEIR_plots - -from datetime import datetime -from datetime import timedelta - -""" -SEIRQ Model Implementation - -""" - -class SEIR: - def __init__(self,tsim,beta,gamma = 0.1, I0=100,I_ac0=0,I_d0=0,R0=0,population=1000000, initdate = None): - self.tsim = tsim - - self.beta = beta - - self.gamma = gamma # Recovery rate - - self.I = I0 - self.I_ac = I_ac0 - self.I_d = I_d0 - - self.R = R0 - - self.population = population - - self.t=0 - - # Valores globales - self.N = self.population - self.S = self.N- self.I - self.R - - self.initdate = None - - # --------------------------- # - # Diferential Ecuations # - # --------------------------- # - # dVariable/dt = sum(prob_i/in_time_i*in_State_i,i in in states) - sum(prob_i/out_time_i*out_State_i,i in in states) - - # Susceptibles - # dS/dt: - self.dS=lambda t,S,I: -self.beta*S*I/self.N - - # Infected - # dI_as/dt - self.dI=lambda t,S,I: -self.beta*S*I/self.N - self.gamma*I - - # Recovered - # dR/dt - self.dR=lambda t,I: self.gamma*I - - # Acummulated Infected - self.dI_ac=lambda t,S,I: self.beta*S*I/self.N - - # Daily Infected - self.dI_d = lambda t,S,I,I_d: self.beta*S*I/self.N - I_d - - - def integr_sci(self,t0,T,h,E0init=False): - #integrator function that star form t0 and finish with T with h as - #timestep. If there aren't inital values in [t0,T] function doesn't - #start. Or it's start if class object is initialze. - - if(not isinstance(self.S, np.ndarray)): - - S0=self.S - I0=self.I - R0=self.R - - I_ac0=self.I_ac - I_d0=self.I_d - - self.t=np.arange(t0,T+h,h) - - #elif((min(self.t)<=t0) & (t0<=max(self.t))): - # #Condition over exiting time in already initialized object - - # #Search fot initial time - # idx=np.searchsorted(self.t,t0) - - # #set initial condition - - # S0=self.S[idx] - # E0=self.E - # - # I0=self.I[idx] - # R0=self.R[idx] - # I_ac0=self.I_ac[idx] - # I_d0=self.I_d[idx] - - # e0 = self.e[idx] - # e_I0 = self.e_I[idx] - - # self.t=np.arange(t0,T+h,h) - - else: - return() - - - - def model_SEIR_graph(t,y): - ydot=np.zeros(len(y)) - ydot[0]=self.dS(t,y[0],y[1]) - ydot[1]=self.dI(t,y[0],y[1]) - ydot[2]=self.dR(t,y[1]) - ydot[3]=self.dI_ac(t,y[0],y[1]) - ydot[4]=self.dI_d(t,y[0],y[1],y[4]) - - return(ydot) - initcond = np.array([S0,I0,R0,I_ac0,I_d0]) - - sol = solve_ivp(model_SEIR_graph,(t0,T), initcond,method='LSODA') - - self.t=sol.t - - - self.S=sol.y[0,:] - self.I=sol.y[1,:] - self.R=sol.y[2,:] - self.I_ac=sol.y[3,:] - self.I_d=sol.y[4,:] - - #Cálculo de la fecha del Peak - self.peakindex = np.where(self.I==max(self.I))[0][0] - self.peak = max(self.I) - self.peak_t = self.t[self.peakindex] - - # Prevalence: - self.prevalence_total = self.I_ac/self.population - return(sol) - - - - - - - - diff --git a/deprecated/src/SEIR/class_SEIR.py b/deprecated/src/SEIR/class_SEIR.py deleted file mode 100644 index 41f16d2..0000000 --- a/deprecated/src/SEIR/class_SEIR.py +++ /dev/null @@ -1,385 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -""" -SEIRHVD Model -""" - -import numpy as np -from scipy.integrate import solve_ivp -from scipy.special import expit -from joblib import Parallel, delayed -from scipy import signal -import pandas as pd -from numpy import linalg as LA -import multiprocessing -#import SEIR_plots - -from datetime import datetime -from datetime import timedelta - -""" -To do: - - Create reports function inside simSAEIRHVD class - - -SEIRHVD Implementation -Instructions: - Init a simSEIRHVD objecting giving the simulation condictions: - - tsim: Simulation time - - max_mov: - - rem_mov: - - qp: - - iqt: - - fqt: - - movfunct: - -""" - -class simSEIRHVD: - definputarray=np.array([ - [500,0.8,0.6,0,0,500,0], - [500,0.6,0.5,0,0,500,0], - [500,0.4,0.4,0,0,500,0]]) - - - def __init__(self,beta = 0.15, mu =1,inputarray = definputarray,I=0,R=0,expinfection=1,SeroPrevFactor=1,population=100000, - intgr = 0,I_ac =0, k =0): - self.mu = mu - self.beta = beta - self.sims = [] - self.inputarray=inputarray - self.simulated = False - self.I = I - self.R = R - - self.expinfection = expinfection - self.SeroPrevFactor=SeroPrevFactor - self.population = population - self.intgr = intgr - - # Accumulated Infected - self.I_ac = I_ac - - # dayly Infected - self.I_d = 0 - - # Saturated Kinetics - self.k = k - - self.numescenarios = 1 - self.initdate = None - - - - def sim_run(self,tsim,max_mov,rem_mov,qp,iqt=0,fqt = 300,movfunct = 0): - case = SEIRHUDV(tsim,max_mov,rem_mov,qp,iqt,fqt,movfunct,k=self.k) - case.beta = self.beta - case.mu = self.mu - case.I = self.I - case.R = self.R - - case.expinfection = self.expinfection - case.SeroPrevFactor = self.SeroPrevFactor - case.population = self.population - - # Accumulated Infected - case.I_ac = self.I_ac - - case.I_d = self.I_d - - #case.k = self.k - - case.setrelationalvalues() - if self.intgr == 0: - print('Fast Solver') - case.integr_sci(0,tsim,0.1,False) - else: - print('Robust Solver') - case.integr(0,tsim,0.1,False) - out=[case,max_mov,rem_mov,qp,tsim] - return(out) - - def simulate(self,intgr=0): - num_cores = multiprocessing.cpu_count() - #params=Parallel(n_jobs=num_cores, verbose=50)(delayed(ref_test.refinepso_all)(Ir,tr,swarmsize=200,maxiter=50,omega=0.5, phip=0.5, phig=0.5,eta_r=[0,1],Q_r=[0,1],obj_func='IN')for i in range(int(rep))) - self.sims=Parallel(n_jobs=num_cores, verbose=50)(delayed(self.sim_run)(self.inputarray[i,0],self.inputarray[i,1],self.inputarray[i,2],self.inputarray[i,3],self.inputarray[i,4],self.inputarray[i,5],self.inputarray[i,6]) for i in range(self.inputarray.shape[0])) - self.simulated = True - return(self.sims) - - - - - -class SEIR: - def __init__(self,tsim,alpha,beta,mu,sigma = 0.2, gamma = 0.1, k=0,I=100,I_ac=0,I_d=0,R=0,population=1000000,expinfection = 1, SeroPrevFactor=1): - (self,tsim,alpha,beta,mu,sigma = 0.2, gamma = 0.1, k=0,I0=100,I_ac0=0,I_d0=0,R0=0,population=1000000,expinfection = 1, SeroPrevFactor=1,chi = 0,k_I=0,k_R=0,RealIC=None, initdate = None,SimIC=None): - - self.tsim = tsim - self.alpha = alpha - self.beta = beta - self.mu=1.4 - self.k = k - - self.sigma = sigma # Incubation rate - self.gamma = gamma # Recovery rate - self.eta = 0.0 # Immunity loss rate - - self.I = I - self.I_ac = I_ac - self.I_d = I_d - - self.R = R - - self.SeroPrevFactor = SeroPrevFactor - self.population = population - self.expinfection = expinfection - - self.t=0 - - # Expuestos - self.E = self.mu*self.I - - # Valores globales - self.N = self.SeroPrevFactor*self.population - self.S = self.N- self.E-self.I - self.R - - self.numescenarios = 1 - self.initdate = None - - - # --------------------------- # - # Diferential Ecuations # - # --------------------------- # - # dVariable/dt = sum(prob_i/in_time_i*in_State_i,i in in states) - sum(prob_i/out_time_i*out_State_i,i in in states) - - # Susceptibles - # dS/dt: - self.dS=lambda t,S,E,I,R: -self.alpha(t)*self.beta*S*(self.expinfection*(E)+I)/(self.N+self.k*I)+self.eta*R - # Exposed - # dE/dt - self.dE=lambda t,S,E,I: self.alpha(t)*self.beta*S*(self.expinfection*(E)+I)/(self.N+self.k*I)\ - -self.sigma*E - - # Infected - # dI_as/dt - self.dI=lambda t,E,I: self.sigma*E-self.gamma*I - - # Recovered - # dR/dt - self.dR=lambda t,I,R: self.gamma*I+-self.eta*R - - # Acummulated Infected - self.dI_ac=lambda t,E: self.sigma*E - - # Daily Infected - self.dI_d = lambda t,E,I_d: self.sigma*E - I_d - - - - # ------------------- # - # Valores Iniciales # - # ------------------- # - - def setinitvalues(self): - self.I = 0 - self.muS=self.mu - self.R=0.0 - self.mu=1.4 - self.t=400.0 - - self.SeroPrevFactor = 1 - self.population = 8125072 - - self.expinfection = 1 - # Accumulated Infected - self.I_ac = 0 - - # Daily Infected - self.I_d = 0 - - # Saturated Kinetics - self.k = 0 - - self.setrelationalvalues() - - def setrelationalvalues(self): - - # Expuestos - self.E=self.mu*self.I - - # Valores globales - self.SeroPrevPop = self.SeroPrevFactor*self.population - self.S=self.SeroPrevPop-self.E-self.I - self.R - self.N=(self.S+self.E+self.I+self.R) - - #constructor of SEIR class elements, it's initialized when a parameter - #miminization is performed to adjust the best setting of the actual infected - - - def integr(self,t0,T,h,E0init=False): - #integrator function that star form t0 and finish with T with h as - #timestep. If there aren't inital values in [t0,T] function doesn't - #start. Or it's start if class object is initialze. - print('Import scikits-odes') - from scikits.odes.odeint import odeint - - - if(not isinstance(self.S, np.ndarray)): - #pass if object is initalized - if(E0init): - E0=self.mu*(self.I) - else: - E0=self.E - - S0=self.S - I0=self.I - R0=self.R - - I_ac0=self.I_ac - I_d0=self.I_d - - self.t=np.arange(t0,T+h,h) - - elif((min(self.t)<=t0) & (t0<=max(self.t))): - #Condition over exiting time in already initialized object - - #Search fot initial time - idx=np.searchsorted(self.t,t0) - - #set initial condition - - S0=self.S[idx] - E0=self.E - - I0=self.I[idx] - R0=self.R[idx] - I_ac0=self.I_ac[idx] - I_d0=self.I_d[idx] - - #set time grid - self.t=np.arange(self.t[idx],T+h,h) - - else: - return() - - - def model_SEIR_graph(t,y,ydot): - - ydot[0]=self.dS(t,y[0],y[1],y[2],y[3]) - ydot[1]=self.dE(t,y[0],y[1],y[2]) - ydot[2]=self.dI(t,y[1],y[2]) - ydot[3]=self.dR(t,y[2],y[3]) - - ydot[4]=self.dI_ac(t,y[1]) - ydot[5]=self.dI_d(t,y[1],y[5]) - - - initcond = np.array([S0,E0,I0,R0,I_ac0,I_d0]) - - - sol = odeint(model_SEIR_graph, self.t, initcond,method='admo') - - self.t=sol.values.t - - self.S=sol.values.y[:,0] - self.E=sol.values.y[:,1] - self.I=sol.values.y[:,2] - self.R=sol.values.y[:,3] - self.I_ac=sol.values.y[:,4] - self.I_d=sol.values.y[:,5] - - #Cálculo de la fecha del Peak - self.peakindex = np.where(self.I==max(self.I))[0][0] - self.peak = max(self.I) - self.peak_t = self.t[self.peakindex] - if self.initdate: - self.peak_date = self.initdate+timedelta(days=round(self.peak_t)) - - return(sol) - - def integr_sci(self,t0,T,h,E0init=False): - #integrator function that star form t0 and finish with T with h as - #timestep. If there aren't inital values in [t0,T] function doesn't - #start. Or it's start if class object is initialze. - - if(not isinstance(self.S, np.ndarray)): - #pass if object is initalized - if(E0init): - E0=self.mu*(self.I) - else: - E0=self.E - - S0=self.S - I0=self.I - R0=self.R - - I_ac0=self.I_ac - I_d0=self.I_d - - self.t=np.arange(t0,T+h,h) - - elif((min(self.t)<=t0) & (t0<=max(self.t))): - #Condition over exiting time in already initialized object - - #Search fot initial time - idx=np.searchsorted(self.t,t0) - - #set initial condition - - S0=self.S[idx] - E0=self.E - - I0=self.I[idx] - R0=self.R[idx] - I_ac0=self.I_ac[idx] - I_d0=self.I_d[idx] - - self.t=np.arange(t0,T+h,h) - - else: - return() - - - - def model_SEIR_graph(t,y): - ydot=np.zeros(len(y)) - ydot[0]=self.dS(t,y[0],y[1],y[2],y[3]) - ydot[1]=self.dE(t,y[0],y[1],y[2]) - ydot[2]=self.dI(t,y[1],y[2]) - ydot[3]=self.dR(t,y[2],y[3]) - - ydot[4]=self.dI_ac(t,y[1]) - ydot[5]=self.dI_d(t,y[1],y[5]) - - - return(ydot) - initcond = np.array([S0,E0,I0,R0,I_ac0,I_d0]) - - sol = solve_ivp(model_SEIR_graph,(t0,T), initcond,method='LSODA') - - self.t=sol.t - - - self.S=sol.y[0,:] - self.E=sol.y[1,:] - self.I=sol.y[2,:] - self.R=sol.y[3,:] - self.I_ac=sol.y[4,:] - self.I_d=sol.y[5,:] - - #Cálculo de la fecha del Peak - self.peakindex = np.where(self.I==max(self.I))[0][0] - self.peak = max(self.I) - self.peak_t = self.t[self.peakindex] - if self.initdate: - self.peak_date = self.initdate+timedelta(days=round(self.peak_t)) - - return(sol) - - - - - - - - diff --git a/deprecated/src/SEIR/class_SEIR2.py b/deprecated/src/SEIR/class_SEIR2.py deleted file mode 100644 index d242295..0000000 --- a/deprecated/src/SEIR/class_SEIR2.py +++ /dev/null @@ -1,353 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -""" -SEIRHVD Model -""" - -import numpy as np -from scipy.integrate import solve_ivp -from scipy.special import expit -from joblib import Parallel, delayed -from scipy import signal -import pandas as pd -from numpy import linalg as LA -import multiprocessing -#import SEIR_plots - -from datetime import datetime -from datetime import timedelta - -""" -SEIRQ Model Implementation - -""" - -class SEIR: - def __init__(self,tsim,alpha,beta,mu,sigma = 0.2, gamma = 0.1, k=0,I0=100,I_ac0=0,I_d0=0,R0=0,population=1000000,expinfection = 0, SeroPrevFactor=1,chi = 0,psi = 0,k_I=0,k_R=0,RealIC=None, initdate = None,SimIC=None,I_det_prop=1,testaccuracy=1): - self.tsim = tsim - self.alpha = alpha - self.beta = beta - self.mu=mu - self.k_I = k_I - self.k_R = k_R - - self.sigma = sigma # Incubation rate - self.gamma = gamma # Recovery rate - self.eta = 0.0 # Immunity loss rate - - self.I = I0 - self.I_ac = I_ac0 - self.I_d = I_d0 - - self.R = R0 - - self.SeroPrevFactor = SeroPrevFactor - self.population = population - self.expinfection = expinfection - - self.t=0 - - # Expuestos - self.E = self.mu*self.I - - # Valores globales - self.N = self.SeroPrevFactor*self.population - self.S = self.N- self.E-self.I - self.R - - self.numescenarios = 1 - self.initdate = None - - self.testaccuracy = testaccuracy - - if type(chi) == int: - self.chi = np.poly1d(0) - else: - self.chi = chi - - if type(psi) == int: - self.psi = np.poly1d(0) - else: - self.psi = psi - - self.I_det_prop = I_det_prop # Detected infected propotion - # --------------------------- # - # Diferential Ecuations # - # --------------------------- # - # dVariable/dt = sum(prob_i/in_time_i*in_State_i,i in in states) - sum(prob_i/out_time_i*out_State_i,i in in states) - - # Susceptibles - # dS/dt: - self.dS=lambda t,S,E,I,R: self.chi(t) -self.alpha(t)*self.beta*S*(self.expinfection*(E)+I)/(self.N+self.k_I*I+self.k_R*R)+self.eta*R - # Exposed - # dE/dt - self.dE=lambda t,S,E,I,R: self.alpha(t)*self.beta*S*(self.expinfection*(E)+I)/(self.N+self.k_I*I+self.k_R*R)\ - -self.sigma*E - - # Infected - # dI_as/dt - self.dI=lambda t,E,I: self.sigma*E - self.gamma*I - self.testaccuracy*self.psi(t)*I/self.population - - # Recovered - # dR/dt - self.dR=lambda t,I,R: self.gamma*I+-self.eta*R - - # Acummulated Infected - self.dI_ac=lambda t,E: self.sigma*E - - # Daily Infected - self.dI_d = lambda t,E,I_d: self.sigma*E - I_d - - # Performed exams ac - self.de = lambda t: self.psi(t) - - # Detected and removed Infected - self.de_I = lambda t,I: self.testaccuracy*self.psi(t)*I/self.population - - - # ------------------- # - # Valores Iniciales # - # ------------------- # - - def setinitvalues(self): - self.I = 0 - self.muS=self.mu - self.R=0.0 - self.mu=1.4 - self.t=400.0 - - self.SeroPrevFactor = 1 - self.population = 8125072 - - self.expinfection = 1 - # Accumulated Infected - self.I_ac = 0 - - # Daily Infected - self.I_d = 0 - - # Saturated Kinetics - self.k = 0 - - self.setrelationalvalues() - - def setrelationalvalues(self): - - # Expuestos - self.E=self.mu*self.I - - # Valores globales - self.SeroPrevPop = self.SeroPrevFactor*self.population - self.S=self.SeroPrevPop-self.E-self.I - self.R - self.N=(self.S+self.E+self.I+self.R) - - #constructor of SEIR class elements, it's initialized when a parameter - #miminization is performed to adjust the best setting of the actual infected - - - def integr(self,t0=0,T=None,h=0.01,E0init=False): - #integrator function that star form t0 and finish with T with h as - #timestep. If there aren't inital values in [t0,T] function doesn't - #start. Or it's start if class object is initialze. - print('Import scikits-odes') - from scikits.odes.odeint import odeint - - if T is None: - T = self.tsim - - if(not isinstance(self.S, np.ndarray)): - #pass if object is initalized - if(E0init): - E0=self.mu*(self.I) - else: - E0=self.E - - S0=self.S - I0=self.I - R0=self.R - - I_ac0=self.I_ac - I_d0=self.I_d - - e0 = 0 - e_I0 = 0 - - self.t=np.arange(t0,T+h,h) - - elif((min(self.t)<=t0) & (t0<=max(self.t))): - #Condition over exiting time in already initialized object - - #Search fot initial time - idx=np.searchsorted(self.t,t0) - - #set initial condition - - S0=self.S[idx] - E0=self.E - - I0=self.I[idx] - R0=self.R[idx] - I_ac0=self.I_ac[idx] - I_d0=self.I_d[idx] - - e0 = self.e[idx] - e_I0 = self.e_I[idx] - - #set time grid - self.t=np.arange(self.t[idx],T+h,h) - - else: - return() - - - def model_SEIR_graph(t,y,ydot): - - ydot[0]=self.dS(t,y[0],y[1],y[2],y[3]) - ydot[1]=self.dE(t,y[0],y[1],y[2],y[3]) - ydot[2]=self.dI(t,y[1],y[2]) - ydot[3]=self.dR(t,y[2],y[3]) - - ydot[4]=self.dI_ac(t,y[1]) - ydot[5]=self.dI_d(t,y[1],y[5]) - - ydot[6]=self.de(t) - ydot[7]=self.de_I(t,y[2]) - - - initcond = np.array([S0,E0,I0,R0,I_ac0,I_d0,e0,e_I0]) - - - sol = odeint(model_SEIR_graph, self.t, initcond,method='admo') - - self.t=sol.values.t - - self.S=sol.values.y[:,0] - self.E=sol.values.y[:,1] - self.I=sol.values.y[:,2] - self.R=sol.values.y[:,3] - self.I_ac=sol.values.y[:,4] - self.I_d=sol.values.y[:,5] - self.e=sol.values.y[:,6] - self.e_I=sol.values.y[:,7] - - #Cálculo de la fecha del Peak - self.peakindex = np.where(self.I==max(self.I))[0][0] - self.peak = max(self.I) - self.peak_t = self.t[self.peakindex] - if self.initdate: - self.peak_date = self.initdate+timedelta(days=round(self.peak_t)) - - # Prevalence: - self.prevalence_total = self.I_ac/self.population - self.prevalence_susc = [self.I_ac[i]/(self.S[i]+self.E[i]+self.I[i]+self.R[i]) for i in range(len(self.I_ac))] - self.prevalence_det = [self.I_det_prop*self.I_ac[i]/(self.S[i]+self.E[i]+self.I[i]+self.R[i]) for i in range(len(self.I_ac))] - - return(sol) - - def integr_sci(self,t0=0,T=None,h=0.01,E0init=False): - #integrator function that star form t0 and finish with T with h as - #timestep. If there aren't inital values in [t0,T] function doesn't - #start. Or it's start if class object is initialze. - if T is None: - T = self.tsim - - if(not isinstance(self.S, np.ndarray)): - #pass if object is initalized - if(E0init): - E0=self.mu*(self.I) - else: - E0=self.E - - S0=self.S - I0=self.I - R0=self.R - - I_ac0=self.I_ac - I_d0=self.I_d - - e0 = 0 - e_I0 = 0 - - self.t=np.arange(t0,T+h,h) - - elif((min(self.t)<=t0) & (t0<=max(self.t))): - #Condition over exiting time in already initialized object - - #Search fot initial time - idx=np.searchsorted(self.t,t0) - - #set initial condition - - S0=self.S[idx] - E0=self.E - - I0=self.I[idx] - R0=self.R[idx] - I_ac0=self.I_ac[idx] - I_d0=self.I_d[idx] - - e0 = self.e[idx] - e_I0 = self.e_I[idx] - - self.t=np.arange(t0,T+h,h) - - else: - return() - - - - def model_SEIR_graph(t,y): - ydot=np.zeros(len(y)) - ydot[0]=self.dS(t,y[0],y[1],y[2],y[3]) - ydot[1]=self.dE(t,y[0],y[1],y[2],y[3]) - ydot[2]=self.dI(t,y[1],y[2]) - ydot[3]=self.dR(t,y[2],y[3]) - - ydot[4]=self.dI_ac(t,y[1]) - ydot[5]=self.dI_d(t,y[1],y[5]) - - ydot[6]=self.de(t) - ydot[7]=self.de_I(t,y[2]) - - return(ydot) - initcond = np.array([S0,E0,I0,R0,I_ac0,I_d0,e0,e_I0]) - - sol = solve_ivp(model_SEIR_graph,(t0,T), initcond,method='LSODA') - - self.t=sol.t - - - self.S=sol.y[0,:] - self.E=sol.y[1,:] - self.I=sol.y[2,:] - self.R=sol.y[3,:] - self.I_ac=sol.y[4,:] - self.I_d=sol.y[5,:] - - self.e=sol.y[6,:] - self.e_I=sol.y[7,:] - - #Cálculo de la fecha del Peak - self.peakindex = np.where(self.I==max(self.I))[0][0] - self.peak = max(self.I) - self.peak_t = self.t[self.peakindex] - if self.initdate: - self.peak_date = self.initdate+timedelta(days=round(self.peak_t)) - - # Detected cases - self.I_det = self.I_det_prop*self.I - self.I_ac_det = self.I_det_prop*self.I_ac - self.I__d_det = self.I_det_prop*self.I_d - - # Prevalence: - self.prevalence_total = self.I_ac/self.population - self.prevalence_susc = [self.I_ac[i]/(self.S[i]+self.E[i]+self.I[i]+self.R[i]) for i in range(len(self.I_ac))] - self.prevalence_det = [self.I_det_prop*self.I_ac[i]/(self.S[i]+self.E[i]+self.I[i]+self.R[i]) for i in range(len(self.I_ac))] - return(sol) - - - - - - - - diff --git a/deprecated/src/SEIR/class_SEIRQ.py b/deprecated/src/SEIR/class_SEIRQ.py deleted file mode 100644 index 7c152bc..0000000 --- a/deprecated/src/SEIR/class_SEIRQ.py +++ /dev/null @@ -1,371 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -""" -SEIRHVD Model -""" - -import numpy as np -from scipy.integrate import solve_ivp -from scipy.special import expit -from joblib import Parallel, delayed -from scipy import signal -import pandas as pd -from numpy import linalg as LA -import multiprocessing -#import SEIR_plots - -from datetime import datetime -from datetime import timedelta - -""" -SEIRQ Model Implementation - -""" - -class SEIR: - def __init__(self,tsim,beta,alpha=1,mu=1.4,sigma = 0.2, gamma = 0.1, k=0,I0=100,I_ac0=0,I_d0=0,R0=0,population=1000000,expinfection = 0, SeroPrevFactor=1,chi = 0,psi = 0,k_I=0,k_R=0,RealIC=None, initdate = None,SimIC=None,I_det_prop=1,testaccuracy=1,lambda_Q=1,T_T = 1,T_Q = 14,lambda_Tr=0): - self.tsim = tsim - self.beta = beta - self.mu=mu - self.k_I = k_I - self.k_R = k_R - - self.sigma = sigma # Incubation rate - self.gamma = gamma # Recovery rate - self.eta = 0.0 # Immunity loss rate - - self.I = I0 - self.I_ac = I_ac0 - self.I_d = I_d0 - - self.R = R0 - - self.SeroPrevFactor = SeroPrevFactor - self.population = population - self.expinfection = expinfection - - self.t=0 - - # Expuestos - self.E = self.mu*self.I - - # Valores globales - self.N = self.SeroPrevFactor*self.population - self.S = self.N- self.E-self.I - self.R - - self.numescenarios = 1 - self.initdate = None - - self.testaccuracy = testaccuracy - - if type(alpha) == int: - self.alpha = np.poly1d(alpha) - else: - self.alpha = alpha - - - if type(chi) == int: - self.chi = np.poly1d(0) - else: - self.chi = chi - - - # Exams and individual quarantines - if type(psi) == int: - self.psi = np.poly1d(0) - else: - self.psi = psi - - self.I_det_prop = I_det_prop # Detected infected propotion - self.lambda_Q = lambda_Q # Efectively Quarantined proportion (1: every detected is quarantined, 0: None of them) - self.T_T = T_T # Time between test and Results -> Quarantine - self.T_Q = T_Q # Quarantine Time - self.lambda_Tr = lambda_Tr # Tracing effect. This shows the additional inffected located due to tracing. - - # --------------------------- # - # Diferential Ecuations # - # --------------------------- # - # dVariable/dt = sum(prob_i/in_time_i*in_State_i,i in in states) - sum(prob_i/out_time_i*out_State_i,i in in states) - - self.NoT_T = 0 - if self.T_T<0.5: - self.NoT_T = 1 - - #self.lambdatot = self.lambda_Q*testaccuracy - - # Susceptibles - # dS/dt: - self.dS=lambda t,S,E,I,R,I_T: self.chi(t) -self.alpha(t)*self.beta*S*(self.expinfection*(E)+I+I_T)/(self.N+self.k_I*(I+I_T)+self.k_R*R)+self.eta*R - # Exposed - # dE/dt - self.dE=lambda t,S,E,I,R,I_T: self.alpha(t)*self.beta*S*(self.expinfection*(E)+I+I_T)/(self.N+self.k_I*(I+I_T)+self.k_R*R)\ - -self.sigma*E - - # Infected - # dI_as/dt - self.dI=lambda t,E,I: self.sigma*E - self.gamma*I - self.testaccuracy*self.lambda_Q*self.psi(t)*I/self.population*(1+self.lambda_Tr) - - # Recovered - # dR/dt - self.dR=lambda t,I,R,Q: self.gamma*I+-self.eta*R + Q/self.T_Q - - - # Acummulated Infected - self.dI_ac=lambda t,E: self.sigma*E - - # Daily Infected - self.dI_d = lambda t,E,I_d: self.sigma*E - I_d - - # Performed exams ac - self.de = lambda t: self.psi(t) - - # Detected and removed Infected - self.de_I = lambda t,I: self.testaccuracy*self.psi(t)*I/self.population - - - # Infected that have been tested but not quarantined yet - if self.NoT_T: - self.dI_T=lambda t,I,I_T: 0 - else: - self.dI_T=lambda t,I,I_T: self.testaccuracy*self.lambda_Q*self.psi(t)*I/self.population*(1+self.lambda_Tr) - I_T/self.T_T - - # Quarantined - if self.NoT_T: - self.dQ= lambda t,I_T,Q,I: - Q/self.T_Q + self.testaccuracy*self.lambda_Q*self.psi(t)*I/self.population*(1+self.lambda_Tr) - else: - self.dQ= lambda t,I_T,Q,I: - Q/self.T_Q + I_T/self.T_T - - - def integr(self,t0=0,T=500,h=0.01,E0init=False): - #integrator function that star form t0 and finish with T with h as - #timestep. If there aren't inital values in [t0,T] function doesn't - #start. Or it's start if class object is initialze. - print('Import scikits-odes') - from scikits.odes.odeint import odeint - - - if(not isinstance(self.S, np.ndarray)): - #pass if object is initalized - if(E0init): - E0=self.mu*(self.I) - else: - E0=self.E - - S0=self.S - I0=self.I - R0=self.R - - I_ac0=self.I_ac - I_d0=self.I_d - - e0 = 0 - e_I0 = 0 - - I_T0 = 0 - Q0 = 0 - - self.t=np.arange(t0,T+h,h) - - elif((min(self.t)<=t0) & (t0<=max(self.t))): - #Condition over exiting time in already initialized object - - #Search fot initial time - idx=np.searchsorted(self.t,t0) - - #set initial condition - - S0=self.S[idx] - E0=self.E - - I0=self.I[idx] - R0=self.R[idx] - I_ac0=self.I_ac[idx] - I_d0=self.I_d[idx] - - e0 = self.e[idx] - e_I0 = self.e_I[idx] - - I_T0 = self.I_T[idx] - Q0 = self.Q[idx] - - #set time grid - self.t=np.arange(self.t[idx],T+h,h) - - else: - return() - - - def model_SEIR_graph(t,y,ydot): - - ydot[0]=self.dS(t,y[0],y[1],y[2],y[3],y[8]) - ydot[1]=self.dE(t,y[0],y[1],y[2],y[3],y[8]) - ydot[2]=self.dI(t,y[1],y[2]) - ydot[3]=self.dR(t,y[2],y[3],y[9]) - - ydot[4]=self.dI_ac(t,y[1]) - ydot[5]=self.dI_d(t,y[1],y[5]) - - ydot[6]=self.de(t) - ydot[7]=self.de_I(t,y[2]) - - ydot[8]=self.dI_T(t,y[2],y[8]) - ydot[9]=self.dQ(t,y[8],y[9],y[2]) - - - - initcond = np.array([S0,E0,I0,R0,I_ac0,I_d0,e0,e_I0,I_T0,Q0]) - - - sol = odeint(model_SEIR_graph, self.t, initcond,method='admo') - - self.t=sol.values.t - - self.S=sol.values.y[:,0] - self.E=sol.values.y[:,1] - self.I=sol.values.y[:,2] - self.R=sol.values.y[:,3] - self.I_ac=sol.values.y[:,4] - self.I_d=sol.values.y[:,5] - self.e=sol.values.y[:,6] - self.e_I=sol.values.y[:,7] - - self.I_T=sol.values.y[:,8] - self.Q=sol.values.y[:,9] - - #Cálculo de la fecha del Peak - self.peakindex = np.where(self.I==max(self.I))[0][0] - self.peak = max(self.I) - self.peak_t = self.t[self.peakindex] - if self.initdate: - self.peak_date = self.initdate+timedelta(days=round(self.peak_t)) - - # Detected cases - self.I_det = self.I_det_prop*self.I - self.I_ac_det = self.I_det_prop*self.I_ac - self.I_d_det = self.I_det_prop*self.I_d - - - # Prevalence: - self.prevalence_total = self.I_ac/self.population - self.prevalence_susc = [self.I_ac[i]/(self.S[i]+self.E[i]+self.I[i]+self.R[i]) for i in range(len(self.I_ac))] - self.prevalence_det = [self.I_det*self.I_ac[i]/(self.S[i]+self.E[i]+self.I[i]+self.R[i]) for i in range(len(self.I_ac))] - - return(sol) - - def integr_sci(self,t0=0,T=500,h=0.01,E0init=False): - #integrator function that star form t0 and finish with T with h as - #timestep. If there aren't inital values in [t0,T] function doesn't - #start. Or it's start if class object is initialze. - - if(not isinstance(self.S, np.ndarray)): - #pass if object is initalized - if(E0init): - E0=self.mu*(self.I) - else: - E0=self.E - - S0=self.S - I0=self.I - R0=self.R - - I_ac0=self.I_ac - I_d0=self.I_d - - e0 = 0 - e_I0 = 0 - I_T0 = 0 - Q0 = 0 - - self.t=np.arange(t0,T+h,h) - - elif((min(self.t)<=t0) & (t0<=max(self.t))): - #Condition over exiting time in already initialized object - - #Search fot initial time - idx=np.searchsorted(self.t,t0) - - #set initial condition - - S0=self.S[idx] - E0=self.E - - I0=self.I[idx] - R0=self.R[idx] - I_ac0=self.I_ac[idx] - I_d0=self.I_d[idx] - - e0 = self.e[idx] - e_I0 = self.e_I[idx] - - I_T0 = self.I_T[idx] - Q0 = self.Q[idx] - - self.t=np.arange(t0,T+h,h) - - else: - return() - - - - def model_SEIR_graph(t,y): - ydot=np.zeros(len(y)) - ydot[0]=self.dS(t,y[0],y[1],y[2],y[3],y[8]) - ydot[1]=self.dE(t,y[0],y[1],y[2],y[3],y[8]) - ydot[2]=self.dI(t,y[1],y[2]) - ydot[3]=self.dR(t,y[2],y[3],y[9]) - - ydot[4]=self.dI_ac(t,y[1]) - ydot[5]=self.dI_d(t,y[1],y[5]) - - ydot[6]=self.de(t) - ydot[7]=self.de_I(t,y[2]) - - ydot[8]=self.dI_T(t,y[2],y[8]) - ydot[9]=self.dQ(t,y[8],y[9],y[2]) - - return(ydot) - initcond = np.array([S0,E0,I0,R0,I_ac0,I_d0,e0,e_I0,I_T0,Q0]) - - sol = solve_ivp(model_SEIR_graph,(t0,T), initcond,method='LSODA',t_eval=list(range(t0,T))) - - self.t=sol.t - - - self.S=sol.y[0,:] - self.E=sol.y[1,:] - self.I=sol.y[2,:] - self.R=sol.y[3,:] - self.I_ac=sol.y[4,:] - self.I_d=sol.y[5,:] - - self.e=sol.y[6,:] - self.e_I=sol.y[7,:] - - self.I_T=sol.y[8,:] - self.Q=sol.y[9,:] - - #Cálculo de la fecha del Peak - self.peakindex = np.where(self.I==max(self.I))[0][0] - self.peak = max(self.I) - self.peak_t = self.t[self.peakindex] - if self.initdate: - self.peak_date = self.initdate+timedelta(days=round(self.peak_t)) - - # Detected cases - self.I_det = self.I_det_prop*self.I - self.I_ac_det = self.I_det_prop*self.I_ac - self.I_d_det = self.I_det_prop*self.I_d - - # Prevalence: - self.prevalence_total = self.I_ac/self.population - self.prevalence_susc = [self.I_ac[i]/(self.S[i]+self.E[i]+self.I[i]+self.R[i]) for i in range(len(self.I_ac))] - self.prevalence_det = [self.I_det_prop*self.I_ac[i]/(self.S[i]+self.E[i]+self.I[i]+self.R[i]) for i in range(len(self.I_ac))] - return(sol) - - - - - - - - diff --git a/deprecated/src/SEIR/class_SEIRTQM.py b/deprecated/src/SEIR/class_SEIRTQM.py deleted file mode 100644 index f6253e5..0000000 --- a/deprecated/src/SEIR/class_SEIRTQM.py +++ /dev/null @@ -1,429 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -""" -SEIRHVD Model -""" - -import numpy as np -from scipy.integrate import solve_ivp -from scipy.special import expit -from joblib import Parallel, delayed -from scipy import signal -import pandas as pd -from numpy import linalg as LA -import multiprocessing -#import SEIR_plots - -from datetime import datetime -from datetime import timedelta - -""" -SEIRTQM Model Implementation -SEIR + Tested + Quarantined + Immune (vaccines) - -""" - -class SEIRTQM: - def __init__(self,tsim,beta,alpha=1,mu=1.4,sigma = 0.2, gamma = 0.1, k=0,I0=100,I_ac0=0,I_d0=0,R0=0,population=1000000,expinfection = 0, SeroPrevFactor=1,chi = 0,psi = 0,k_I=0,k_R=0,RealIC=None, initdate = None,SimIC=None,I_det_prop=1,testaccuracy=1,lambda_Q=1,T_T = 1,T_Q = 14,lambda_Tr=0,vac_d=0,imm_loss=0,imm_gain=0,M0 = 0,S_v0 = 0): - self.tsim = tsim - self.beta = beta - self.mu=mu - self.k_I = k_I - self.k_R = k_R - - self.sigma = sigma # Incubation rate - self.gamma = gamma # Recovery rate - self.eta = 0.0 # Immunity loss rate - - self.I = I0 - self.I_ac = I_ac0 - self.I_d = I_d0 - - self.R = R0 - - self.SeroPrevFactor = SeroPrevFactor - self.population = population - self.expinfection = expinfection - - self.t=0 - - # Expuestos - self.E = self.mu*self.I - - # Valores globales - self.N = self.SeroPrevFactor*self.population - self.S = self.N- self.E-self.I - self.R - - self.numescenarios = 1 - self.initdate = None - - self.testaccuracy = testaccuracy - - if type(alpha) == int: - self.alpha = np.poly1d(alpha) - else: - self.alpha = alpha - - # Susceptible Dynamics - if type(chi) == int or type(chi) == float: - self.chi = np.poly1d(0) - else: - self.chi = chi - - - # Vaccines - if type(vac_d) == int or type(vac_d) == float: - vac_d = np.poly1d(vac_d) - - - def auxvac_d(t): - if self.S(t)<10: - return 0 - else: - return vac_d(t) - - def spare_vac(t): - if self.S(t)<10: - return vac_d(t) - else: - return 0 - - self.vac_d = vac_d - #self.spare_vac = spare_vac - - self.imm_loss = imm_loss - self.imm_gain = imm_gain - self.M = M0 - self.S_v = S_v0 - - - - # Exams and individual quarantines - if type(psi) == int: - self.psi = np.poly1d(0) - else: - self.psi = psi - - self.I_det_prop = I_det_prop # Detected infected propotion - self.lambda_Q = lambda_Q # Efectively Quarantined proportion (1: every detected is quarantined, 0: None of them) - self.T_T = T_T # Time between test and Results -> Quarantine - self.T_Q = T_Q # Quarantine Time - self.lambda_Tr = lambda_Tr # Tracing effect. This shows the additional inffected located due to tracing. - - # --------------------------- # - # Diferential Ecuations # - # --------------------------- # - # dVariable/dt = sum(prob_i/in_time_i*in_State_i,i in in states) - sum(prob_i/out_time_i*out_State_i,i in in states) - - self.NoT_T = 0 - if self.T_T<0.5: - self.NoT_T = 1 - - self.Noimm_gain = 0 - if self.imm_gain<0.5: - self.Noimm_gain = 1 - - #self.lambdatot = self.lambda_Q*testaccuracy - - # Susceptibles - # dS/dt: - self.dS=lambda t,S,E,I,R,I_T,M: self.chi(t) -self.alpha(t)*self.beta*S*(self.expinfection*(E)+I+I_T)/(self.N+self.k_I*(I+I_T)+self.k_R*R)+self.eta*R - self.vac_d(t) + self.imm_loss*self.M - # Exposed - # dE/dt - self.dE=lambda t,S,E,I,R,I_T: self.alpha(t)*self.beta*S*(self.expinfection*(E)+I+I_T)/(self.N+self.k_I*(I+I_T)+self.k_R*R)\ - -self.sigma*E - - # Infected - # dI_as/dt - self.dI=lambda t,E,I: self.sigma*E - self.gamma*I - self.testaccuracy*self.lambda_Q*self.psi(t)*I/self.population*(1+self.lambda_Tr) - - # Recovered - # dR/dt - self.dR=lambda t,I,R,Q: self.gamma*I+-self.eta*R + Q/self.T_Q - - - # Acummulated Infected - self.dI_ac=lambda t,E: self.sigma*E - - # Daily Infected - self.dI_d = lambda t,E,I_d: self.sigma*E - I_d - - # Performed exams ac - self.de = lambda t: self.psi(t) - - # Detected and removed Infected - self.de_I = lambda t,I: self.testaccuracy*self.psi(t)*I/self.population - - - # Infected that have been tested but not quarantined yet - if self.NoT_T: - self.dI_T=lambda t,I,I_T: 0 - else: - self.dI_T=lambda t,I,I_T: self.testaccuracy*self.lambda_Q*self.psi(t)*I/self.population*(1+self.lambda_Tr) - I_T/self.T_T - - # Quarantined - if self.NoT_T: - self.dQ= lambda t,I_T,Q,I: - Q/self.T_Q + self.testaccuracy*self.lambda_Q*self.psi(t)*I/self.population*(1+self.lambda_Tr) - else: - self.dQ= lambda t,I_T,Q,I: - Q/self.T_Q + I_T/self.T_T - - - # Immunization process - if self.Noimm_gain: - self.dM = lambda t,M,S_v: self.vac_d(t) - self.imm_loss*self.M - self.dS_v = lambda t,S_v: 0 - else: - self.dM = lambda t,M,S_v: self.imm_gain*self.S_v - self.imm_loss*self.M - self.dS_v = lambda t,S_v: self.vac_d(t) - self.imm_gain*self.S_v - - def integr(self,t0=0,T=500,h=0.01,E0init=False): - #integrator function that star form t0 and finish with T with h as - #timestep. If there aren't inital values in [t0,T] function doesn't - #start. Or it's start if class object is initialze. - print('Import scikits-odes') - from scikits.odes.odeint import odeint - - - if(not isinstance(self.S, np.ndarray)): - #pass if object is initalized - if(E0init): - E0=self.mu*(self.I) - else: - E0=self.E - - S0=self.S - I0=self.I - R0=self.R - - I_ac0=self.I_ac - I_d0=self.I_d - - e0 = 0 - e_I0 = 0 - - I_T0 = 0 - Q0 = 0 - M0 = self.M - S_v0 = self.S_v - - self.t=np.arange(t0,T+h,h) - - elif((min(self.t)<=t0) & (t0<=max(self.t))): - #Condition over exiting time in already initialized object - - #Search fot initial time - idx=np.searchsorted(self.t,t0) - - #set initial condition - - S0=self.S[idx] - E0=self.E - - I0=self.I[idx] - R0=self.R[idx] - I_ac0=self.I_ac[idx] - I_d0=self.I_d[idx] - - e0 = self.e[idx] - e_I0 = self.e_I[idx] - - I_T0 = self.I_T[idx] - Q0 = self.Q[idx] - - M0 = self.M[idx] - S_v0 = self.S_v[idx] - - #set time grid - self.t=np.arange(self.t[idx],T+h,h) - - else: - return() - - - def model_SEIR_graph(t,y,ydot): - - ydot[0]=self.dS(t,y[0],y[1],y[2],y[3],y[8],y[10]) - ydot[1]=self.dE(t,y[0],y[1],y[2],y[3],y[8]) - ydot[2]=self.dI(t,y[1],y[2]) - ydot[3]=self.dR(t,y[2],y[3],y[9]) - - ydot[4]=self.dI_ac(t,y[1]) - ydot[5]=self.dI_d(t,y[1],y[5]) - - ydot[6]=self.de(t) - ydot[7]=self.de_I(t,y[2]) - - ydot[8]=self.dI_T(t,y[2],y[8]) - ydot[9]=self.dQ(t,y[8],y[9],y[2]) - ydot[10]=self.dM(t,y[10],y[11]) - ydot[11]=self.dS_v(t,y[11]) - - - - initcond = np.array([S0,E0,I0,R0,I_ac0,I_d0,e0,e_I0,I_T0,Q0,M0,S_v0]) - - - sol = odeint(model_SEIR_graph, self.t, initcond,method='admo') - - self.t=sol.values.t - - self.S=sol.values.y[:,0] - self.E=sol.values.y[:,1] - self.I=sol.values.y[:,2] - self.R=sol.values.y[:,3] - self.I_ac=sol.values.y[:,4] - self.I_d=sol.values.y[:,5] - self.e=sol.values.y[:,6] - self.e_I=sol.values.y[:,7] - - self.I_T=sol.values.y[:,8] - self.Q=sol.values.y[:,9] - self.M=sol.values.y[:,10] - self.S_v=sol.values.y[:,11] - - #Cálculo de la fecha del Peak - self.peakindex = np.where(self.I==max(self.I))[0][0] - self.peak = max(self.I) - self.peak_t = self.t[self.peakindex] - if self.initdate: - self.peak_date = self.initdate+timedelta(days=round(self.peak_t)) - - # Detected cases - self.I_det = self.I_det_prop*self.I - self.I_ac_det = self.I_det_prop*self.I_ac - self.I_d_det = self.I_det_prop*self.I_d - - - # Prevalence: - self.prevalence_total = self.I_ac/self.population - self.prevalence_susc = [self.I_ac[i]/(self.S[i]+self.E[i]+self.I[i]+self.R[i]) for i in range(len(self.I_ac))] - self.prevalence_det = [self.I_det*self.I_ac[i]/(self.S[i]+self.E[i]+self.I[i]+self.R[i]) for i in range(len(self.I_ac))] - - return(sol) - - def integr_sci(self,t0=0,T=500,h=0.01,E0init=False): - #integrator function that star form t0 and finish with T with h as - #timestep. If there aren't inital values in [t0,T] function doesn't - #start. Or it's start if class object is initialze. - - if(not isinstance(self.S, np.ndarray)): - #pass if object is initalized - if(E0init): - E0=self.mu*(self.I) - else: - E0=self.E - - S0=self.S - I0=self.I - R0=self.R - - I_ac0=self.I_ac - I_d0=self.I_d - - e0 = 0 - e_I0 = 0 - I_T0 = 0 - Q0 = 0 - M0 = self.M - S_v0 = self.S_v - - self.t=np.arange(t0,T+h,h) - - elif((min(self.t)<=t0) & (t0<=max(self.t))): - #Condition over exiting time in already initialized object - - #Search fot initial time - idx=np.searchsorted(self.t,t0) - - #set initial condition - - S0=self.S[idx] - E0=self.E - - I0=self.I[idx] - R0=self.R[idx] - I_ac0=self.I_ac[idx] - I_d0=self.I_d[idx] - - e0 = self.e[idx] - e_I0 = self.e_I[idx] - - I_T0 = self.I_T[idx] - Q0 = self.Q[idx] - M0 = self.M[idx] - S_v0 = self.S_v[idx] - - self.t=np.arange(t0,T+h,h) - - else: - return() - - - - def model_SEIR_graph(t,y): - ydot=np.zeros(len(y)) - ydot[0]=self.dS(t,y[0],y[1],y[2],y[3],y[8],y[10]) - ydot[1]=self.dE(t,y[0],y[1],y[2],y[3],y[8]) - ydot[2]=self.dI(t,y[1],y[2]) - ydot[3]=self.dR(t,y[2],y[3],y[9]) - - ydot[4]=self.dI_ac(t,y[1]) - ydot[5]=self.dI_d(t,y[1],y[5]) - - ydot[6]=self.de(t) - ydot[7]=self.de_I(t,y[2]) - - ydot[8]=self.dI_T(t,y[2],y[8]) - ydot[9]=self.dQ(t,y[8],y[9],y[2]) - ydot[10] = self.dM(t,y[10],y[11]) - ydot[11] = self.dS_v(t,y[11]) - - return(ydot) - initcond = np.array([S0,E0,I0,R0,I_ac0,I_d0,e0,e_I0,I_T0,Q0,M0,S_v0]) - - sol = solve_ivp(model_SEIR_graph,(t0,T), initcond,method='LSODA',t_eval=list(range(t0,T))) - - self.t=sol.t - - - self.S=sol.y[0,:] - self.E=sol.y[1,:] - self.I=sol.y[2,:] - self.R=sol.y[3,:] - self.I_ac=sol.y[4,:] - self.I_d=sol.y[5,:] - - self.e=sol.y[6,:] - self.e_I=sol.y[7,:] - - self.I_T=sol.y[8,:] - self.Q=sol.y[9,:] - - self.M=sol.y[10,:] - self.S_v=sol.y[11,:] - - #Cálculo de la fecha del Peak - self.peakindex = np.where(self.I==max(self.I))[0][0] - self.peak = max(self.I) - self.peak_t = self.t[self.peakindex] - if self.initdate: - self.peak_date = self.initdate+timedelta(days=round(self.peak_t)) - - # Detected cases - self.I_det = self.I_det_prop*self.I - self.I_ac_det = self.I_det_prop*self.I_ac - self.I_d_det = self.I_det_prop*self.I_d - - # Prevalence: - self.prevalence_total = self.I_ac/self.population - self.prevalence_susc = [self.I_ac[i]/(self.S[i]+self.E[i]+self.I[i]+self.R[i]) for i in range(len(self.I_ac))] - self.prevalence_det = [self.I_det_prop*self.I_ac[i]/(self.S[i]+self.E[i]+self.I[i]+self.R[i]) for i in range(len(self.I_ac))] - return(sol) - - - - - - - - diff --git a/deprecated/src/SEIR/class_SEIR_QA.py b/deprecated/src/SEIR/class_SEIR_QA.py deleted file mode 100644 index c2d58a9..0000000 --- a/deprecated/src/SEIR/class_SEIR_QA.py +++ /dev/null @@ -1,276 +0,0 @@ - - -""" - - SEIR tests debug y QA - -""" - -import sys -from pathlib import Path -sys.path.insert(1, '../SEIR/') -sys.path.insert(1, 'SEIR/') - - -from datetime import datetime -from datetime import timedelta -import matplotlib.pyplot as plt -from joblib import Parallel, delayed -import multiprocessing - -import numpy as np -import pandas as pd -import requests - -from class_SEIR import SEIR -from Quarantine import Quarantine - - -tsim = 1000 -max_mob = 0.85 -rem_mob = 0.4 -qp = 0 -iqt = 0 -alpha = Quarantine.alphafunct(rem_mob,iqt = iqt) - -beta = 0.117 -mu = 1.5 -k = 40 -I_ac = 100 -I = 100 -population = 1000000 - -model = SEIR(tsim,alpha,beta,mu,k=0,I=I,I_ac=I_ac,population=population) - -# Integrate -model.integr_sci(0,tsim,0.1) -model.integr(0,tsim,0.1) - -""" - - QA - -""" -# -------------------------- # -# Plot function # -# -------------------------- # -def plot(title = '',xlabel='',ylabel='',legend=True): - plt.xlabel(xlabel) - plt.ylabel(ylabel) - plt.title(title) - if legend: - plt.legend(loc=0) - plt.show() - - -Delta_population = model.S+model.E+model.I+model.R - population -max(Delta_population) - - -# Plots -plt.plot(model.t,model.S,label='S') -plt.plot(model.t,model.E,label='E') -plt.plot(model.t,model.I,label='I') -plt.plot(model.t,model.R,label='R') -plot(title = 'SEIR - QA') - - - - -""" -# ------------------------------ # - - Meta Simulation - -# ------------------------------ # -""" - - -# ------------------------------ # -# Import data # -# ------------------------------ # - -tstate = '13' -initdate = datetime(2020,5,15) - - -# Infectados Acumulados y Diarios -endpoint = 'https://raw.githubusercontent.com/MinCiencia/Datos-COVID19/master/output/producto1/Covid-19.csv' - -aux = pd.read_csv(endpoint) - -if type(tstate) == list: - I_ac_r = aux.loc[aux['Codigo region'].isin(tstate)].iloc[:,5:-1] - I_ac_r = I_ac_r.append(aux.loc[aux['Codigo comuna'].isin(tstate)].iloc[:,5:-1]) - I_ac_r = I_ac_r.sum() -else: - I_ac_r = aux.loc[aux['Codigo region']==int(tstate)].iloc[:,5:-1] - I_ac_r = I_ac_r.append(aux.loc[aux['Codigo comuna']==int(tstate)].iloc[:,5:-1]) - I_ac_r = I_ac_r.sum() - -I_ac_r_dates = [datetime.strptime(I_ac_r.index[i],'%Y-%m-%d') for i in range(len(I_ac_r))] -index = np.where(np.array(I_ac_r_dates) >= initdate)[0][0] -I_ac_r = I_ac_r[index:] -I_ac_r_dates = I_ac_r_dates[index:] -I_ac_r_tr = [(I_ac_r_dates[i]-initdate).days for i in range(len(I_ac_r))] - -I_d_r = np.diff(np.interp(list(range(I_ac_r_tr[-1])),I_ac_r_tr,I_ac_r)) -I_d_r_tr = list(range(len(I_d_r))) -I_d_r_dates = [initdate + timedelta(days=i) for i in range(len(I_d_r_tr))] - - -# Infectados Activos - -cutlist = [] -cutlistpath = "Data/cutlist.csv" -cutlist = pd.read_csv(cutlistpath, header = None,dtype=str) - -actives = [] -mydict = None -if type(tstate) == list: - for i in tstate: - if len(i)==2: - for index, row in cutlist.iterrows(): - state = str(row[0])[0:2] - comuna = str(row[0]) - if i == state: - endpoint = "http://192.168.2.223:5006/getActiveNewCasesByComuna?comuna="+comuna - r = requests.get(endpoint) - mydict = r.json() - actives.append(mydict['actives']) - #data=pd.DataFrame(mydict) - #Ir = (np.array(actives)).sum(axis=0) - elif len(i)>2: - endpoint = "http://192.168.2.223:5006/getActiveNewCasesByComuna?comuna="+i - r = requests.get(endpoint) - mydict = r.json() - actives.append(mydict['actives']) - #Ir = np.array(mydict['actives']) - Ir = (np.array(actives)).sum(axis=0) -else: - if len(tstate)==2: - for index, row in cutlist.iterrows(): - state = str(row[0])[0:2] - comuna = str(row[0]) - if tstate == state: - endpoint = "http://192.168.2.223:5006/getActiveNewCasesByComuna?comuna="+comuna - r = requests.get(endpoint) - mydict = r.json() - actives.append(mydict['actives']) - #data=pd.DataFrame(mydict) - Ir = (np.array(actives)).sum(axis=0) - elif len(tstate)>2: - endpoint = "http://192.168.2.223:5006/getActiveNewCasesByComuna?comuna="+tstate - r = requests.get(endpoint) - mydict = r.json() - Ir = np.array(mydict['actives']) - -Ir_dates = [datetime.strptime(mydict['dates'][i][:10],'%Y-%m-%d') for i in range(len(mydict['dates']))] -index = np.where(np.array(Ir_dates) >= initdate)[0][0] -Ir=Ir[index:] -Ir_dates=Ir_dates[index:] -tr = [(Ir_dates[i]-initdate).days for i in range(len(Ir))] -print('Infectados Activos') - -# Population: - -endpoint = 'https://raw.githubusercontent.com/MinCiencia/Datos-COVID19/master/output/producto1/Covid-19.csv' -aux = pd.read_csv(endpoint) - -if type(tstate) == list: - population = 0 - for i in tstate: - if len(i)==2: - population += int(aux.loc[aux['Codigo region']==int(i)].iloc[:,4].sum()) - if len(i)>2: - population += int(aux.loc[aux['Codigo comuna']==int(i)].iloc[:,4].sum()) -else: - if len(tstate)==2: - population = aux.loc[aux['Codigo region']==int(tstate)].iloc[:,4].sum() - if len(tstate)>2: - population = int(aux.loc[aux['Codigo comuna'] == int(tstate)].iloc[:,4]) - - - -# ------------------------------ # -# Simulation # -# ------------------------------ # - -from SEIR_parallel import seirMetaAnalysis - - -s1 = Quarantine.alphafunct(0.5) -s2 = Quarantine.alphafunct(0.6) -s3 = Quarantine.alphafunct(0.7) -quarantines = [s1,s2,s3] # Cambar a quarantines - - -k = [0,5,10,15,20] - -meta = seirMetaAnalysis() - -# Simulate for k -sims = meta.simulate_k2(tsim,quarantines,beta,mu,k=k, I=Ir[0],I_ac=I_ac_r[0],I_d=I_d_r[0],population=population ) - -# ------------------------------ # -# Analysis # -# ------------------------------ # -realdata = True -xlim = 100 - -# Actives -ylim = max([max(sims[i][j].I[:xlim]) for j in range(np.shape(sims)[1]) for i in range(np.shape(sims)[0]) ]) -fig, axs = plt.subplots(len(k), len(quarantines)) - -for i in range(len(k)): - for j in range(len(quarantines)): - axs[i, j].plot(sims[i][j].t,sims[i][j].I,label="Infectados") - axs[i, j].set_title("K: "+str(k[i])+" | Alpha: "+str([0.5,0.6,0.7][j])) - if realdata == True: - axs[i, j].scatter(tr,Ir,label='Infectados Activos reales') - axs[i, j].set_ylim([0,ylim*1.05]) - axs[i, j].set_xlim([0,xlim]) - -lines, labels = fig.axes[-1].get_legend_handles_labels() -fig.legend(lines, labels,loc = 'best') -fig.suptitle('Infectados Activos') -fig.show() - - -# Acumulados -ylim = max([max(sims[i][j].I_ac[:xlim]) for j in range(np.shape(sims)[1]) for i in range(np.shape(sims)[0]) ]) -fig, axs = plt.subplots(len(k), len(quarantines)) - -for i in range(len(k)): - for j in range(len(quarantines)): - axs[i, j].plot(sims[i][j].t,sims[i][j].I_ac,label="Infectados") - axs[i, j].set_title("K: "+str(k[i])+" | Alpha: "+str([0.5,0.6,0.7][j])) - if realdata == True: - axs[i, j].scatter(I_ac_r_tr,I_ac_r,label='Infectados Acumulados reales') - axs[i, j].set_ylim([0,ylim*1.05]) - axs[i, j].set_xlim([0,xlim]) - -lines, labels = fig.axes[-1].get_legend_handles_labels() -fig.legend(lines, labels,loc = 'best') -fig.suptitle('Infectados Acumulados') -fig.show() - - -# Diarios -ylim = max([max(sims[i][j].I_d[:xlim]) for j in range(np.shape(sims)[1]) for i in range(np.shape(sims)[0]) ]) -fig, axs = plt.subplots(len(k), len(quarantines)) - -for i in range(len(k)): - for j in range(len(quarantines)): - axs[i, j].plot(sims[i][j].t,sims[i][j].I_d,label="Infectados") - axs[i, j].set_title("K: "+str(k[i])+" | Alpha: "+str([0.5,0.6,0.7][j])) - if realdata == True: - axs[i, j].scatter(I_d_r_tr,I_d_r,label='Infectados diarios reales') - axs[i, j].set_ylim([0,ylim*1.05]) - axs[i, j].set_xlim([0,xlim]) - -lines, labels = fig.axes[-1].get_legend_handles_labels() -fig.legend(lines, labels,loc = 'best') -fig.suptitle('Infectados Diarios') -fig.show() - diff --git a/deprecated/src/SEIR/class_SEIR_old.py b/deprecated/src/SEIR/class_SEIR_old.py deleted file mode 100644 index 3c415e8..0000000 --- a/deprecated/src/SEIR/class_SEIR_old.py +++ /dev/null @@ -1,1068 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -""" -SEIRHVD Model -""" - -import numpy as np -from scipy.integrate import solve_ivp -from scipy.special import expit -from joblib import Parallel, delayed -from scipy import signal -import pandas as pd -from numpy import linalg as LA -import multiprocessing - -""" -To do: - - Create reports function inside simSAEIRHVD class - - -SEIRHVD Implementation -Instructions: - Init a simSEIRHVD objecting giving the simulation condictions: - - tsim: Simulation time - - max_mov: - - rem_mov: - - qp: - - iqt: - - fqt: - - movfunct: - -""" - -class simSEIRHVD: - definputarray=np.array([ - [500,0.8,0.6,0,0,500,0], - [500,0.6,0.5,0,0,500,0], - [500,0.4,0.4,0,0,500,0]]) - - - def __init__(self,beta = 0.15, mu =1,inputarray = definputarray,B=0,D=0,V=0,I_act0=0,R=0,Htot=None,Vtot=None,H_cr=0,H0=0,tsat=30,Hmax=4000,Vmax=2000,expinfection=1,SeroPrevFactor=1,population=100000, - intgr = 0,I_as_ac =0, I_mi_ac = 0, I_se_ac = 0, I_cr_ac = 0,H_crD = 0, VD=0,I_crD=0,I_seD=0,I_as_prop = 1, I_mi_prop = 0,I_cr_prop = 0,I_se_prop = 0, k =0): - self.mu = mu - self.beta = beta - self.sims = [] - self.inputarray=inputarray - self.simulated = False - self.B = B - self.D = D - self.V = V - self.I_act0 = I_act0 - self.R = R - self.H_cr = H_cr # Hospitalizados criticos dia 0 - self.H0 = H0 # Hospitalizados totales dia 0 - - self.Hmax = Hmax - self.Vmax = Vmax - self.expinfection = expinfection - self.SeroPrevFactor=SeroPrevFactor - self.population = population - self.Htot = Htot - self.Vtot = Vtot - self.intgr = intgr - - # Accumulated Infected - self.I_as_ac = I_as_ac - self.I_mi_ac = I_mi_ac - self.I_se_ac = I_se_ac - self.I_cr_ac = I_cr_ac - - # Deaths - self.H_crD = H_crD - self.VD = VD - self.I_seD = I_seD - self.I_crD = I_crD - - # Initial Infected proportion - self.I_as_prop = I_as_prop - self.I_mi_prop = I_mi_prop - self.I_cr_prop = I_cr_prop - self.I_se_prop = I_se_prop - - - # dayly Infected - self.I_as_d = 0 - self.I_mi_d = 0 - self.I_se_d = 0 - self.I_cr_d = 0 - - # Saturated Kinetics - self.k = k - - - - def sim_run(self,tsim,max_mov,rem_mov,qp,iqt=0,fqt = 300,movfunct = 0): - case = SEIRHUDV(tsim,max_mov,rem_mov,qp,iqt,fqt,movfunct,k=self.k) - case.beta = self.beta - case.mu = self.mu - case.B = self.B - case.D = self.D - case.V = self.V - case.I_act0 = self.I_act0 - case.R = self.R - case.Htot = self.Htot - case.Vtot = self.Vtot - case.H_cr = self.H_cr # Hospitalizados criticos dia 0 - case.H0 = self.H0 # Hospitalizados totales dia 0 - - case.Hmax = self.Hmax - case.Vmax = self.Vmax - case.expinfection = self.expinfection - case.SeroPrevFactor = self.SeroPrevFactor - case.population = self.population - - # Accumulated Infected - case.I_as_ac = self.I_as_ac - case.I_mi_ac = self.I_mi_ac - case.I_se_ac = self.I_se_ac - case.I_cr_ac = self.I_cr_ac - - # Deaths - case.H_crD = self.H_crD - case.VD = self.VD - case.I_seD = self.I_seD - case.I_crD = self.I_crD - - case.I_as_d = self.I_as_d - case.I_mi_d = self.I_mi_d - case.I_se_d = self.I_se_d - case.I_cr_d = self.I_cr_d - - case.I_as_prop=self.I_as_prop - case.I_mi_prop=self.I_mi_prop - case.I_cr_prop=self.I_cr_prop - case.I_se_prop=self.I_se_prop - - #case.k = self.k - - - case.setrelationalvalues() - if self.intgr == 0: - print('Fast Solver') - case.integr_sci(0,tsim,0.1,False) - else: - print('Robust Solver') - case.integr(0,tsim,0.1,False) - out=[case,max_mov,rem_mov,qp,tsim] - return(out) - - - # Agregar un codigo numerico para que solo haya 1 vector de simulacion - #['once','once','once','once','once','once','square','square','once','once','once','once','once','once','square','square'] - - def setparameters(self): - return - def simulate(self,intgr=0): - num_cores = multiprocessing.cpu_count() - #params=Parallel(n_jobs=num_cores, verbose=50)(delayed(ref_test.refinepso_all)(Ir,tr,swarmsize=200,maxiter=50,omega=0.5, phip=0.5, phig=0.5,eta_r=[0,1],Q_r=[0,1],obj_func='IN')for i in range(int(rep))) - self.sims=Parallel(n_jobs=num_cores, verbose=50)(delayed(self.sim_run)(self.inputarray[i,0],self.inputarray[i,1],self.inputarray[i,2],self.inputarray[i,3],self.inputarray[i,4],self.inputarray[i,5],self.inputarray[i,6]) for i in range(self.inputarray.shape[0])) - self.simulated = True - return(self.sims) - - def getscenarios(self): - return() - def addscenario(self,inputarray): - return() - - - - - -class SEIRHUDV : - def __init__(self,tsim,max_mov,rem_mov,qp,iqt,fqt,movfunct,k=0): - #print(max_mov) - self.setparams() - self.setinitvalues() - #print(max_mov) - self.setscenario(tsim,max_mov,rem_mov,qp,iqt,fqt,movfunct) - self.k = k - #global mobility reduction parameters - #self.alpha=alpha - # total Hostipatl beds - - - # --------------------------- # - # Diferential Ecuations # - # --------------------------- # - - # dVariable/dt = sum(prob_i/in_time_i*in_State_i,i in in states) - sum(prob_i/out_time_i*out_State_i,i in in states) - - # Susceptibles - # dS/dt: - if self.k==0: - self.dS=lambda t,S,E_as,E_sy,I_as,I_mi,D,R: -self.alpha(t)*self.beta*S*(self.expinfection*(E_as+E_sy)+I_as+I_mi)/self.N-self.betaD*D+self.eta*R - else: - self.dS=lambda t,S,E_as,E_sy,I_as,I_mi,D,R: -self.alpha(t)*self.beta*S*(self.expinfection*(E_as+E_sy)+I_as+I_mi)/(self.N+self.k*I_as)-self.betaD*D+self.eta*R - # Exposed - # dE_as/dt - if self.k==0: - self.dE_as=lambda t,S,E_as,E_sy,I_as,I_mi: self.pSas/self.tSas*self.alpha(t)*self.beta*S*(self.expinfection*(E_as+E_sy)+I_as+I_mi)/self.N\ - -self.pasas/self.tasas*E_as - # dE_sy/dt - self.dE_sy=lambda t,S,E_as,E_sy,I_as,I_mi: self.pSsy/self.tSsy*self.alpha(t)*self.beta*S*(self.expinfection*(E_as+E_sy)+I_as+I_mi)/self.N\ - -self.psymi/self.tsymi*E_sy-self.psyse/self.tsyse*E_sy-self.psycr/self.tsycr*E_sy - - else: - self.dE_as=lambda t,S,E_as,E_sy,I_as,I_mi: self.pSas/self.tSas*self.alpha(t)*self.beta*S*(self.expinfection*(E_as+E_sy)+I_as+I_mi)/(self.N+self.k*I_as)\ - -self.pasas/self.tasas*E_as - # dE_sy/dt - self.dE_sy=lambda t,S,E_as,E_sy,I_as,I_mi: self.pSsy/self.tSsy*self.alpha(t)*self.beta*S*(self.expinfection*(E_as+E_sy)+I_as+I_mi)/(self.N+self.k*I_as)\ - -self.psymi/self.tsymi*E_sy-self.psyse/self.tsyse*E_sy-self.psycr/self.tsycr*E_sy - - # Infected - # dI_as/dt - self.dI_as=lambda t,E_as,I_as: self.pasas/self.tasas*E_as-self.pasR/self.tasR*I_as - # dI_mi/dt - self.dI_mi=lambda t,E_sy,I_mi: self.psymi/self.tsymi*E_sy-self.pmiR/self.tmiR*I_mi - # dI_se/dt: Esy - - self.dI_se=lambda t,E_sy,I_se,H_in,H_cr,H_out: self.psyse/self.tsyse*E_sy-self.psein/self.tsein*I_se*(self.h_sat(H_in,H_cr,H_out,t))\ - -self.pseD/self.tseD*I_se*(1-self.h_sat(H_in,H_cr,H_out,t)) - # dI_cr/dt - self.dI_cr=lambda t,E_sy,I_cr,H_in,H_cr,H_out,V: self.psycr/self.tsycr*E_sy\ - -self.pcrcrin/self.tcrcrin*I_cr*(self.h_sat(H_in,H_cr,H_out,t)*(1-self.v_sat(V,t)))\ - -self.pcrV/self.tcrV*I_cr*(self.v_sat(V,t))-self.pcrD/self.tcrD*I_cr*(1-self.h_sat(H_in,H_cr,H_out,t))*(1-self.v_sat(V,t)) - - #self.dI_cr=lambda t,E_sy,I_cr,H_in,H_cr,H_out: self.psycr/self.tsycr*E_sy-self.pcrcrin/self.tcrcrin*I_cr*(self.h_sat(H_in,H_cr,H_out,t))\ - # -self.pcrD/self.tcrD*I_cr*(1-self.h_sat(H_in,H_cr,H_out,t)) - - # Hospitalized - # dH_in/dt: Hospitalized arriving to the hospital - self.dH_in=lambda t,I_se,H_in,H_cr,H_out: self.psein/self.tsein*I_se*(self.h_sat(H_in,H_cr,H_out,t))\ - -self.pinout/self.tinout*H_in-self.pincrin/self.tincrin*H_in - # dH_cr/dt: Hospitalized in critical conditions - self.dH_cr=lambda t,I_cr,H_in,H_cr,H_out,V: self.pcrcrin/self.tcrcrin*I_cr*(self.h_sat(H_in,H_cr,H_out,t)*(1-self.v_sat(V,t)))\ - -self.pcrinV/self.tcrinV*H_cr*self.v_sat(V,t)-self.pcrinD/self.tcrinD*H_cr*(1-self.v_sat(V,t))+self.pincrin/self.tincrin*H_in - # dH_out/dt: Hospitalized getting better - self.dH_out=lambda t,H_in,H_out,V: self.pVout/self.tVout*V+self.pinout/self.tinout*H_in-self.poutR/self.toutR*H_out - # dV/dt: Ventilator necessity rates - self.dV=lambda t,I_cr,H_cr,V: self.pcrinV/self.tcrinV*H_cr*self.v_sat(V,t)-self.pVout/self.tVout*V-self.pVD/self.tVD*V\ - +self.pcrV/self.tcrV*I_cr*(self.v_sat(V,t)) - - # Deaths - # dD/dt: Death Rate - self.dD=lambda t,I_se,I_cr,H_in,H_cr,H_out,V,D: self.pVD/self.tVD*V+self.pcrD/self.tcrD*I_cr*(1-self.h_sat(H_in,H_cr,H_out,t)*(1-self.v_sat(V,t)))+\ - self.pseD/self.tseD*I_se*(1-self.h_sat(H_in,H_cr,H_out,t))+self.pcrinD/self.tcrinD*H_cr*(1-self.v_sat(V,t))-\ - self.pDB/self.tDB*D - # dB/dt: Bury rate - self.dB=lambda t,D: self.pDB/self.tDB*D - - # Recovered - # dR/dt - self.dR=lambda t,I_as,I_mi,H_out,R: self.pasR/self.tasR*I_as+self.pmiR/self.tmiR*I_mi+self.poutR/self.toutR*H_out-self.eta*R - - #Auxiliar functions: - self.dI=lambda t,E_as,E_sy: self.pasas/self.tasas*E_as+self.psymi/self.tsymi*E_sy+self.psyse/self.tsyse*E_sy+self.psycr/self.tsycr*E_sy - self.dCV=lambda t,I_cr,H_in,H_cr,H_out,V,CV:self.pcrD/self.tcrD*I_cr*(1-self.h_sat(H_in,H_cr,H_out,t)*(1-self.v_sat(V,t)))+self.pcrinD/self.tcrinD*H_cr*(1-self.v_sat(V,t))-CV - self.dCH=lambda t,I_se,H_in,H_cr,H_out,CH:self.pseD/self.tseD*I_se*(1-self.h_sat(H_in,H_cr,H_out,t))-CH - self.dACV=lambda t,CV: CV - self.dACH=lambda t,CH: CH - - # Accummulated Infected - self.dI_as_ac = lambda t,E_as: self.pasas/self.tasas*E_as - self.dI_mi_ac = lambda t,E_sy: self.psymi/self.tsymi*E_sy - self.dI_se_ac = lambda t,E_sy: self.psyse/self.tsyse*E_sy - self.dI_cr_ac = lambda t,E_sy: self.psycr/self.tsycr*E_sy - - # Accumulated Deads - self.dH_crD=lambda t,H_cr,V: self.pcrinD/self.tcrinD*H_cr*(1-self.v_sat(V,t)) - self.dVD=lambda t,V: self.pVD/self.tVD*V - self.dI_seD=lambda t,I_se,H_in,H_cr,H_out: self.pseD/self.tseD*I_se*(1-self.h_sat(H_in,H_cr,H_out,t)) - self.dI_crD=lambda t,I_cr,H_in,H_cr,H_out: self.pcrD/self.tcrD*I_cr*(1-self.h_sat(H_in,H_cr,H_out,t)) - - # Daily Infected - self.dI_as_d = lambda t,E_as,I_as_d: self.pasas/self.tasas*E_as - I_as_d - self.dI_mi_d = lambda t,E_sy,I_mi_d: self.psymi/self.tsymi*E_sy - I_mi_d - self.dI_se_d = lambda t,E_sy,I_se_d: self.psyse/self.tsyse*E_sy - I_se_d - self.dI_cr_d = lambda t,E_sy,I_cr_d: self.psycr/self.tsycr*E_sy - I_cr_d - - # Daily Deads - self.dH_crD_d=lambda t,H_cr,V,H_crD_d: self.pcrinD/self.tcrinD*H_cr*(1-self.v_sat(V,t)) - H_crD_d - self.dVD_d=lambda t,V,VD_d: self.pVD/self.tVD*V - VD_d - self.dI_seD_d=lambda t,I_se,H_in,H_cr,H_out,I_seD_d: self.pseD/self.tseD*I_se*(1-self.h_sat(H_in,H_cr,H_out,t)) - I_seD_d - self.dI_crD_d=lambda t,I_cr,H_in,H_cr,H_out,I_crD_d: self.pcrD/self.tcrD*I_cr*(1-self.h_sat(H_in,H_cr,H_out,t)) - I_crD_d - - - - - # UCI and UTI beds saturation function - def h_sat(self,H_in,H_cr,H_out,t): - return(expit(-self.gw*(H_in+H_cr+H_out-self.Htot(t)))) - # Ventilators Saturation Function - def v_sat(self,V,t): - return(expit(-self.gw*(V-self.Vtot(t)))) - - def setparams(self): - self.mu = 2.6 - - self.beta = 0.19 # (*probabilidad de transmision por contacto con contagiados*) - self.betaD = 0.0 #(*probabilidad de transmision por contacto con muertos*) - - self.pSas = 1#3 # Transicion de Susceptible a Expuesto Asintomatico - self.tSas = 1.0 - - self.pSsy = 0#7 # Transicion de Susceptible a Expuesto sintomatico - self.tSsy = 1.0 - - self.pasas = 1.0# Transicion de Expuesto asintomatico a Infectado asintomatico - self.tasas = 5.0 - - self.psymi = 0.8333#78 # Transicion de Expuesto Sintomatico a Infectado Mild - self.tsymi = 5.0 - - self.psycr = 0.05555#8 # Transicion de Expuesto Sintomatico a Infectado critico - self.tsycr = 3.0 - - self.psyse = 0.11111#14 # Transicion de Expuesto Sintomatico a Infectado Severo - self.tsyse = 3.0 - - self.pasR = 1.0 # Transicion de Infectado asintomatico a Recuperado - self.tasR = 10.0 - - self.pmiR = 1.0 # Transicion de Infectado mild a Recuperado - self.tmiR = 15.0 - - self.psein = 1.0 # Transicion de Infectado serio a Hospitalizado (si no ha colapsado Htot) - self.tsein = 3.0 - - self.pincrin = 0.03 # Transicion de Hospitalizado a Hospitalizado Critico (si no ha colapsado Htot) - self.tincrin = 3.0 - - self.pcrcrin = 1.0 # Transicion de Infectado critico a Hopsitalizado Critico (si no ha colapsado Htot) - self.tcrcrin = 3.0 - - self.pcrinV = 1.0 # Transicion de Hospitalizado critico a Ventilado (si no ha colapsado V) - self.tcrinV = 0.01 - - self.pcrinD = 1.0 # Muerte de hospitalizado critico (Cuando V colapsa) - self.tcrinD = 0.001 # - - self.pcrD = 1.0 # Muerte de Infectado critico (si ha colapsado Htot) - self.tcrD = 3.0 #(*Hin+H_cr_in+Hout colapsa*) - - self.pseD = 1.0 # Muerte de Infectado severo (si ha colapsado Htot) - self.tseD = 3.0 - - self.pinout = 0.97 # Mejora de paciente severo hospitalizado, transita a Hout - self.tinout = 6.0 - - self.pVout = 0.5 # Mejora de ventilado hospitalizado, transita a Hout - self.tVout = 15.0 - - self.pVD = 0.5 # Muerte de ventilado - self.tVD = 15.0 - - self.poutR = 1.0 # Mejora del paciente hospitalizado, Hout a R - self.toutR = 5.0 - - self.pDB = 1.0 # Entierros - self.tDB = 1.0 - - self.pcrV = 1.0 # Transicion de Hospitalizado critico a Ventilado (si no ha colapsado V) - self.tcrV = 3.0 - - self.eta = 0.0 # tasa de perdida de inmunidad (1/periodo) - - - # ------------------- # - # Valores Iniciales # - # ------------------- # - - def setinitvalues(self): - # 15 de Mayo - self.I_act0 = 100 - self.res=1 - self.muS=self.mu - self.H0=0 #1980#1903.0 - self.H_cr=0 - self.gw=10 - self.D=0 - self.B=0 - self.R=0.0 - self.V=0 - self.mu=1.4 - self.t=400.0 - self.CV=0 - self.CH=0 - self.ACV=0 - self.ACH=0 - self.SeroPrevFactor = 1 - self.population = 1000000 - - self.Hmax = 3000 - self.Vmax = 1500 - self.expinfection = 1 - - # Accumulated Infected - self.I_as_ac = 0 - self.I_mi_ac = 0 - self.I_se_ac = 0 - self.I_cr_ac = 0 - - # Deaths - self.H_crD = 0 - self.VD = 0 - self.I_seD = 0 - self.I_crD = 0 - - # Daily Infected - self.I_as_d = 0 - self.I_mi_d = 0 - self.I_se_d = 0 - self.I_cr_d = 0 - - # Daily Deaths - self.H_crD_d = 0 - self.VD_d = 0 - self.I_seD_d = 0 - self.I_crD_d = 0 - - # Initial Infected proportion - self.I_as_prop = 1 - self.I_mi_prop = 0 - self.I_cr_prop = 0 - self.I_se_prop = 0 - - # Saturated Kinetics - self.k = 0 - - self.setrelationalvalues() - - def setrelationalvalues(self): - self.I_as= self.I_as_prop*self.I_act0 - self.I_mi= self.I_mi_prop*self.I_act0 - self.I_cr= self.I_cr_prop*self.I_act0 - self.I_se = self.I_se_prop*self.I_act0 - # Expuestos - - self.E_as=1*self.mu*self.I_act0 - self.E_sy=0*self.mu*self.I_act0 - # Hospitalizados - #self.V+=(self.I_act0-(self.I_as+self.I_mi+self.I_cr+self.I_se))*0.05 - self.H_in=self.H0*0.42-self.H_cr/2 #+ (self.I_act0-(self.I_as+self.I_mi+self.I_cr+self.I_se))*0.1 - self.H_out=self.H0*0.58-self.H_cr/2 - - # Valores globales - self.SeroPrevPop = self.SeroPrevFactor*self.population - self.S=self.SeroPrevPop-self.H0-self.V-self.D-(self.E_as+self.E_sy)-(self.I_as+self.I_cr+self.I_se+self.I_mi) - self.N=(self.S+self.E_as+self.E_sy+self.I_as+self.I_mi+self.I_se+self.I_cr+self.H_in+self.H_cr+self.H_out+self.V+self.D+self.R) - self.I=self.I_cr+self.I_as+self.I_se+self.I_mi - - #constructor of SEIR class elements, it's initialized when a parameter - #miminization is performed to adjust the best setting of the actual infected - - def setscenario(self,tsim,max_mov,rem_mov,qp,iqt,fqt,movfunct): - self.tsim = tsim - self.max_mov = max_mov - self.rem_mov = rem_mov - self.qp = qp - self.iqt = iqt - self.fqt = fqt - if movfunct == 0: - self.movfunct = 'once' - elif movfunct == 1: - self.movfunct = 'square' - elif movfunct == 2: - self.movfunct = 'sawtooth' - else: - self.movfunct = 'once' - - self.alpha = self.alphafunct(self.max_mov,self.rem_mov,self.qp,self.iqt,self.fqt,self.movfunct) - return() - - - - def alphafunct(self,max_mov,rem_mov,qp,iqt=0,fqt=300,movfunct = 'once'): - """ - # max_mov: Movilidad sin cuarentena - # rem_mov: Movilidad con cuarentena - # qp: Periodo cuarentena dinamica - # - qp >0 periodo Qdinamica - # - qp = 0 sin qdinamica - # iqt: Initial quarantine time. Tiempo inicial antes de cuarentena dinamica - # - iqt>0 inicia con cuarentena total hasta iqt - # - iqt<0 sin cuarentena hasta iqt - # fqt: Final quarantine time. Duracion tiempo cuarentena - # movfunct: Tipo de cuarentena dinamica desde iqt - # - once: una vez durante qp dias - # - total: total desde iqt - # - sawtooth: diente de cierra - # - square: onda cuadrada - """ - def alpha(t): - if 'square' in movfunct: - def f(t): - return signal.square(t) - if t0: - return(rem_mov) - else: - return(max_mov) - else: - if qp == 0: - return(max_mov) - elif tfqt: - return(max_mov) - else: - return(rem_mov) - - - elif 'sawtooth' in movfunct: - def f(t): - return signal.sawtooth(t) - if t0: - return(rem_mov) - else: - return(max_mov) - else: - if qp == 0: - return(max_mov) - elif t=t_end)[0][0] -idx = np.searchsorted(simulation.t,RM.tr[:t_end_idx]) -E_I = np.sum(abs(RM.Ir[:t_end_idx]-simulation.I_det[idx]))/(np.mean(RM.Ir[:t_end_idx])*t_end_idx) - -t_end_idx = np.where(np.array(RM.I_d_r_tr)>=t_end)[0][0] -idx = np.searchsorted(simulation.t,RM.I_d_r_tr[:t_end_idx]) -E_Id = np.sum(abs(RM.I_d_r[:t_end_idx]-simulation.I_d_det[idx]))/(np.mean(RM.I_d_r[:t_end_idx])*t_end_idx) - -t_end_idx = np.where(np.array(RM.I_ac_r_tr)>=t_end)[0][0] -idx = np.searchsorted(simulation.t,RM.I_ac_r_tr[:t_end_idx]) -E_Iac = np.sum(abs(RM.I_ac_r[:t_end_idx]-simulation.I_ac_det[idx]))/(np.mean(RM.I_ac_r[:t_end_idx])*t_end_idx) - -t_end_idx = np.where(np.array(RM.Br_tr)>=t_end)[0][0] -idx = np.searchsorted(simulation.t,RM.Br_tr[:t_end_idx]) -E_D = np.sum(abs(RM.Br[:t_end_idx]-simulation.B[idx]))/(np.mean(RM.Br[:t_end_idx])*t_end_idx) - -t_end_idx = np.where(np.array(RM.sochimi_tr)>=t_end)[0][0] -idx = np.searchsorted(simulation.t,RM.sochimi_tr[:t_end_idx]) -E_UCI = np.sum(abs(RM.Hr[:t_end_idx]-(simulation.Hse[idx]+simulation.Hout[idx])))/(np.mean(RM.Hr[:t_end_idx])*t_end_idx) - -t_end_idx = np.where(np.array(RM.sochimi_tr)>=t_end)[0][0] -idx = np.searchsorted(simulation.t,RM.sochimi_tr[:t_end_idx]) -E_VMI = np.sum(abs(RM.Vr[:t_end_idx]-simulation.V[idx]))/(np.mean(RM.Vr[:t_end_idx])*t_end_idx) - - - - -import math -math.isnan() -E_UCI = np.sum(abs(RM.Hr[:t_end_idx]-(simulation.Hse[idx]+simulation.Hout[idx])))/(np.mean(RM.Hr[:t_end_idx])*t_end_idx) - - - - - -fig, axs = plt.subplots(3, 2) -axs[0,0].set_xlim(0,days) -axs[0,0].scatter(RM.tr,RM.Ir,label='Real Active Data') -axs[0,0].plot(simulation.t[:index],simulation.I_det[:index],label='Infected') -axs[0,0].set_title('Detectable Active Infected') -axs[0,0].axvline(x = t_end, linestyle = 'dotted',color = 'grey') - -axs[0, 1].set_xlim(0,days) -axs[0, 1].plot(simulation.t[:index],simulation.I_d_det[:index],label='Daily new Infected') -axs[0, 1].scatter(RM.I_d_r_tr,RM.I_d_r,label='Daily Real Data') -#axs[0, 1].legend(loc=0) -axs[0, 1].set_title('Detected Daily infected') -axs[0,1].axvline(x = t_end, linestyle = 'dotted',color = 'grey') - - -axs[1,0].set_xlim(0,days) -axs[1,0].plot(simulation.t[:index],simulation.I_ac_det[:index],label='Detected Acummulated Infected') -axs[1,0].scatter(RM.I_ac_r_tr,RM.I_ac_r,label='Accumulated Real Data') -axs[1,0].set_title('Detected Accumulated Infected') -axs[1,0].axvline(x = t_end, linestyle = 'dotted',color = 'grey') - -axs[1,1].set_xlim(0,days) -axs[1,1].plot(simulation.t[:index],simulation.B[:index],label='Total Acummulated Deaths') -axs[1,1].scatter(RM.Br_tr,RM.Br,label='Real Data') -axs[1,1].set_title('Acmulated Deaths') -axs[1,1].axvline(x = t_end, linestyle = 'dotted',color = 'grey') - -axs[2,0].set_xlim(0,days) -axs[2,0].plot(simulation.t[:index],simulation.Hse[:index]+simulation.Hout[:index],label='UCI/UTI Beds') -axs[2,0].scatter(RM.sochimi_tr,RM.Hr,label='Real Data') -axs[2,0].scatter(RM.sochimi_tr,RM.Hr_tot,label='Capacity Data', color = 'red') -axs[2,0].set_title('UCI/UTI Usage') -axs[2,0].axvline(x = t_end, linestyle = 'dotted',color = 'grey') - -axs[2,1].set_xlim(0,days) -axs[2,1].plot(simulation.t[:index],simulation.V[:index],label='VMI Usage') -axs[2,1].scatter(RM.sochimi_tr,RM.Vr,label='Real Data') -axs[2,1].scatter(RM.sochimi_tr,RM.Vr_tot,label='Capacity Data',color = 'red') -axs[2,1].set_title('UCI/UTI Usage') -axs[2,1].axvline(x = t_end, linestyle = 'dotted',color = 'grey') - - - -simulation.pE_Ias = pE_Ias -simulation.pE_Imi = pE_Imi -simulation.pE_Ise = pE_Ise -simulation.pE_Icr = pE_Icr - - - -fig, axs = plt.subplots(3, 2) -axs[0,0].set_xlim(0,days) -axs[0,0].scatter(RM.tr,RM.Ir,label='Real Active Data') -axs[0,0].plot(simulation1.t[:index1],simulation1.I_det[:index1],label='Infected') -axs[0,0].plot(simulation2.t[:index2],simulation2.I_det[:index2],label='Infected') -axs[0,0].plot(simulation3.t[:index3],simulation3.I_det[:index3],label='Infected') -axs[0,0].set_title('Detectable Active Infected') -axs[0,0].axvline(x = t_end, linestyle = 'dotted',color = 'grey') - -axs[0, 1].set_xlim(0,days) -axs[0, 1].plot(simulation1.t[:index1],simulation1.I_d_det[:index1],label='Daily new Infected') -axs[0, 1].plot(simulation2.t[:index2],simulation2.I_d_det[:index2],label='Daily new Infected') -axs[0, 1].plot(simulation3.t[:index3],simulation3.I_d_det[:index3],label='Daily new Infected') -axs[0, 1].scatter(RM.I_d_r_tr,RM.I_d_r,label='Daily Real Data') -#axs[0, 1].legend(loc=0) -axs[0, 1].set_title('Detected Daily infected') -axs[0,1].axvline(x = t_end, linestyle = 'dotted',color = 'grey') - - -axs[1,0].set_xlim(0,days) -axs[1,0].plot(simulation1.t[:index1],simulation1.I_ac_det[:index1],label='Detected Acummulated Infected') -axs[1,0].plot(simulation2.t[:index2],simulation2.I_ac_det[:index2],label='Detected Acummulated Infected') -axs[1,0].plot(simulation3.t[:index3],simulation3.I_ac_det[:index3],label='Detected Acummulated Infected') -axs[1,0].scatter(RM.I_ac_r_tr,RM.I_ac_r,label='Accumulated Real Data') -axs[1,0].set_title('Detected Accumulated Infected') -axs[1,0].axvline(x = t_end, linestyle = 'dotted',color = 'grey') - -axs[1,1].set_xlim(0,days) -axs[1,1].plot(simulation1.t[:index1],simulation1.B[:index1],label='Total Acummulated Deaths') -axs[1,1].plot(simulation2.t[:index2],simulation2.B[:index2],label='Total Acummulated Deaths') -axs[1,1].plot(simulation3.t[:index3],simulation3.B[:index3],label='Total Acummulated Deaths') -axs[1,1].scatter(RM.Br_tr,RM.Br,label='Real Data') -axs[1,1].set_title('Acmulated Deaths') -axs[1,1].axvline(x = t_end, linestyle = 'dotted',color = 'grey') - -axs[2,0].set_xlim(0,days) -axs[2,0].plot(simulation1.t[:index1],simulation1.Hse[:index1]+simulation1.Hout[:index1],label='UCI/UTI Beds') -axs[2,0].plot(simulation2.t[:index2],simulation2.Hse[:index2]+simulation2.Hout[:index2],label='UCI/UTI Beds') -axs[2,0].plot(simulation3.t[:index3],simulation3.Hse[:index3]+simulation3.Hout[:index3],label='UCI/UTI Beds') -axs[2,0].scatter(RM.sochimi_tr,RM.Hr,label='Real Data') -axs[2,0].scatter(RM.sochimi_tr,RM.Hr_tot,label='Capacity Data', color = 'red') -axs[2,0].set_title('UCI/UTI Usage') -axs[2,0].axvline(x = t_end, linestyle = 'dotted',color = 'grey') - -axs[2,1].set_xlim(0,days) -axs[2,1].plot(simulation1.t[:index1],simulation1.V[:index1],label='VMI Usage') -axs[2,1].plot(simulation2.t[:index2],simulation2.V[:index2],label='VMI Usage') -axs[2,1].plot(simulation3.t[:index3],simulation3.V[:index3],label='VMI Usage') -axs[2,1].scatter(RM.sochimi_tr,RM.Vr,label='Real Data') -axs[2,1].scatter(RM.sochimi_tr,RM.Vr_tot,label='Capacity Data',color = 'red') -axs[2,1].set_title('UCI/UTI Usage') -axs[2,1].axvline(x = t_end, linestyle = 'dotted',color = 'grey') - - - -Htot=30 -Vtot=20 -H0=simulation1.H -V0=0 -B0=0 -D0=0 -R0=0 -I0=100 -I_d0=10 -I_ac0=100 -SeroPrevFactor=1 -expinfection=0 -population=1000000 - -initdate = initdate2 -Imi_det = 1 -Ias_det = 1 -Einit=True -E0=simulation1.E[-1] -E_d0=simulation1.E_d[-1] -E_ac0=simulation1.E_ac[-1] - - -""" -Sero Prev Reinitialization - -""" - -import numpy as np -import pandas as pd -import matplotlib.pyplot as plt -from datetime import datetime -from numpy import linalg as LA - -import platform -OS = platform.system() - -import matplotlib.pyplot as plt -if OS == 'Linux': - %matplotlib tk - print('Linux') -elif OS == 'Windows': - %matplotlib qt - print('Windows') -else: - print('OS not detected :-|') - -import sys -from pathlib import Path -sys.path.insert(1, '../src/SEIRHVD/') -sys.path.insert(1, '../src/utils/') -sys.path.insert(1, 'src/SEIRHVD/') -sys.path.insert(1, 'src/utils/') - -from class_SEIRHUVD4 import SEIRHVD -from Quarantine import Quarantine -from importdata import ImportData - -initdate = datetime(2020,5,15) -initdate2 = datetime(2020,8,15) -currentdate = datetime.now() -currentday = (currentdate - initdate).days - -tstate = '13' - -# Import Data -RM = ImportData(tstate=tstate,initdate = initdate) -RM.importdata() - -# Simulation parameters -tsim1 = (initdate2 - initdate).days #1000 - -tsim2 = 1000-tsim1 -beta = 0.2 -mu = 0.8 -k = 0.1 - -SeroPrevFactor=0.05 # SeroPrevalence Factor (The proportion of the population that participates in the dynamics) -expinfection=0 # Proportion in which the exposed infect - 0: nothing, 1: equally as Infected - -# Quarantines -max_mob1 = 0.55 -rem_mob = 0.45 -t_end_date=datetime(2020,8,25) -t_end=(t_end_date-initdate).days -#alpha = Quarantine(rem_mob,max_mob=max_mob,qp=0,iqt=0,fqt=1000,movfunct = 'once').alpha(t) -alpha1 = Quarantine(rem_mob,max_mob1,qp=0,iqt=0,fqt=t_end).alpha - - -Imi_det = 0.56 -Ias_det = 0 - -simulation1 = SEIRHVD(tsim1,beta,mu,alpha1,k=k,SeroPrevFactor=SeroPrevFactor,expinfection=expinfection,RealIC = RM,Imi_det = Imi_det,Ias_det = Ias_det) -simulation1.integr_sci(0,tsim,0.1) - -simulation2 = SEIRHVD(tsim2,beta,mu,alpha1,k=k,SeroPrevFactor=SeroPrevFactor,Imi_det = Imi_det,Ias_det = Ias_det,SimIC=simulation1,initdate=initdate2) -simulation2.integr_sci(0,tsim,0.1) - - - - - - - - - -fig, axs = plt.subplots(3, 3) -axs[0,0].set_xlim(0,days) -axs[0,0].scatter(RM.tr,RM.Ir,label='Real Active Data') -axs[0,0].plot(simulation1.t,simulation1.I_det,label='Infected') -axs[0,0].plot(simulation2.t+tsim1,simulation2.I_det,label='Infected') -axs[0,0].set_title('Active Infected') -axs[0,0].axvline(x = t_end, linestyle = 'dotted',color = 'grey') - - -axs[0,1].set_xlim(0,days) -axs[0,1].plot(simulation2.t+tsim1,simulation2.I_d_det,label='sim2') -axs[0,1].plot(simulation1.t,simulation1.I_d_det,label='sim1') -axs[0,1].scatter(RM.I_d_r_tr,RM.I_d_r,label='Daily Real Data') -axs[0,1].set_title('Daily infected') -axs[0,1].axvline(x = t_end, linestyle = 'dotted',color = 'grey') - - -axs[0,2].set_xlim(0,days) -axs[0,2].plot(simulation2.t+tsim1,simulation2.I_ac_det,label='sim2') -axs[0,2].plot(simulation1.t,simulation1.I_ac_det,label='sim1') -axs[0,2].scatter(RM.I_ac_r_tr,RM.I_ac_r,label='Accumulated Real Data') -axs[0,2].set_title('Accumulated Infected') -axs[0,2].axvline(x = t_end, linestyle = 'dotted',color = 'grey') - - -axs[1,0].set_xlim(0,days) -axs[1,0].plot(simulation2.t+tsim1,simulation2.B,label='sim2') -axs[1,0].plot(simulation1.t,simulation1.B,label='sim1') -axs[1,0].scatter(RM.Br_tr,RM.Br,label='Real Data') -axs[1,0].set_title('Acmulated Deaths') -axs[1,0].axvline(x = t_end, linestyle = 'dotted',color = 'grey') - - -axs[1,1].set_xlim(0,days) -axs[1,1].plot(simulation1.t,simulation1.Hse+simulation1.Hout,label='UCI/UTI Beds') -axs[1,1].plot(simulation2.t+tsim1,simulation2.Hse+simulation2.Hout,label='UCI/UTI Beds') -axs[1,1].scatter(RM.sochimi_tr,RM.Hr,label='Real Data') -axs[1,1].scatter(RM.sochimi_tr,RM.Hr_tot,label='Capacity Data', color = 'red') -axs[1,1].set_title('UCI/UTI Usage') -axs[1,1].axvline(x = t_end, linestyle = 'dotted',color = 'grey') - - -axs[1,2].set_xlim(0,days) -axs[1,2].plot(simulation2.t+tsim1,simulation2.V,label='VSat sim2') -axs[1,2].plot(simulation1.t,simulation1.V,label='Vsat sim1') -axs[1,2].scatter(RM.sochimi_tr,RM.Vr,label='Real Data') -axs[1,2].scatter(RM.sochimi_tr,RM.Vr_tot,label='Capacity Data',color = 'red') -axs[1,2].set_title('VMI Usage') -axs[1,2].axvline(x = t_end, linestyle = 'dotted',color = 'grey') - - -axs[2,1].plot(simulation2.t+tsim1,simulation2.V_D_d,label='V_D sim2') -axs[2,1].plot(simulation2.t+tsim1,simulation2.Hse_D_d,label='Hse_D sim2') -axs[2,1].plot(simulation2.t+tsim1,simulation2.Icr_D_d,label='Icr_D sim2') -axs[2,1].plot(simulation2.t+tsim1,simulation2.Ise_D_d,label='Ise_D sim2') -axs[2,1].plot(simulation1.t,simulation1.V_D_d,label='V_D sim1') -axs[2,1].plot(simulation1.t,simulation1.Hse_D_d,label='Hse_D sim1') -axs[2,1].plot(simulation1.t,simulation1.Icr_D_d,label='Icr_D sim1') -axs[2,1].plot(simulation1.t,simulation1.Ise_D_d,label='Ise_D sim1') -axs[2,1].set_title('VMI Usage') -axs[2,1].axvline(x = t_end, linestyle = 'dotted',color = 'grey') diff --git a/deprecated/src/SEIRHVD/SEIRHVD_Analysis.py b/deprecated/src/SEIRHVD/SEIRHVD_Analysis.py deleted file mode 100644 index 32b6e4c..0000000 --- a/deprecated/src/SEIRHVD/SEIRHVD_Analysis.py +++ /dev/null @@ -1,111 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -""" -# ----------------------- # -# # -# SEIRHVD Analysis # -# # -# ----------------------- # - -Parallelization and Meta-Analysis Library. - - -Estudiar formas más inteligentes de meter argumentos a funciones de python - -Agregar iterador sobre k - -Luego hay que resolver como generar los meta-plots: Normales, grillas, contour, what-else? - - - -""" - - -import sys -from pathlib import Path -sys.path.insert(1, 'SEIRHVD/') -sys.path.insert(1, '../src/SEIRHVD/') -sys.path.insert(1, 'src/SEIRHVD/') -sys.path.insert(1, 'src/utils/') -sys.path.insert(1, '../utils/') - -import numpy as np -from datetime import datetime -import matplotlib.pyplot as plt -from joblib import Parallel, delayed -import multiprocessing - -from class_SEIRHVD4 import SEIRHVD - - - -# Get values - -class SEIRHVDAnalysis: - def __init__(self): - self.sims = [] - self.num_cores = multiprocessing.cpu_count() - - - def sim_run(self,tsim,alpha,beta,mu,k=0,I=100,I_ac=0,I_d=0,R=0,population=1000000,expinfection = 1, SeroPrevFactor=1,intgr=0): - """ - Single SEIR Model simulation - """ - model = SEIR(tsim,alpha,beta,mu,k=k,I=I,I_ac=I_ac,I_d=I_d,R=R,population=population,expinfection = expinfection, SeroPrevFactor=SeroPrevFactor) - if intgr == 0: - print('Fast Solver') - model.integr_sci(0,tsim,0.1,False) - else: - print('Robust Solver') - model.integr(0,tsim,0.1,False) - out=model - return(out) - - def simulate_k(self,tsim,alpha,beta,mu,k=0,I=100,I_ac=0,I_d=0,R=0,population=1000000,expinfection = 1, SeroPrevFactor=1,intgr=0): - """ - Multi SEIR Model simulation - - """ - self.sims=[] - self.sims = (Parallel(n_jobs=self.num_cores, verbose=50)(delayed(self.simulate)(tsim,alpha,beta,mu,k=i,I=I,I_ac=I_ac,I_d=I_d,R=R,population=population,expinfection =expinfection, SeroPrevFactor=SeroPrevFactor,intgr=intgr) for i in k)) - - self.sims=[] - if type(alpha) == list: - self.sims = Parallel(n_jobs=self.num_cores, verbose=50)(delayed(self.sim_run)(tsim,i,beta,mu,k=j,I=I,I_ac=I_ac,I_d=I_d,R=R,population=population,expinfection =expinfection, SeroPrevFactor=SeroPrevFactor,intgr=intgr) for j in k for i in alpha) - else: - self.sims = Parallel(n_jobs=self.num_cores, verbose=50)(delayed(self.sim_run)(tsim,alpha,beta,mu,k=j,I=I,I_ac=I_ac,I_d=I_d,R=R,population=population,expinfection =expinfection, SeroPrevFactor=SeroPrevFactor,intgr=intgr) for j in k) - self.simulated = True - return(self.sims) - - - - def simulate_k2(self,tsim,alpha,beta,mu,k=0,I=100,I_ac=0,I_d=0,R=0,population=1000000,expinfection = 1, SeroPrevFactor=1,intgr=0): - self.sims=[] - for j in k: - if type(alpha) == list: - self.sims.append(Parallel(n_jobs=self.num_cores, verbose=50)(delayed(self.sim_run)(tsim,i,beta,mu,k=j,I=I,I_ac=I_ac,I_d=I_d,R=R,population=population,expinfection =expinfection, SeroPrevFactor=SeroPrevFactor,intgr=intgr) for i in alpha)) - else: - self.sims.append(self.sim_run(tsim,alpha,beta,mu,k=j,I=I,I_ac=I_ac,I_d=I_d,R=R,population=population,expinfection =expinfection, SeroPrevFactor=SeroPrevFactor,intgr=intgr)) - self.simulated = True - return(self.sims) - - - - def simulate(self,tsim,alpha,beta,mu,k=0,I=100,I_ac=0,I_d=0,R=0,population=1000000,expinfection = 1, SeroPrevFactor=1,intgr=0): - self.sims=[] - if type(alpha) == list: - self.sims = Parallel(n_jobs=self.num_cores, verbose=50)(delayed(self.sim_run)(tsim,i,beta,mu,k=k,I=I,I_ac=I_ac,I_d=I_d,R=R,population=population,expinfection =expinfection, SeroPrevFactor=SeroPrevFactor,intgr=intgr) for i in alpha) - else: - self.sims = self.sim_run(tsim,alpha,beta,mu,k=k,I=I,I_ac=I_ac,I_d=I_d,R=R,population=population,expinfection =expinfection, SeroPrevFactor=SeroPrevFactor,intgr=intgr) - self.simulated = True - return(self.sims) - - -""" - def simulate(self,intgr=0): - #params=Parallel(n_jobs=num_cores, verbose=50)(delayed(ref_test.refinepso_all)(Ir,tr,swarmsize=200,maxiter=50,omega=0.5, phip=0.5, phig=0.5,eta_r=[0,1],Q_r=[0,1],obj_func='IN')for i in range(int(rep))) - self.sims=Parallel(n_jobs=self.num_cores, verbose=50)(delayed(self.sim_run)(self.inputarray[i,0],self.inputarray[i,1],self.inputarray[i,2],self.inputarray[i,3],self.inputarray[i,4],self.inputarray[i,5],self.inputarray[i,6]) for i in range(self.inputarray.shape[0])) - self.simulated = True - return(self.sims) -""" \ No newline at end of file diff --git a/deprecated/src/SEIRHVD/SEIRHVD_Example.py b/deprecated/src/SEIRHVD/SEIRHVD_Example.py deleted file mode 100644 index 42cc1f0..0000000 --- a/deprecated/src/SEIRHVD/SEIRHVD_Example.py +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -from SEIRHVD_local import SEIRHVD_local -from datetime import datetime -import numpy as np - -# ----------------------------- # -# Model Parameters # -# ----------------------------- # - -# Region code (Chile) -tstate = '13' -# Simulation Initial date -initdate = datetime(2020,4,13) - -# Epidemiological Paramters -beta = 0.2#117 -mu = 0.9 # Initial Exposed/Infected Proportion -ScaleFactor = 1.9 # Under-reported cases proportion -SeroPrevFactor = 1 # Sero Prevalence Correction Factor -expinfection = 1 # Exposed contagion efectivity -k=10 # Kinetic Saturation Factor - -# Simulation time -tsim = 500 - -# Simulation Object Construction -simulation = SEIRHVD_local(beta = beta,mu = mu,ScaleFactor=ScaleFactor,SeroPrevFactor=SeroPrevFactor,expinfection=expinfection,initdate = initdate, tsim = tsim,tstate=tstate,k=k) - - - -# Quarantines: - -# Quaratine Initial date -qid = datetime(2020,5,15) -qit = (qid - initdate).days -# Quaratine Final date -qfd = datetime(2020,7,24) -qft = (qfd - initdate).days -# [Tsim, max_mov,rem_mov,quarantine period, quarantine initial time, quarantine final time, quarantine type] -quarantines = [[500.0, 0.85, 0.6, 0.0, qit,qft, 0.0], - [500.0, 0.85, 0.65, 0.0,qit,qft, 0.0], - [500.0, 0.85, 0.7, 0.0, qit,qft, 0.0]] - -simulation.inputarray = np.array(quarantines) # This will change during next update -simulation.addquarantine() - - -# Simulate -simulation.simulate(v=3) - -# Results -simulation.plotinfectadosactivos(days = -1, scalefactor=True) -simulation.plotinfectadosacumulados(days = -1, scalefactor=True) -simulation.plotventiladores(days = -1) -simulation.plotfallecidosacumulados(days = -1) -simulation.plotcuarentenas() - - -# Dynamical Quarantines -# Creación del objeto de simulación -simulation2 = SEIRHVD_local(beta = beta,mu = mu,ScaleFactor=ScaleFactor,SeroPrevFactor=SeroPrevFactor,expinfection=expinfection,initdate = initdate, tsim = tsim,tstate=tstate,k=k) - -# Creación del vector de cuarentenas -# [Tsim, max_mov,rem_mov,quarantine period, quarantine initial time, quarantine final time, quarantine type] -qit = (qid - initdate).days -qft = (qfd - initdate).days - -quarantines = [[500.0, 0.85, 0.65, 0.0, qit,qft, 0], - [500.0, 0.85, 0.65, 7,qit,qft, 1], - [500.0, 0.85, 0.65, 14, qit,qft, 1]] - -simulation2.inputarray = np.array(quarantines) # This will change during next update -simulation2.addquarantine() - -# Simulate -simulation2.simulate(v=3) - -# Results -simulation2.plotinfectadosactivos(days = -1, scalefactor=True) -simulation2.plotinfectadosacumulados(days = -1, scalefactor=True) -simulation2.plotventiladores(days = -1) -simulation2.plotfallecidosacumulados(days = -1) -simulation2.plotcuarentenas() diff --git a/deprecated/src/SEIRHVD/SEIRHVD_importdata.py b/deprecated/src/SEIRHVD/SEIRHVD_importdata.py deleted file mode 100644 index f242130..0000000 --- a/deprecated/src/SEIRHVD/SEIRHVD_importdata.py +++ /dev/null @@ -1,211 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -import json -import requests -import pandas as pd -from datetime import datetime -from datetime import timedelta -import numpy as np - -""" - SEIRHDV Import data -""" - -class SEIRHVD_importdata(): - # ------------------------------- # - # Importar Data Real # - # ------------------------------- # - - def importinfectadosactivos(self): - # ---------------------- # - # Infectados Activos # - # ---------------------- # - cutlist = [] - cutlistpath = "../Data/cutlist.csv" - cutlist = pd.read_csv(cutlistpath, header = None,dtype=str) - - actives = [] - mydict = None - for index, row in cutlist.iterrows(): - state = str(row[0])[0:2] - comuna = str(row[0]) - if self.tstate == state: - endpoint = "http://192.168.2.223:5006/getActiveNewCasesByComuna?comuna="+comuna - r = requests.get(endpoint) - mydict = r.json() - actives.append(mydict['actives']) - #data=pd.DataFrame(mydict) - self.Ir = (np.array(actives)).sum(axis=0) - self.Ir_dates = [datetime.strptime(mydict['dates'][i][:10],'%Y-%m-%d') for i in range(len(mydict['dates']))] - - index = np.where(np.array(self.Ir_dates) >= self.initdate)[0][0] - self.Ir=self.Ir[index:] - self.Ir_dates=self.Ir_dates[index:] - self.tr = [(self.Ir_dates[i]-self.initdate).days for i in range(len(self.Ir))] - print('Infectados Activos') - return - - - - # -------------------------------- # - # Datos Infectados acumulados # - # -------------------------------- # - def importinfectadosacumulados(self,endpoint = 'https://raw.githubusercontent.com/MinCiencia/Datos-COVID19/master/output/producto1/Covid-19.csv' ): - aux = pd.read_csv(endpoint) - self.I_ac_r = aux.loc[aux['Codigo region']==int(self.tstate)].iloc[:,5:-1].sum() - - self.I_ac_r_dates = [datetime.strptime(self.I_ac_r.index[i],'%Y-%m-%d') for i in range(len(self.I_ac_r))] - index = np.where(np.array(self.I_ac_r_dates) >= self.initdate)[0][0] - self.I_ac_r = self.I_ac_r[index:] - self.I_ac_r_dates = self.I_ac_r_dates[index:] - self.I_ac_r_tr = [(self.I_ac_r_dates[i]-self.initdate).days for i in range(len(self.I_ac_r))] - print('Infectados Acumulados') - return - - - # -------------------------------- # - # Datos Infectados diarios # - # -------------------------------- # - # Falta interpolar - def importinfectadosdiarios(self,endpoint = 'https://raw.githubusercontent.com/MinCiencia/Datos-COVID19/master/output/producto1/Covid-19.csv' ): - aux = pd.read_csv(endpoint) - I_ac_r = aux.loc[aux['Codigo region']==int(self.tstate)].iloc[:,5:-1].sum() - - I_ac_r_dates = [datetime.strptime(I_ac_r.index[i],'%Y-%m-%d') for i in range(len(I_ac_r))] - index = np.where(np.array(I_ac_r_dates) >= self.initdate)[0][0] - I_ac_r = I_ac_r[index:] - I_ac_r_dates = I_ac_r_dates[index:] - I_ac_r_tr = [(I_ac_r_dates[i]-self.initdate).days for i in range(len(I_ac_r))] - - self.I_d_r = np.diff(np.interp(list(range(I_ac_r_tr[-1])),I_ac_r_tr,I_ac_r)) - self.I_d_r_tr = list(range(len(self.I_d_r))) - self.I_d_r_dates = [self.initdate + timedelta(days=i) for i in range(len(self.I_d_r_tr))] - - - #aux = pd.read_csv(endpoint) - #I_ac_r = aux.loc[aux['Codigo region']==int(self.tstate)].iloc[:,5:-1].sum() #.diff() - #I_ac_r_dates = [datetime.strptime(I_ac_r.index[i],'%Y-%m-%d') for i in range(len(I_ac_r))] - #I_ac_r_tr = [(I_ac_r_dates[i]-self.initdate).days for i in range(len(I_ac_r))] - # - - #index = np.where(np.array(I_ac_r_dates) >= self.initdate)[0][0] - #self.I_d_r = self.I_d_r[index:] - #self.I_d_r_dates = self.I_d_r_dates[index:] - #self.I_d_r_tr = [(self.I_d_r_dates[i]-self.initdate).days for i in range(len(self.I_d_r))] - print('Infectados diarios') - return - - def importsochimi(self,endpoint = "http://192.168.2.223:5006/getBedsAndVentilationByState?state="): - # ------------------ # - # Datos Sochimi # - # ------------------ # - endpoint = endpoint+self.tstate - r = requests.get(endpoint) - mydict = r.json() - self.sochimi=pd.DataFrame(mydict) - sochimi = self.sochimi - self.Hr = sochimi['camas_ocupadas'] - self.Vr = sochimi['vmi_ocupados'] - self.Vr_tot = sochimi['vmi_totales'] - self.Hr_tot = sochimi['camas_totales'] - self.sochimi_dates = [datetime.strptime(sochimi['dates'][i][:10],'%Y-%m-%d') for i in range(len(sochimi))] - - index = np.where(np.array(self.sochimi_dates) >= self.initdate)[0][0] - self.Hr=list(self.Hr[index:]) - self.Vr=list(self.Vr[index:]) - self.Hr_tot=list(self.Hr_tot[index:]) - self.Vr_tot=(list(self.Vr_tot[index:])) - self.sochimi_dates = self.sochimi_dates[index:] - self.sochimi_tr = [(self.sochimi_dates[i]-self.initdate).days for i in range(len(self.Hr))] - print('Sochimi') - return(sochimi) - - # -------------------------------- # - # Datos Fallecidos acumulados # - # -------------------------------- # - def importfallecidosacumulados(self,endpoint = 'https://raw.githubusercontent.com/MinCiencia/Datos-COVID19/master/output/producto14/FallecidosCumulativo.csv' ): - cut = ['15','01','02','03','04','05','13','06','07','16','08','09','14','10','11','12','00'] - index = cut.index(self.tstate) - self.Br = pd.read_csv(endpoint).iloc[index][1:] - self.Br_dates = [datetime.strptime(self.Br.index[i],'%Y-%m-%d') for i in range(len(self.Br))] - index = np.where(np.array(self.Br_dates) >= self.initdate)[0][0] - self.Br = self.Br[index:] - self.Br_dates = self.Br_dates[index:] - self.Br_tr = [(self.Br_dates[i]-self.initdate).days for i in range(len(self.Br))] - print('Fallecidos Acumulados') - return - - # -------------------------------- # - # Datos PCR y polbación # - # -------------------------------- # - def importpcrpop(self,endpoint = 'https://raw.githubusercontent.com/MinCiencia/Datos-COVID19/master/output/producto7/PCR.csv'): - cut = ['15','01','02','03','04','05','13','06','07','16','08','09','14','10','11','12','00'] - index = cut.index(self.tstate) - self.population = pd.read_csv(endpoint).iloc[index]['Poblacion'] - self.pcr = pd.read_csv(endpoint).iloc[index][3:] - self.pcr_dates = [datetime.strptime(self.pcr.index[i],'%Y-%m-%d') for i in range(len(self.Br))] - index = np.where(np.array(self.Br_dates) >= self.initdate)[0][0] - self.pcr = self.pcr[index:] - self.pcr_dates = self.pcr_dates[index:] - self.pcr_tr = [(self.pcr_dates[i]-self.initdate).days for i in range(len(self.Br))] - print('PCR Y poblacion') - return - - - # -------------------------- # - # Fallecidos excesivos # - # -------------------------- # - def importfallecidosexcesivos(self,path = '/home/samuel/Documents/Dlab/data/Excess_dead_daily.csv'): - #path = '/home/samuel/Documents/Dlab/data/Excess_dead_daily.csv' - - excess_dead = pd.read_csv(path) - self.ED_RM_df = excess_dead.loc[excess_dead['Codigo region']==int(self.tstate)] - self.ED_RM = [self.ED_RM_df['Defunciones Covid'].iloc[i] + self.ED_RM_df['Exceso de muertes media poderada'].iloc[i] for i in range(len(self.ED_RM_df))] - - self.ED_RM_dates = [datetime.strptime(self.ED_RM_df['Fecha'].iloc[i], '%Y-%m-%d') for i in range(len(self.ED_RM_df))] - index = np.where(np.array(self.ED_RM_dates) >= self.initdate)[0][0] - enddate = max(self.ED_RM_dates) - indexend = np.where(np.array(self.ED_RM_dates) >= enddate)[0][0] - self.ED_RM_dates = self.ED_RM_dates[index:indexend] - self.ED_RM = self.ED_RM[index:indexend] - self.ED_RM_ac = np.cumsum(self.ED_RM) - self.ED_tr = [(self.ED_RM_dates[i]-self.initdate).days for i in range(len(self.ED_RM))] - print('Fallecidos Excesivos') - return - - - # ---------------------------------------- # - # Datos Infectados activos Minciencia # - # ---------------------------------------- # - def importinfectadosactivosminciencia(self,endpoint = 'https://raw.githubusercontent.com/MinCiencia/Datos-COVID19/master/output/producto19/CasosActivosPorComuna.csv' ): - aux = pd.read_csv(endpoint) - self.I_minciencia_r = aux.loc[aux['Codigo region']==int(self.tstate)].iloc[:,5:].sum() - - self.I_minciencia_r_dates = [datetime.strptime(self.I_minciencia_r.index[i],'%Y-%m-%d') for i in range(len(self.I_minciencia_r))] - index = np.where(np.array(self.I_minciencia_r_dates) >= self.initdate)[0][0] - self.I_minciencia_r = self.I_minciencia_r[index:] - self.I_minciencia_r_dates = self.I_minciencia_r_dates[index:] - self.I_minciencia_r_tr = [(self.I_minciencia_r_dates[i]-self.initdate).days for i in range(len(self.I_minciencia_r))] - print('Infectados Activos Minciencia') - return - - - # --------------------------- # - # Importar toda la data # - # --------------------------- # - - def importdata(self): - print('Importando Datos') - self.importfallecidosacumulados() - #self.importfallecidosexcesivos() - self.importinfectadosactivos() - self.importinfectadosactivosminciencia() - self.importsochimi() - self.importpcrpop() - self.importinfectadosdiarios() - self.importinfectadosacumulados() - print('Done') - - - diff --git a/deprecated/src/SEIRHVD/SEIRHVD_local.py b/deprecated/src/SEIRHVD/SEIRHVD_local.py deleted file mode 100644 index ddb6305..0000000 --- a/deprecated/src/SEIRHVD/SEIRHVD_local.py +++ /dev/null @@ -1,110 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -import class_SEIRHUVD3 as SD3 -import class_SEIRHUVD2 as SD2 -import class_SEIR as SEIR -import SEIRHVD_importdata -import SEIRHVD_tables -import SEIRHVD_plots -import SEIRHVD_quarantine -import SEIRHVD_vars -from datetime import datetime -from datetime import timedelta -import numpy as np -from scipy.special import expit - -""" -# ------------------------------------------- # -# # -# SEIRHDV Local Simulation # -# # -# ------------------------------------------- # - -Requires scikitis.odes library - -""" - -class SEIRHVD_local(SEIRHVD_tables.SEIRHVD_tables,SEIRHVD_plots.SEIRHVD_plots,SEIRHVD_importdata.SEIRHVD_importdata,SEIRHVD_vars.SEIRHVD_vars,SEIRHVD_quarantine.SEIRHVD_quarantine): - - def __init__(self,beta,mu,ScaleFactor=1,SeroPrevFactor=1,expinfection=1,initdate = datetime(2020,5,15), tsim = 500,tstate='',bedmodelorder=2, k = 0,I_as_prop = 0.35, I_mi_prop = 0.63,I_cr_prop = 0.007,I_se_prop = 0.013): - self.beta = beta - self.mu = mu - self.ScaleFactor = ScaleFactor - self.SeroPrevFactor = SeroPrevFactor - self.expinfection = expinfection - self.tstate = tstate - self.initdate = initdate - self.tsim = tsim - self.May15 = (datetime(2020,5,15)-initdate).days - self.k = k - self.I_as_prop = I_as_prop - self.I_mi_prop = I_mi_prop - self.I_cr_prop = I_cr_prop - self.I_se_prop = I_se_prop - - # Import real data - if tstate: - self.importdata() - self.I_act0 = self.ScaleFactor*self.Ir[0] - self.inputdata = True - Hcmodel = np.poly1d(np.polyfit(self.sochimi_tr, self.Hr_tot, bedmodelorder)) - Vcmodel = np.poly1d(np.polyfit(self.sochimi_tr, self.Vr_tot, bedmodelorder)) - Vmax = np.mean(self.Vr_tot[-7:])*1.01# 1500 Vcmodel(tsat) - Hmax = np.mean(self.Hr_tot[-7:])*1.01# self.Hcmodel(tsat) - try: - vents = [Vcmodel(t) for t in range(self.tsim)] - tsat = int(np.where(np.array(vents)>=Vmax)[0][0]) - except: - tsat = self.sochimi_tr[-1]+7 - self.Htot=lambda t: Hcmodel(t)*(1-expit(t-tsat)) + expit(t-tsat)*Hmax #1997.0 - self.Vtot=lambda t: Vcmodel(t)*(1-expit(t-tsat)) + expit(t-tsat)*Vmax - self.H0 = self.Hr[0] # Hospitalizados totales dia 0 - self.V = self.Vr[0] # Ventilados al dia de inicio - self.H_cr = 0 #Hospitalizados a la espera de un ventilador día 0 - self.B = self.Br[0] # Muertos acumulados al dia de inicio - self.D = self.Br[1]-self.Br[0] # Muertos en el dia de inicio - self.R = 0 - - self.realdata = True - else: - self.inputdata = False - print('Set initial values') - self.realdata = False - return - - def initialvalues(self,I_act0,dead,population,H0,V0,Htot,Vtot,R=0,D=0,H_cr = 0): - self.B=dead - self.D = D - self.population = population - self.I_act0 = I_act0 - self.H0=H0 - self.V=V0 - self.Htot = np.poly1d(Htot) - self.Vtot = np.poly1d(Vtot) - self.H_cr = H_cr - self.R = R - self.inputdata = True - - - - # -------------- # - # Simulate # - # -------------- # - - def simulate(self,v=3,intgr=0): - if not self.inputdata: - return('Set the initial values before running the simulation!') - - if v==2: - model = SD2.simSEIRHVD(beta = self.beta, mu = self.mu, inputarray= self.inputarray, B=self.B,D=self.D,V=self.V,I_act0=self.I_act0,R=self.R,Htot=self.Htot,Vtot=self.Vtot,H_cr=self.H_cr,H0=self.H0,expinfection=self.expinfection, SeroPrevFactor= self.SeroPrevFactor, population = self.population,intgr=intgr) - elif v==3: - model = SD3.simSEIRHVD(beta = self.beta, mu = self.mu, inputarray= self.inputarray, B=self.B,D=self.D,V=self.V,I_act0=self.I_act0,R=self.R,Htot=self.Htot,Vtot=self.Vtot,H_cr=self.H_cr,H0=self.H0,expinfection=self.expinfection, SeroPrevFactor= self.SeroPrevFactor, population = self.population,intgr=intgr,I_as_prop = self.I_as_prop, I_mi_prop = self.I_mi_prop,I_se_prop = self.I_se_prop,I_cr_prop = self.I_cr_prop,k=self.k) - elif v==0: - print('SEIR Model') - model = SEIR.simSEIRHVD(beta = self.beta, mu = self.mu, inputarray= self.inputarray, B=self.B,D=self.D,V=self.V,I_act0=self.I_act0,R=self.R,Htot=self.Htot,Vtot=self.Vtot,H_cr=self.H_cr,H0=self.H0,expinfection=self.expinfection, SeroPrevFactor= self.SeroPrevFactor, population = self.population,intgr=intgr,I_as_prop = self.I_as_prop, I_mi_prop = self.I_mi_prop,I_se_prop = self.I_se_prop,I_cr_prop = self.I_cr_prop,k=self.k) - else: - raise('Version Error') - self.sims = model.simulate() - self.localvar() - return \ No newline at end of file diff --git a/deprecated/src/SEIRHVD/SEIRHVD_plots.py b/deprecated/src/SEIRHVD/SEIRHVD_plots.py deleted file mode 100644 index c812d17..0000000 --- a/deprecated/src/SEIRHVD/SEIRHVD_plots.py +++ /dev/null @@ -1,1304 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -""" - - SEIRHDV Plot Functions - -""" -import matplotlib.pyplot as plt -from numpy import linalg as LA -import numpy as np -from datetime import datetime -from datetime import timedelta - -class SEIRHVD_plots(): - # -------------------------- # - # Plot function # - # -------------------------- # - def plot(self,title = '',xlabel='',ylabel='',legend=True): - plt.xlabel(xlabel) - plt.ylabel(ylabel) - plt.title(title) - if legend: - plt.legend(loc=0) - plt.show() - - # ---------------------------------------- # - # Datos # - # ---------------------------------------- # - def plotdatossochimi(self,enddate = datetime(2020,7,30),days=0, reales= True,ylim = 0,norm=1,scalefactor = False): - if not self.realdata: - return('No real data') - # Inicio cuarentena general - for i in range(self.numescenarios): - plt.axvline(x=self.inputarray[i][4],linestyle = 'dashed',color = 'grey') - - #ploteo de datos reales - plt.scatter(self.sochimi_tr,self.Hr,label='Camas Ocupadas reales') - plt.scatter(self.sochimi_tr,self.Vr,label='Ventiladores Ocupados reales') - plt.scatter(self.sochimi_tr,self.Hr_tot,label='Capacidad de Camas') - plt.scatter(self.sochimi_tr,self.Vr_tot,label='Capacidad de Ventiladores') - - self.plot(title = 'Datos Sochimi',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d')) - - def plotdatosventiladores(self,enddate = datetime(2020,7,30),days=0, reales= True,ylim = 0,norm=1,scalefactor = False): - if not self.realdata: - return('No real data') - # -------- # - # Time # - # -------- # - days = (enddate-self.initdate).days - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - - # Inicio cuarentena general - for i in range(self.numescenarios): - plt.axvline(x=self.inputarray[i][4],linestyle = 'dashed',color = 'grey') - - #ploteo de datos reales - plt.scatter(self.sochimi_tr,self.Vr,label='Ventiladores Ocupados reales') - plt.scatter(self.sochimi_tr,self.Vr_tot,label='Capacidad de Ventiladores') - - self.plot(title = 'Datos Sochimi - Ventiladores',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d')) - - def plotdatoscamas(self,enddate = datetime(2020,7,30),days=0, reales= True,ylim = 0,norm=1,scalefactor = False): - if not self.realdata: - return('No real data') - # Inicio cuarentena general - for i in range(self.numescenarios): - plt.axvline(x=self.inputarray[i][4],linestyle = 'dashed',color = 'grey') - - #ploteo de datos reales - plt.scatter(self.sochimi_tr,self.Hr,label='Camas Ocupadas reales') - plt.scatter(self.sochimi_tr,self.Hr_tot,label='Capacidad de Camas') - - self.plot(title = 'Datos Sochimi - Camas UCI/UTI',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d')) - - def plotdatosactivos(self,enddate = datetime(2020,7,30),days=0, reales= True,ylim = 0,norm=1,scalefactor = False,legend=True): - if not self.realdata: - return('No real data') - # Reales - if reales: - plt.scatter(self.tr,self.Ir,label='Infectados Activos reales') - - # Inicio cuarentena general - for i in range(self.numescenarios): - plt.axvline(x=self.inputarray[i][4],linestyle = 'dashed',color = 'grey') - - self.plot(title = 'Activos Reales',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d'),legend=legend) - - def plotdatosacumulados(self,enddate = datetime(2020,7,30),days=0, reales= True,ylim = 0,norm=1,scalefactor = False,legend=True): - if not self.realdata: - return('No real data') - # Reales - if reales: - plt.scatter(self.I_ac_r_tr,self.I_ac_r,label='Infectados Acumulados reales') - - # Inicio cuarentena general - for i in range(self.numescenarios): - plt.axvline(x=self.inputarray[i][4],linestyle = 'dashed',color = 'grey') - - self.plot(title = 'Infectados Acumulados Reales - EPI',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d'),legend=legend) - - def plotdatosdiarios(self,enddate = datetime(2020,7,30),days=0, reales= True,ylim = 0,norm=1,scalefactor = False,legend=True): - if not self.realdata: - return('No real data') - # Reales - if reales: - plt.scatter(self.I_d_r_tr,self.I_d_r,label='Infectados diarios reales') - - # Inicio cuarentena general - for i in range(self.numescenarios): - plt.axvline(x=self.inputarray[i][4],linestyle = 'dashed',color = 'grey') - - self.plot(title = 'Infectados Diarios Reales - EPI',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d'),legend=legend) - - - - - def plotdatosfallecidosacumulados(self,enddate = datetime(2020,7,30),days=0, reales= True,ylim = 0,norm=1,scalefactor = False,legend=True): - if not self.realdata: - return('No real data') - # Inicio cuarentena general - for i in range(self.numescenarios): - plt.axvline(x=self.inputarray[i][4],linestyle = 'dashed',color = 'grey') - - # Datos reales - if reales: - plt.scatter(self.Br_tr,self.Br,label='Fallecidos reales') - #plt.scatter(self.ED_tr,self.ED_RM_ac,label='Fallecidos excesivos proyectados') - - self.plot(title = 'Fallecidos',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d'),legend=legend) - - def plotdatosfallecidosexcesivos(self,enddate = datetime(2020,7,30),days=0, reales= True,ylim = 0,norm=1,scalefactor = False): - if not self.realdata: - return('No real data') - # Inicio cuarentena general - for i in range(self.numescenarios): - plt.axvline(x=self.inputarray[i][4],linestyle = 'dashed',color = 'grey') - - # Datos reales - plt.scatter(self.ED_tr,self.ED_RM_ac,label='Fallecidos excesivos proyectados') - self.plot(title = 'Fallecidos Excesivos',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d'),legend=legend) - # -------------------------------------------------------- # - # Uso Hospitalario # - # -------------------------------------------------------- # - - # -------------------------------------- # - # Hospitalizados desagregados # - # -------------------------------------- # - # Hospitalizados desagregados - def plothospitalizados(self,enddate = datetime(2020,7,30),days=0, reales= True,ylim = 0,norm=1,scalefactor = False): - # -------- # - # Time # - # -------- # - days = (enddate-self.initdate).days - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - for i in range(self.numescenarios): - plt.plot(self.t[i][:endD[i]],self.H_in[i][:endD[i]],label='Hin',linestyle = 'solid') - plt.plot(self.t[i][:endD[i]],self.H_out[i][:endD[i]],label='Hout',linestyle = 'solid') - plt.plot(self.t[i][:endD[i]],self.H_crin[i][:endD[i]],label='Hcr_in',linestyle = 'solid') - - self.plot(title = 'Hospitalizados',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d')) - - - - # ------------------ # - # Ventiladores # - # ------------------ # - def plotventiladores(self,enddate = datetime(2020,7,30),days=0, reales= True,ylim = 0,norm=1,scalefactor = False): - # -------- # - # Time # - # -------- # - days = (enddate-self.initdate).days - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - - # Inicio cuarentena general - - for i in range(self.numescenarios): - plt.axvline(x=self.inputarray[i][4],linestyle = 'dashed',color = 'grey') - # Fin cuarentena general - plt.axvline(x=self.inputarray[0][5],linestyle = 'dotted',color = 'grey') - - # Ploteo datos reales - if self.realdata: - if reales: - plt.scatter(self.sochimi_tr,self.Vr,label='Ventiladores Ocupados reales') - plt.scatter(self.sochimi_tr,self.Vr_tot,label='Capacidad de Ventiladores') - - - # Error y parámetros - if self.realdata: - for i in range(self.numescenarios): - plt.plot([], [], ' ', label='err_vent: '+str(round(100*self.err_vent[i],2))+'%') - - plt.plot([], [], ' ', label='beta: '+str(self.beta)) - plt.plot([], [], ' ', label='mu: '+str(self.mu)) - plt.plot([], [], ' ', label='factor B-Y: '+str(self.ScaleFactor)) - - # Fecha de peaks - for i in range(self.numescenarios): - plt.plot([], [], ' ', label='Mov='+str(self.inputarray[i][2])+'Peak='+self.peak_date[i].strftime('%Y-%m-%d')) - - - # funcion de ventiladores totales - Vtot = [self.sims[0][0].Vtot(i) for i in self.t[0][:endD[0]]] - plt.plot(self.t[0][:endD[0]],Vtot,color='lime') - - linestyle = ['dashed','solid','dashed','dotted','dotted'] - for i in range(self.numescenarios): - plt.plot(self.t[i][:endD[i]],self.V[i][:endD[i]],label='VMI Utilizados mov='+str(self.inputarray[i][2]),color = 'blue' ,linestyle = linestyle[i]) - - - plt.xlim(0,days) - self.plot(title = 'Ventiladores',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d')) - - - - # ------------ # - # Camas # - # ------------ # - def plotcamas(self,enddate = datetime(2020,7,30),days=0, reales= True,ylim = 0,norm=1,scalefactor = False): - # -------- # - # Time # - # -------- # - days = (enddate-self.initdate).days - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - #idx = [np.searchsorted(self.t[i],self.sochimi_tr) for i in range(self.numescenarios)] - - # Inicio cuarentena general - for i in range(self.numescenarios): - plt.axvline(x=self.inputarray[i][4],linestyle = 'dashed',color = 'grey') - # Fin cuarentena general - plt.axvline(x=self.inputarray[0][5],linestyle = 'dotted',color = 'grey') - - # Ploteo datos reales - if self.realdata: - if reales: - plt.scatter(self.sochimi_tr,self.Hr,label='Camas Ocupadas reales') - plt.scatter(self.sochimi_tr,self.Hr_tot,label='Capacidad de Camas') - - - # Display de Parametros y errores - if self.realdata: - for i in range(self.numescenarios): - plt.plot([], [], ' ', label='Mov='+str(self.inputarray[i][2])+'err_bed: '+str(round(100*self.err_bed[i],2))+'%') - for i in range(self.numescenarios): - plt.plot([], [], ' ', label='Mov='+str(self.inputarray[i][2])+'Peak='+self.peak_date[i].strftime('%Y-%m-%d')) - plt.plot([], [], ' ', label='beta: '+str(self.beta)) - plt.plot([], [], ' ', label='mu: '+str(self.mu)) - plt.plot([], [], ' ', label='fScale: '+str(self.ScaleFactor)) - - - # funcion de camas totales - Htot = [self.sims[0][0].Htot(i) for i in self.t[0][:endD[0]]] - plt.plot(self.t[0][:endD[0]],Htot,color='lime') - - for i in range(self.numescenarios): - plt.plot(self.t[i][:endD[i]],self.H_bed[i][:endD[i]],label='Camas utilizadas mov='+str(self.inputarray[i][2]),color = 'red' ,linestyle = 'dashed') - - #plt.plot(self.t[i][:endD[i]],self.H_bed[i][:endD[i]],label='Camas utilizadas mov='+str(inputarray[i][2]),color = 'red' ,linestyle = 'solid') - - plt.xlim(0,days) - self.plot(title = 'Camas',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d')) - - - - # -------------------------- # - # Camas y Ventiladores # - # ------------------------- # - def plotcamasyventiladores(self,enddate = datetime(2020,7,30),days=0, reales= True,ylim = 0,norm=1,scalefactor = False): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - if days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - - # Inicio cuarentena general - for i in range(self.numescenarios): - plt.axvline(x=self.inputarray[i][4],linestyle = 'dashed',color = 'grey') - # Fin cuarentena general - plt.axvline(x=self.inputarray[0][5],linestyle = 'dotted',color = 'grey') - - #ploteo de datos reales - if self.realdata: - if reales: - plt.scatter(self.sochimi_tr,self.Hr,label='Camas Ocupadas reales') - plt.scatter(self.sochimi_tr,self.Vr,label='Ventiladores Ocupados reales') - plt.scatter(self.sochimi_tr,self.Hr_tot,label='Capacidad de Camas') - plt.scatter(self.sochimi_tr,self.Vr_tot,label='Capacidad de Ventiladores') - - if self.realdata: - for i in range(self.numescenarios): - plt.plot([], [], ' ', label='Mov='+str(self.inputarray[i][2])+' err_bed: '+str(round(100*self.err_bed[i],2))+'%') - - for i in range(self.numescenarios): - plt.plot([], [], ' ', label='Mov='+str(self.inputarray[i][2])+'Peak='+self.peak_date[i].strftime('%Y-%m-%d')) - plt.plot([], [], ' ', label='beta: '+str(self.beta)) - plt.plot([], [], ' ', label='mu: '+str(self.mu)) - plt.plot([], [], ' ', label='factor de escala: '+str(self.ScaleFactor)) - - - # Camas y ventiladores totales - Htot = [self.sims[0][0].Htot(i) for i in self.t[0][:endD[0]]] - Vtot = [self.sims[0][0].Vtot(i) for i in self.t[0][:endD[0]]] - plt.plot(self.t[0][:endD[0]],Htot,color='lime') - plt.plot(self.t[0][:endD[0]],Vtot,color='lime') - - - for i in range(self.numescenarios): - plt.plot(self.t[i][:endD[i]],self.H_bed[i][:endD[i]],label='Camas utilizadas mov='+str(self.inputarray[i][2]),color = 'red' ,linestyle = 'dashed') - plt.plot(self.t[i][:endD[i]],self.V[i][:endD[i]],label='VMI Utilizados mov='+str(self.inputarray[i][2]),color = 'blue' ,linestyle = 'dashed') - #plt.plot(self.t[i][:endD[i]],H_crin[i][:endD[i]],label='Camas críticas mov='+str(inputarray[i][2]),color = 'black' ,linestyle = 'dashed') - - plt.xlim(0,days) - self.plot(title = 'Camas',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d')) - - - # ---------- # - # Hrate # - # ---------- # - def plothrate(self,enddate = datetime(2020,7,30),days=0, reales= True,ylim = 0,norm=1,scalefactor = False): - # -------- # - # Time # - # -------- # - days = (enddate-self.initdate).days - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - - Hrate = [self.H_in[i]/self.H_out[i] for i in range(self.numescenarios)] - - xlabel = 'Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d') - fig, axs = plt.subplots(3) - #fig.suptitle(title) - - - colors = ['red','blue','green','lime'] - - - for i in range(self.numescenarios): - axs[0].plot(self.t[i][:endD[i]],Hrate[i][:endD[i]], label='Mov='+str(self.inputarray[i][2]),linestyle = 'solid',color = colors[i]) - axs[0].legend() - - - for i in range(self.numescenarios): - axs[1].plot(self.t[i][:endD[i]],(self.H_in[i]/self.H_sum[i])[:endD[i]],label='Hin '+'Mov='+str(self.inputarray[i][2]),linestyle = 'solid',color = colors[i]) - axs[1].legend() - - for i in range(self.numescenarios): - axs[2].plot(self.t[i][:endD[i]],(self.H_out[i]/self.H_sum[i])[:endD[i]],label='Hout '+'Mov='+str(self.inputarray[i][2]),linestyle = 'solid',color = colors[i]) - axs[2].legend() - - axs[0].set_title('Rate Hin/Hout') - axs[1].set_title('Rate Hin/ Hsum') - axs[1].set_title('Rate Hout/Hsum') - for ax in axs.flat: - ax.label_outer() - plt.xlabel(xlabel) - plt.xlim=days - plt.show() - - - # --------------------------- # - # Camas requeridas # - # --------------------------- # - def plotcamasrequeridas(self,enddate = datetime(2020,7,30),days=0, reales= True,ylim = 0,norm=1,scalefactor = False): - # ----------- # - # Time # - # ----------- # - if days ==0: - days = (enddate-self.initdate).days - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - # ----------- # - # Plot # - # ----------- # - # Fechas de colapso - i=1 - plt.plot([], [], ' ', label='Fecha colapso Camas: '+str(round(self.t[i][self.H_colapsedate[i]]))) - plt.plot([], [], ' ', label='Fecha colapso Ventiladores: '+str(round(self.t[i][self.V_colapsedate[i]]))) - - linestyle = ['dashed','solid','dashed','dotted','dotted'] - for i in range(self.numescenarios): - plt.plot(self.t[i][:endD[i]],self.CH[i][:endD[i]],label='Intermedio/Intensivo Mov = '+str(self.inputarray[i][1]),color = 'red' ,linestyle = linestyle[i]) - plt.plot(self.t[i][:endD[i]],self.CV[i][:endD[i]],label='VMI Mov = '+str(self.inputarray[i][1]),color = 'blue' ,linestyle = linestyle[i]) - - self.plot(title='Camas Requeridas',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d')) - - - # ------------------------------------ # - # Necesidad total de Camas # - # ------------------------------------ # - def plotnecesidadtotcamas(self,enddate = datetime(2020,7,30),days=0, reales= True,ylim = 0,norm=1,scalefactor = False): - # ----------- # - # Time # - # ----------- # - if days ==0: - days = (enddate-self.initdate).days - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - # ----------- # - # Plot # - # ----------- # - - # Fechas de colapso - i=1 - plt.plot([], [], ' ', label='Fecha colapso Camas: '+str(round(self.t[i][self.H_colapsedate[i]]))) - plt.plot([], [], ' ', label='Fecha colapso Ventiladores: '+str(round(self.t[i][self.V_colapsedate[i]]))) - - # Datos reales - if self.realdata: - if reales: - plt.scatter(self.sochimi_tr,self.Hr,label='Camas Ocupadas reales') - plt.scatter(self.sochimi_tr,self.Vr,label='Ventiladores Ocupados reales') - plt.scatter(self.sochimi_tr,self.Hr_tot,label='Capacidad de Camas') - plt.scatter(self.sochimi_tr,self.Vr_tot,label='Capacidad de Ventiladores') - - linestyle = ['dashed','solid','dashed','dotted','dotted'] - for i in range(self.numescenarios): - plt.plot(self.t[i][:endD[i]],np.array(self.CH[i][:endD[i]])+np.array(self.H_sum[i][:endD[i]]),label='UCI/UTI Mov = '+str(self.inputarray[i][1]),color = 'red' ,linestyle = linestyle[i]) - plt.plot(self.t[i][:endD[i]],np.array(self.CV[i][:endD[i]])+np.array(self.V[i][:endD[i]]),label='VMI Mov = '+str(self.inputarray[i][1]),color = 'blue' ,linestyle = linestyle[i]) - self.plot(title='Necesidad total de Camas',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d')) - - - - - # -------------------------------------------------------- # - # Infectados # - # -------------------------------------------------------- # - - # ------------------------------ # - # Infectados Activos # - # ------------------------------ # - def plotinfectadosactivos(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False,legend=True,minciencia = True): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - if days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - Isf = norm - if scalefactor: - Isf = self.ScaleFactor*norm - - - # ----------- # - # Plot # - # ----------- # - # Error - if self.realdata: - if minciencia: - for i in range(self.numescenarios): - plt.plot([], [], ' ', label='err: '+str(round(100*self.err_Iactives_minciencia[i],2))+'%'+' Mov = '+str(self.inputarray[i][2])) - - else: - for i in range(self.numescenarios): - plt.plot([], [], ' ', label='err: '+str(round(100*self.err_Iactives[i],2))+'%'+' Mov = '+str(self.inputarray[i][2])) - - # Parametros: - plt.plot([], [], ' ', label='beta: '+str(self.beta)) - plt.plot([], [], ' ', label='mu: '+str(self.mu)) - plt.plot([], [], ' ', label='ScaleFactor: '+str(self.ScaleFactor)) - plt.plot([], [], ' ', label='k: '+str(self.k)) - plt.plot([], [], ' ', label='seroprev: '+str(self.SeroPrevFactor)) - if scalefactor: - for i in range(self.numescenarios): - plt.plot([], [], ' ', label='SeroPrev Norm: '+str(round(self.infectedpop_norm[i],2))+'%'+' Mov = '+str(self.inputarray[i][2])) - else: - for i in range(self.numescenarios): - plt.plot([], [], ' ', label='SeroPrev: '+str(round(self.infectedpop[i],2))+'%'+' Mov = '+str(self.inputarray[i][2])) - - - # Reales - if self.realdata: - if reales: - if minciencia: - plt.scatter(self.I_minciencia_r_tr,self.I_minciencia_r,label='Infectados Activos Minciencia') - else: - plt.scatter(self.tr,self.Ir,label='Infectados Activos reales') - - - # Inicio cuarentena general - for i in range(self.numescenarios): - plt.axvline(x=self.inputarray[i][4],linestyle = 'dashed',color = 'grey') - # Fin cuarentena general - plt.axvline(x=self.inputarray[0][5],linestyle = 'dotted',color = 'grey') - - # Infectados - linestyle = ['dashed','solid','dashed','dotted','dotted','dashed','solid','dashed','dotted','dotted'] - #linestyle = ['dashed','solid','dashed','solid','dotted'] - colors = ['red','blue','green','purple','black','lime','cyan','m','indigo','orange','orangered','wheat','salmon'] - #colors = ['lime','lime','purple','purple','black'] - for i in range(self.numescenarios): - plt.plot(self.t[i],self.I_act[i]/Isf,label='Infectados Mov = '+str(self.inputarray[i][2]),color = colors[i],linestyle=linestyle[i],linewidth=2) - - if days >0: - plt.xlim(0,days) - if ylim >0: - plt.ylim(0,ylim) - self.plot(title = 'Activos',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d'),legend=legend) - - - # --------------------------------------- # - # Infectados Activos Reportados # - # --------------------------------------- # - def plotinfectadosactivosreportados(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False,legend=True,minciencia = True,mildfound=1): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - if days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - Isf = norm - if scalefactor: - Isf = self.ScaleFactor*norm - - - # ----------- # - # Plot # - # ----------- # - # Error - if self.realdata: - if minciencia: - for i in range(self.numescenarios): - plt.plot([], [], ' ', label='err: '+str(round(100*self.err_Iactives_minciencia[i],2))+'%'+' Mov = '+str(self.inputarray[i][2])) - - else: - for i in range(self.numescenarios): - plt.plot([], [], ' ', label='err: '+str(round(100*self.err_Iactives[i],2))+'%'+' Mov = '+str(self.inputarray[i][2])) - - # Parametros: - plt.plot([], [], ' ', label='beta: '+str(self.beta)) - plt.plot([], [], ' ', label='mu: '+str(self.mu)) - plt.plot([], [], ' ', label='UnderReportFactor: '+str(self.ScaleFactor)) - plt.plot([], [], ' ', label='k: '+str(self.k)) - plt.plot([], [], ' ', label='seroprev: '+str(self.SeroPrevFactor)) - if scalefactor: - for i in range(self.numescenarios): - plt.plot([], [], ' ', label='SeroPrev Norm: '+str(round(self.infectedpop_norm[i],2))+'%'+' Mov = '+str(self.inputarray[i][2])) - else: - for i in range(self.numescenarios): - plt.plot([], [], ' ', label='SeroPrev: '+str(round(self.infectedpop[i],2))+'%'+' Mov = '+str(self.inputarray[i][2])) - - - # Reales - if self.realdata: - if reales: - if minciencia: - plt.scatter(self.I_minciencia_r_tr,self.I_minciencia_r,label='Infectados Activos Minciencia') - else: - plt.scatter(self.tr,self.Ir,label='Infectados Activos reales') - - - # Inicio cuarentena general - for i in range(self.numescenarios): - plt.axvline(x=self.inputarray[i][4],linestyle = 'dashed',color = 'grey') - # Fin cuarentena general - plt.axvline(x=self.inputarray[0][5],linestyle = 'dotted',color = 'grey') - - # Infectados - linestyle = ['dashed','solid','dashed','dotted','dotted'] - #linestyle = ['dashed','solid','dashed','solid','dotted'] - colors = ['red','blue','green','purple','black'] - #colors = ['lime','lime','purple','purple','black'] - I_reported = [self.I_se[i]+self.I_cr[i]+mildfound*self.I_mi[i] for i in range(self.numescenarios)] - - for i in range(self.numescenarios): - plt.plot(self.t[i],I_reported[i]/Isf,label='Infectados Mov = '+str(self.inputarray[i][2]),color = colors[i],linestyle=linestyle[i],linewidth=2) - - if days >0: - plt.xlim(0,days) - if ylim >0: - plt.ylim(0,ylim) - self.plot(title = 'Activos Reportados',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d'),legend=legend) - - - - # ------------------------------------------ # - # Infectados Activos Desagregados # - # ------------------------------------------ # - - def plotinfectadosactivosdesagregados(self,enddate = datetime(2020,7,30),days=0, reales= True,ylim = 0,norm=1,scalefactor = False): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - if days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - - # ----------- # - # Plot # - # ----------- # - # Error - #for i in range(self.numescenarios): - # plt.plot([], [], ' ', label='err: '+str(round(100*err[i],2))+'%') - - # Reales - if self.realdata: - if reales: - plt.scatter(self.tr,self.Ir,label='Infectados Activos reales') - - # Infectados - for i in range(self.numescenarios): - #plt.plot(self.t[i],I[i],label='Infectados ) - plt.plot(self.t[i],self.I_as[i],label='Activos asintomáticos Mov = '+str(self.inputarray[i][2])) - plt.plot(self.t[i],self.I_mi[i],label='Activos Mild Mov = '+str(self.inputarray[i][2])) - plt.plot(self.t[i],self.I_se[i],label='Activos Severos Mov = '+str(self.inputarray[i][2])) - plt.plot(self.t[i],self.I_cr[i],label='Activos Criticos Mov = '+str(self.inputarray[i][2])) - - if days >0: - plt.xlim(0,days) - if ylim >0: - plt.ylim(0,ylim) - self.plot(title = 'Infectados Activos desagregados',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d')) - - # -------------------------------- # - # Infectados Acumulados # - # -------------------------------- # - # No esta listo - def plotinfectadosacumulados(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - if days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - Isf = norm - if scalefactor: - Isf = self.ScaleFactor*norm - - # ----------- # - # Plot # - # ----------- # - - # Error - #for i in range(self.numescenarios): - # plt.plot([], [], ' ', label='err: '+str(round(100*self.err[i],2))+'%') - - # Inicio cuarentena general - for i in range(self.numescenarios): - plt.axvline(x=self.inputarray[i][4],linestyle = 'dashed',color = 'grey') - # Fin cuarentena general - plt.axvline(x=self.inputarray[0][5],linestyle = 'dotted',color = 'grey') - - # Reales - if self.realdata: - if reales: - plt.scatter(self.I_ac_r_tr,self.I_ac_r,label='Infectados Activos reales') - - # Infectados - for i in range(self.numescenarios): - plt.plot(self.t[i],self.Iac[i]/Isf,label='Infectados Mov = '+str(self.inputarray[i][2])) - - if days >0: - plt.xlim(0,days) - if ylim >0: - plt.ylim(0,ylim) - self.plot(title = 'Infectados Acumulados',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d')) - - - # -------------------------------------------- # - # Infectados Acumulados Desagregados # - # -------------------------------------------- # - - def plotinfectadosacumuladosdesagregados(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - if days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - Isf = norm - if scalefactor: - Isf = self.ScaleFactor*norm - - # ----------- # - # Plot # - # ----------- # - # Error - #for i in range(self.numescenarios): - # plt.plot([], [], ' ', label='err: '+str(round(100*self.err[i],2))+'%') - - # Reales - #if reales: - # plt.scatter(tr,Ir,label='Infectados Activos reales') - - # Infectados - - for i in range(self.numescenarios): - #plt.plot(self.t[i],I[i],label='Infectados ) - plt.plot(self.t[i],self.I_as_ac[i],label='Acumulados asintomáticos Mov = '+str(self.inputarray[i][2])) - plt.plot(self.t[i],self.I_mi_ac[i],label='Acumulados Mild Mov = '+str(self.inputarray[i][2])) - plt.plot(self.t[i],self.I_se_ac[i],label='Acumulados Severos Mov = '+str(self.inputarray[i][2])) - plt.plot(self.t[i],self.I_cr_ac[i],label='Acumulados Criticos Mov = '+str(self.inputarray[i][2])) - - if days >0: - plt.xlim(0,days) - if ylim >0: - plt.ylim(0,ylim) - self.plot(title = 'Infectados Acumulados desagregados',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d')) - - # ------------------------------ # - # Infectados Diarios # - # ------------------------------ # - def plotinfectadosdiarios(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - if days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - idx = [np.searchsorted(self.t[i],range(days)) for i in range(self.numescenarios)] - - # Reales - if self.realdata: - if reales: - plt.scatter(self.I_d_r_tr,self.I_d_r,label='Infectados diarios reales') - - - # Inicio cuarentena general - for i in range(self.numescenarios): - plt.axvline(x=self.inputarray[i][4],linestyle = 'dashed',color = 'grey') - - Idiarios = [self.I_as_d[i]+self.I_mi_d[i]+self.I_se_d[i]+self.I_cr_d[i] for i in range(self.numescenarios)] - - - - for i in range(self.numescenarios): - plt.plot(self.t[i][:(endD[i])],Idiarios[i][:endD[i]],label='Infectados Mov = '+str(self.inputarray[i][2])) - - if days >0: - plt.xlim(0,days) - self.plot(title = 'Infectados Diarios',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d')) - - - # ------------------------------------------ # - # Infectados Diarios Desagregados # - # ------------------------------------------ # - - def plotinfectadosdiariosdesagregados(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - if days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - Isf = norm - if scalefactor: - Isf = self.ScaleFactor*norm - - # ----------- # - # Plot # - # ----------- # - # Error - #for i in range(self.numescenarios): - # plt.plot([], [], ' ', label='err: '+str(round(100*self.err[i],2))+'%') - - # Reales - #if reales: - # plt.scatter(tr,Ir,label='Infectados Activos reales') - - # Infectados - - for i in range(self.numescenarios): - #plt.plot(self.t[i],I[i],label='Infectados ) - plt.plot(self.t[i],self.I_as_d[i],label='Diarios asintomáticos Mov = '+str(self.inputarray[i][2])) - plt.plot(self.t[i],self.I_mi_d[i],label='Diarios Mild Mov = '+str(self.inputarray[i][2])) - plt.plot(self.t[i],self.I_se_d[i],label='Diarios Severos Mov = '+str(self.inputarray[i][2])) - plt.plot(self.t[i],self.I_cr_d[i],label='Diarios Criticos Mov = '+str(self.inputarray[i][2])) - - if days >0: - plt.xlim(0,days) - if ylim >0: - plt.ylim(0,ylim) - self.plot(title = 'Infectados Diarios desagregados',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d')) - - - - # ------------------------------------------------------------------------------------------------------- # - # Fallecidos # - # ------------------------------------------------------------------------------------------------------- # - - # --------------------------------- # - # Fallecidos acumulados # - # --------------------------------- # - def plotfallecidosacumulados(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False,legend=True): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - elif days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - - if norm <1: - norm = self.ScaleFactor - #Isf = 1 - #if scalefactor: - # Isf = ScaleFactor - - - # Inicio cuarentena general - plt.axvline(x=self.inputarray[0][4],linestyle = 'dashed',color = 'grey') - # Fin cuarentena general - plt.axvline(x=self.inputarray[0][5],linestyle = 'dashed',color = 'grey') - - # ----------- # - # Plot # - # ----------- # - # Parametros - plt.plot([], [], ' ', label='beta: '+str(self.beta)) - plt.plot([], [], ' ', label='mu: '+str(self.mu)) - plt.plot([], [], ' ', label='factor de escala: '+str(self.ScaleFactor)) - - # Fecha de Peak - #for i in range(self.numescenarios): - # plt.plot([], [], ' ', label='Mov='+str(self.inputarray[i][2])+'Peak='+self.peak_date[i].strftime('%Y-%m-%d')) - # Error - #for i in range(self.numescenarios): - # plt.plot([], [], ' ', label='Mov='+str(self.inputarray[i][2])+'err: '+str(round(100*err[i],2))+'%') - - # Datos reales - if self.realdata: - if reales: - plt.scatter(self.Br_tr,self.Br,label='Fallecidos reales') - #plt.scatter(self.ED_tr,self.ED_RM_ac,label='Fallecidos excesivos proyectados') - - linestyle = ['dashed','solid','dashed','dotted','dotted'] - #linestyle = ['dashed','solid','dashed','solid','dotted'] - colors = ['red','blue','green','purple','black'] - #colors = ['lime','lime','purple','purple','black'] - for i in range(self.numescenarios): - plt.plot(self.t[i][:endD[i]],self.B[i][:endD[i]]/norm,label='Fallecidos Mov = '+str(self.inputarray[i][2]),color = colors[i],linestyle=linestyle[i],linewidth=2) - - plt.xlim(0,days) - if ylim >0: - plt.ylim(0,ylim) - - self.plot(title = 'Fallecidos',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d'),legend=legend) - - - - # ----------------------------- # - # Fallecidos diarios # - # ----------------------------- # - def plotfallecidosdiarios(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False,legend=True): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - elif days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - - Isf = 1 - if scalefactor: - Isf = self.ScaleFactor - - linestyle = ['dashed','solid','dashed','dotted','dotted'] - for i in range(self.numescenarios): - plt.plot(self.t[i],self.D[i]/Isf,label='Mov = '+str(self.inputarray[i][2]),color = 'black' ,linestyle = linestyle[i]) - self.plot(title = 'Fallecidos diarios',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d')) - - # ------------------------------------------- # - # Fallecidos Desagregados Acumulados # - # ------------------------------------------- # - def plotfallecidosdesagregados(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False,legend=True, accumulated = True): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - elif days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - - Isf = 1 - if scalefactor: - Isf = self.ScaleFactor - - linestyle = ['solid','dashed','solid','dashed','dotted','dotted'] - if accumulated: - for i in range(self.numescenarios): - plt.plot(self.t[i],self.H_crD[i]/Isf,label='H_crD - Mov = '+str(self.inputarray[i][2]),linestyle = linestyle[i]) - plt.plot(self.t[i],self.I_crD[i]/Isf,label='I_crD - Mov = '+str(self.inputarray[i][2]),linestyle = linestyle[i]) - plt.plot(self.t[i],self.I_seD[i]/Isf,label='I_seD - Mov = '+str(self.inputarray[i][2]),linestyle = linestyle[i]) - plt.plot(self.t[i],self.VD[i]/Isf,label='VD - Mov = '+str(self.inputarray[i][2]),color = 'black' ,linestyle = linestyle[i]) - else: - for i in range(self.numescenarios): - plt.plot(self.t[i],self.H_crD_d[i]/Isf,label='H_crD - Mov = '+str(self.inputarray[i][2]),linestyle = linestyle[i]) - plt.plot(self.t[i],self.I_crD_d[i]/Isf,label='I_crD - Mov = '+str(self.inputarray[i][2]),linestyle = linestyle[i]) - plt.plot(self.t[i],self.I_seD_d[i]/Isf,label='I_seD - Mov = '+str(self.inputarray[i][2]),linestyle = linestyle[i]) - plt.plot(self.t[i],self.VD_d[i]/Isf,label='VD - Mov = '+str(self.inputarray[i][2]),color = 'black' ,linestyle = linestyle[i]) - self.plot(title = 'Hospitalized Deaths',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d')) - - - # ------------------------------------------------ # - # Infectados Críticos Fallecidos acumulados # - # ------------------------------------------------ # - def plotfallecidosIcriticos(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False,legend=True, accumulated = True): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - elif days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - - Isf = 1 - if scalefactor: - Isf = self.ScaleFactor - - linestyle = ['dashed','solid','dashed','dotted','dotted'] - if accumulated: - for i in range(self.numescenarios): - plt.plot(self.t[i],self.I_crD[i]/Isf,label='Mov = '+str(self.inputarray[i][2]),color = 'black' ,linestyle = linestyle[i]) - else: - for i in range(self.numescenarios): - plt.plot(self.t[i],self.I_crD_d[i]/Isf,label='Mov = '+str(self.inputarray[i][2]),color = 'black' ,linestyle = linestyle[i]) - self.plot(title = 'Critical Infected Deaths',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d')) - - # ------------------------------------------------ # - # Infectados Severos Fallecidos acumulados # - # ------------------------------------------------ # - def plotfallecidosIseveros(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False,legend=True, accumulated = True): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - elif days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - - Isf = 1 - if scalefactor: - Isf = self.ScaleFactor - - linestyle = ['dashed','solid','dashed','dotted','dotted'] - if accumulated: - for i in range(self.numescenarios): - plt.plot(self.t[i],self.I_seD[i]/Isf,label='Mov = '+str(self.inputarray[i][2]),color = 'black' ,linestyle = linestyle[i]) - else: - for i in range(self.numescenarios): - plt.plot(self.t[i],self.I_seD_d[i]/Isf,label='Mov = '+str(self.inputarray[i][2]),color = 'black' ,linestyle = linestyle[i]) - self.plot(title = 'Severe Infected Deaths',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d')) - - - # --------------------------------------- # - # Ventilados Fallecidos acumulados # - # --------------------------------------- # - def plotfallecidosventilados(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False,legend=True, accumulated = True): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - elif days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - - Isf = 1 - if scalefactor: - Isf = self.ScaleFactor - - linestyle = ['dashed','solid','dashed','dotted','dotted'] - if accumulated: - for i in range(self.numescenarios): - plt.plot(self.t[i],self.VD[i]/Isf,label='Mov = '+str(self.inputarray[i][2]),color = 'black' ,linestyle = linestyle[i]) - else: - for i in range(self.numescenarios): - plt.plot(self.t[i],self.VD_d[i]/Isf,label='Mov = '+str(self.inputarray[i][2]),color = 'black' ,linestyle = linestyle[i]) - self.plot(title = 'Ventilated Deaths',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d')) - - # ------------------------------------------- # - # Hospitalizados Fallecidos acumulados # - # ------------------------------------------- # - def plotfallecidoshospitalizados(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False,legend=True, accumulated = True): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - elif days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - - Isf = 1 - if scalefactor: - Isf = self.ScaleFactor - - linestyle = ['dashed','solid','dashed','dotted','dotted'] - if accumulated: - for i in range(self.numescenarios): - plt.plot(self.t[i],self.H_crD[i]/Isf,label='Mov = '+str(self.inputarray[i][2]),color = 'black' ,linestyle = linestyle[i]) - else: - for i in range(self.numescenarios): - plt.plot(self.t[i],self.H_crD_d[i]/Isf,label='Mov = '+str(self.inputarray[i][2]),color = 'black' ,linestyle = linestyle[i]) - self.plot(title = 'Hospitalized Deaths',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d')) - - - # ---------------------- # - # Letalidad # - # ---------------------- # - - def plotletalidad(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False,legend=True): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - elif days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - if norm <1: - norm = self.ScaleFactor - #Isf = 1 - #if scalefactor: - # Isf = ScaleFactor - - - # ----------- # - # Plot # - # ----------- # - # Parametros - plt.plot([], [], ' ', label='beta: '+str(self.beta)) - plt.plot([], [], ' ', label='mu: '+str(self.mu)) - plt.plot([], [], ' ', label='factor de escala: '+str(self.ScaleFactor)) - - # Inicio cuarentena general - for i in range(self.numescenarios): - plt.axvline(x=self.inputarray[i][4],linestyle = 'dashed',color = 'grey') - # Fin cuarentena general - plt.axvline(x=self.inputarray[0][5],linestyle = 'dotted',color = 'grey') - - # Infectados - linestyle = ['dashed','solid','dashed','dotted','dotted'] - #linestyle = ['dashed','solid','dashed','solid'] - colors = ['red','blue','green','purple','black'] - #colors = ['lime','lime','purple','purple','black'] - - # Fecha de Peak - #for i in range(self.numescenarios): - # plt.plot([], [], ' ', label='Mov='+str(self.inputarray[i][2])+'Peak='+self.peak_date[i].strftime('%Y-%m-%d')) - - # Error - #for i in range(self.numescenarios): - # plt.plot([], [], ' ', label='Mov='+str(self.inputarray[i][2])+'err: '+str(round(100*err[i],2))+'%') - - - # Datos reales - #if reales: - # plt.scatter(Br_tr,Br,label='Fallecidos reales') - # plt.scatter(self.ED_tr,self.ED_RM_ac,label='Fallecidos excesivos proyectados') - - linestyle = ['dashed','solid','dashed','dotted','dotted'] - linestyle = ['dashed','solid','dashed','solid','dotted'] - colors = ['red','blue','green','purple','black'] - colors = ['lime','lime','purple','purple','black'] - for i in range(self.numescenarios): - plt.plot(self.t[i],100*self.B[i]/self.Iac[i],label='Mov=['+str(self.inputarray[i][2])+','+str(self.inputarray[i][1])+']' ,color=colors[i],linestyle=linestyle[i],linewidth=2) - - plt.xlim(0,days) - if ylim >0: - plt.ylim(0,ylim) - - self.plot(title = 'Letalidad',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d')) - - - - - - # ------------------ # - # Expuestos # - # ------------------ # - def plotexpuestos(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False,legend=True): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - elif days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - if norm <1: - norm = self.ScaleFactor - #Isf = 1 - #if scalefactor: - # Isf = ScaleFactor - - # ----------- # - # Plot # - # ----------- # - # Parametros - plt.plot([], [], ' ', label='beta: '+str(self.beta)) - plt.plot([], [], ' ', label='mu: '+str(self.mu)) - plt.plot([], [], ' ', label='factor de escala: '+str(self.ScaleFactor)) - - # Fecha de Peak - for i in range(self.numescenarios): - plt.plot([], [], ' ', label='Mov='+str(self.inputarray[i][2])+'Peak='+self.peak_date[i].strftime('%Y-%m-%d')) - - - linestyle = ['dashed','solid','dashed','dotted','dotted'] - for i in range(self.numescenarios): - plt.plot(self.t[i][:endD[i]],self.E[i][:endD[i]],label='Expuestos Mov = '+str(self.inputarray[i][2]),color = 'blue',linestyle=linestyle[i]) - plt.plot(self.t[i][:endD[i]],self.E_sy[i][:endD[i]],label='Expuestos sintomáticos Mov = '+str(self.inputarray[i][2]),color = 'red',linestyle=linestyle[i]) - - plt.xlim(0,days) - if ylim >0: - plt.ylim(0,ylim) - - self.plot(title = 'Expuestos',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d'),legend=legend) - - - - # -------------------- # - # Curvas SEIR # - # -------------------- # - def plotseird(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False,seird = [1,1,1,1,1]): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - elif days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - - if norm <1: - norm = self.ScaleFactor - #Isf = 1 - #if scalefactor: - # Isf = ScaleFactor - - # ----------- # - # Plot # - # ----------- # - # Parametros - plt.plot([], [], ' ', label='beta: '+str(self.beta)) - plt.plot([], [], ' ', label='mu: '+str(self.mu)) - plt.plot([], [], ' ', label='factor de escala: '+str(self.ScaleFactor)) - - # Fecha de Peak - for i in range(self.numescenarios): - plt.plot([], [], ' ', label='Mov='+str(self.inputarray[i][2])+'Peak='+self.peak_date[i].strftime('%Y-%m-%d')) - - - linestyle = ['solid','dashed','dotted','solid','dashed','dotted'] - for i in range(self.numescenarios): - plt.plot(self.t[i],self.S[i],label='Susceptibles Mov = '+str(self.inputarray[i][2]),linestyle=linestyle[i]) - plt.plot(self.t[i],self.I[i],label='Infectados Mov = '+str(self.inputarray[i][2]),linestyle=linestyle[i]) - plt.plot(self.t[i],self.E[i],label='Expuestos Mov = '+str(self.inputarray[i][2]),linestyle=linestyle[i]) - plt.plot(self.t[i],self.R[i],label='Recuperados Mov = '+str(self.inputarray[i][2]),linestyle=linestyle[i]) - #plt.plot(self.t[i],D[i],label='Muertos diarios Mov = '+str(inputarray[i][2]),linestyle=linestyle[i]) - plt.plot(self.t[i],self.B[i],label='Enterrados Mov = '+str(self.inputarray[i][2]),linestyle=linestyle[i]) - - plt.xlim(0,days) - if ylim >0: - plt.ylim(0,ylim) - - self.plot(title = 'Curvas SEIR',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d')) - - - # ------------------------- # - # Plot Cuarentenas # - # ------------------------- # - def plotcuarentenas(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False): - # -------- # - # Time # - # -------- # - if days == 0: - days = (enddate-self.initdate).days - if days < 0: - days = self.tsim - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - # ----------- # - # Plot # - # ----------- # - # Inicio cuarentena general - for i in range(self.numescenarios): - plt.axvline(x=self.inputarray[i][4],linestyle = 'dashed',color = 'grey') - # Fin cuarentena general - plt.axvline(x=self.inputarray[0][5],linestyle = 'dotted',color = 'grey') - - - # cuarentenas - linestyle = ['dashed','dotted','-.','*',':'] - for i in range(self.numescenarios): - plt.plot(self.t[i],self.quarantines[i],label='Cuarentena Mov = '+str(self.inputarray[i][2])) - - if days >0: - plt.xlim(0,days) - self.plot(title = 'Cuarentenas',xlabel='Dias desde '+datetime.strftime(self.initdate,'%Y-%m-%d')) - - - """ - # ------------------------------------------ # - # Graficos para parametrización # - # ------------------------------------------ # - - # ----------------------------------------- # - # Curvas Expuestos/Infectados # - # ----------------------------------------- # - def plotexpuestosinfectados(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False,seird = [1,1,1,1,1]): - enddate = datetime(2020,6,30) - days = (enddate-self.initdate).days - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - EIrate = [self.E[i]/self.I_sum[i] for i in range(self.numescenarios)] - - for i in range(self.numescenarios): - plt.plot(self.t[i][:endD[i]],EIrate[:endD[i]],label='Tasa Expuestos/Infectados') - self.plot(title='Expuestos/infectados - mu ='+str(self.mu)+' beta='+str(self.beta)) - - - - - # ------------------------ # - # Curvas H/I # - # ------------------------ # - def plothospitalizadosinfectados(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False,seird = [1,1,1,1,1]): - #initday = self.initdate#date(2020,3,15) - enddate = datetime(2020,6,30) - days = (enddate-self.initdate).days - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - HIrate = [self.H_sum[i]/self.I_sum[i] for i in range(self.numescenarios)] - for i in range(self.numescenarios): - plt.plot(self.t[i][:endD[i]],HIrate[:endD[i]],label='Tasa Expuestos/Infectados') - self.plot(title='H/I - mu ='+str(self.mu)+' beta='+str(self.beta)) - - - # ------------------------ # - # Curvas V/I # - # ------------------------ # - def plotventiladosinfectados(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False,seird = [1,1,1,1,1]): - #initday = self.initdate#date(2020,3,15) - enddate = datetime(2020,6,30) - days = (enddate-self.initdate).days - days = 200 - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - - VIrate = [self.V[i]/self.I_sum[i] for i in range(self.numescenarios)] - for i in range(self.numescenarios): - plt.plot(self.t[i][:endD[i]],VIrate[:endD[i]],label='Tasa Expuestos/Infectados') - self.plot(title='V/I - mu ='+str(self.mu)+' beta='+str(self.beta)) - - - # ------------------------ # - # Curvas V/H # - # ------------------------- # - def plotventiladoshospitalizados(self,enddate = datetime(2020,7,30),days=-1, reales= True,ylim = 0,norm=1,scalefactor = False,seird = [1,1,1,1,1]): - initday = self.initdate#date(2020,3,15) - enddate = datetime(2020,6,30) - days = (enddate-self.initdate).days - endD = [np.searchsorted(self.t[i],days) for i in range(self.numescenarios)] - VHrate = [self.V[i]/self.H_sum[i] for i in range(self.numescenarios)] - for i in range(self.numescenarios): - plt.plot(self.t[i][:endD[i]],VHrate[:endD[i]],label='Tasa Expuestos/Infectados') - self.plot(title='V/H - mu ='+str(self.mu)+' beta='+str(self.beta)) - - - """ \ No newline at end of file diff --git a/deprecated/src/SEIRHVD/SEIRHVD_quarantine.py b/deprecated/src/SEIRHVD/SEIRHVD_quarantine.py deleted file mode 100644 index 917e171..0000000 --- a/deprecated/src/SEIRHVD/SEIRHVD_quarantine.py +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -import numpy as np - -""" -# ------------------------------------------------- # -# # -# SEIRHDV Quarantine Scenarios Definition # -# # -# ------------------------------------------------- # - -Quarantine array: -np.array([tsim,max_mov,rem_mov,qp,iqt,fqt,movfunct]) - -* tsim: Tiempo de simulación -* max_mov: Movilidad máxima durante tiempo sin cuarentena -* rem_mov: Movilidad remanente durante tiempo de cuarentena -* qp: Periodo de Cuarentena para cuarentenas alternantes - qp días con cuarentena, luego qp días sin cuarentena -* iqt: Día de inicio de cuarentena (desde el inicio de la simulación) -* fqt: Día de fin de cuarentena (desde el inicio de la simulación) -* movfunct: Función de movilidad - * 0: Cuarentena total durante el período comprendido entre iqt y fqt - * 1: Cuarentena alternante tipo onda Cuadrada con período qp - * 2: Cuarnetena tipo diente de cierra con período qp - - -""" - -class SEIRHVD_quarantine(): - #------------------------------------------------- # - # Definir Escenarios # - #------------------------------------------------- # - #tsim,max_mov,rem_mov,qp,iqt,fqt,movfunct - def defaultescenarios(self): - self.inputarray=np.array([ - [self.tsim,0.85,0.6,0,self.May15,500,0], - [self.tsim,0.85,0.65,0,self.May15,500,0], - [self.tsim,0.85,0.7,0,self.May15,500,0]]) - self.numescenarios = len(self.inputarray) - - def addquarantine(self,tsim=None,max_mov=None,rem_mov=None,qp=None,iqt=None,fqt=None,movfunct=None): - if tsim: - self.inputarray.append([tsim,max_mov,rem_mov,qp,iqt,fqt,movfunct]) - self.numescenarios= len(self.inputarray) - return() - - #def addquarantinevector(self,tsim=None,max_mov=None,rem_mov=None,qp=None,iqt=None,fqt=None,movfunct=None): - # if tsim: - # self.inputarray.append([tsim,max_mov,rem_mov,qp,iqt,fqt,movfunct]) - # self.numescenarios= len(self.inputarray) - # return() - - # traspasarlo a lenguaje humao - def showscenarios(self): - print(self.inputarray) - return() \ No newline at end of file diff --git a/deprecated/src/SEIRHVD/SEIRHVD_remote.py b/deprecated/src/SEIRHVD/SEIRHVD_remote.py deleted file mode 100644 index 5bfa5f2..0000000 --- a/deprecated/src/SEIRHVD/SEIRHVD_remote.py +++ /dev/null @@ -1,109 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -import dill as pickle -import json -import requests -from datetime import datetime - -import SEIRHVD_importdata -import SEIRHVD_tables -import SEIRHVD_plots -import SEIRHVD_quarantine -import SEIRHVD_vars -from datetime import datetime -from datetime import timedelta - -""" -# ------------------------------------------- # -# # -# SEIRHDV Remote Simulation # -# # -# ------------------------------------------- # - -Remote simmulation using ZEUS Cluster -Connection to Dlab's VPN is necessary in order for to work remotely - -To Do: -- Send data as dill/pickle - -""" - -class SEIRHVD_remote(SEIRHVD_tables.SEIRHVD_tables,SEIRHVD_plots.SEIRHVD_plots,SEIRHVD_importdata.SEIRHVD_importdata,SEIRHVD_vars.SEIRHVD_vars,SEIRHVD_quarantine.SEIRHVD_quarantine): - def __init__(self,beta,mu,ScaleFactor=1,SeroPrevFactor=1,expinfection=1,initdate = datetime(2020,5,15), tsim = 500,tstate='',bedmodelorder=2, k = 0,I_as_prop = 0.35, I_mi_prop = 0.63,I_cr_prop = 0.007,I_se_prop = 0.013): - self.beta = beta - self.mu = mu - self.ScaleFactor = ScaleFactor - self.SeroPrevFactor = SeroPrevFactor - self.expinfection = expinfection - self.tstate = tstate - self.initdate = initdate - self.tsim = tsim - self.May15 = (datetime(2020,5,15)-initdate).days - self.k = k - - self.I_as_prop = I_as_prop - self.I_mi_prop = I_mi_prop - self.I_cr_prop = I_cr_prop - self.I_se_prop = I_se_prop - - if tstate: - self.inputdata = True - self.realdata = True - else: - self.inputdata = False - print('Set initial values') - self.realdata = False - return - - def initialvalues(self,I_act0,dead,population,H0,V0,Htot,Vtot,R=0,D=0,H_cr = 0): - self.B=dead - self.D = D - self.population = population - self.I_act0 = I_act0 - self.H0=H0 - self.V=V0 - self.Htot = np.poly1d(Htot) - self.Vtot = np.poly1d(Vtot) - self.H_cr = H_cr - self.R = R - self.inputdata = True - - - # ----------------------- # - # Run simmulation # - # ----------------------- # - - def simulate(self,v=3,intgr=0): - if not self.inputdata: - return('Set initnial values before simulating') - endpoint = 'http://192.168.2.248:5003/SEIRHVDsimulate' - auxinputarray = [list(self.inputarray[i]) for i in range(self.numescenarios)] - data = { - 'state': str(self.tstate), - 'beta': str(self.beta), - 'mu': str(self.mu), - 'tsim': str(self.tsim), - 'initdate': self.initdate.strftime('%Y/%m/%d'), - 'ScaleFactor': str(self.ScaleFactor), - 'SeroPrevFactor': str(self.SeroPrevFactor), - 'inputarray': str(auxinputarray), - 'version':v, - 'intgr':intgr, - 'B':self.B, - 'D':self.D, - 'population':self.population, - 'I_act0':self.I_act0, - 'H0':self.H0, - 'V':self.V, - 'Htot':self.Htot, - 'Vtot':self.Vtot, - 'H_cr':self.H_cr, - 'R':self.R} - - pickle.dumps(data) - r = requests.post(url = endpoint, data = data) - self.sims = pickle.loads(r.content) - self.importdata() - self.localvar() - return \ No newline at end of file diff --git a/deprecated/src/SEIRHVD/SEIRHVD_tables.py b/deprecated/src/SEIRHVD/SEIRHVD_tables.py deleted file mode 100644 index 5579b62..0000000 --- a/deprecated/src/SEIRHVD/SEIRHVD_tables.py +++ /dev/null @@ -1,214 +0,0 @@ - -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -from datetime import datetime -from datetime import timedelta -import pandas as pd -import numpy as np -""" -# -------------------------- # -# Generación de Tablas # -# -------------------------- # - - -# Variables: -# I_cum: Infectados acumulados -# I_act: Infectados activos -# D: Muertos acumulados -# D_d: Muertos Diarios -# L: Letalidad -# H: Uso de Camas hospitalarias -# V: Uso de VMI -# H_tot: Necesidad total de camas (incluidas las que se necesitan por sobre la capacidad) -# V_tot: Necesidad total de VMI (incluidos las que se necesitan por sobre la capacidad) - - -""" -class SEIRHVD_tables(): - # ------------------------------------- # - # Results data table construction # - # ------------------------------------- # - - - #from datetime import timedelta - def tabladedatos(self,inicio = datetime(2020,5,15), fin = datetime(2020,6,30),variables =['I_cum','I_act','D','L'], path=''): - - # Time - tr_i = (inicio-self.initdate).days - tr_f = (fin-self.initdate).days - days = (fin-inicio).days - index = [(inicio+timedelta(days=i)).strftime("%d/%m/%Y") for i in range(days+1)] - idx = [np.searchsorted(self.t[i],range(tr_i,tr_f+1)) for i in range(self.numescenarios)] - - #data - data = [] - # --------------------------- # - # Fallecidos acumulados # - # --------------------------- # - if 'D' in variables: - # Interpolacion para datos faltantes - Bdata = dict() - namelist = ['Muertos-60','Muertos-65','Muertos-70'] - for i in range(len(namelist)): - B_hoy = [round(self.B[i][idx[i][0]])] - for j in range(1,len(idx[i])-1): - if idx[i][j-1]== idx[i][j]: - B_hoy.extend([round((self.B[i][idx[i][j-1]]+self.B[i][idx[i][j+1]])/2)]) - else: - B_hoy.extend([round(self.B[i][idx[i][j]])]) - B_hoy.extend([round(self.B[i][idx[i][-1]])]) - Bdata[namelist[i]]=B_hoy - - Bdata = pd.DataFrame(Bdata) - data.append(Bdata) - - - # Infectados Acumulados - if 'I_cum' in variables: - Iacdata = dict() - namelist = ['Infectados-60','Infectados-65','Infectados-70'] - for i in range(self.numescenarios): - Iac_hoy = [round(self.Iac[i][idx[i][0]])] - for j in range(1,len(idx[i])-1): - if idx[i][j-1]== idx[i][j]: - Iac_hoy.extend([round((self.Iac[i][idx[i][j-1]]+self.Iac[i][idx[i][j+1]])/2)]) - else: - Iac_hoy.extend([round(self.Iac[i][idx[i][j]])]) - Iac_hoy.extend([round(self.Iac[i][idx[i][-1]])]) - Iacdata[namelist[i]]=Iac_hoy - Iacdata = pd.DataFrame(Iacdata) - data.append(Iacdata) - - - # Letalidad - #let = [100*B[i]/Iac[i] for i in range(self.numescenarios) - #Iacdata = dict() - #namelist = ['Infectados-60','Infectados-65','Infectados-70'] - #for i in range(numescenarios): - # Iac_hoy = [round(Iac[i][idx[i][0]])] - # for j in range(1,len(idx[i])-1): - # if idx[i][j-1]== idx[i][j]: - # Iac_hoy.extend([round((Iac[i][idx[i][j-1]]+Iac[i][idx[i][j+1]])/2)]) - # else: - # Iac_hoy.extend([round(Iac[i][idx[i][j]])]) - # Iac_hoy.extend([round(Iac[i][idx[i][-1]])]) - # Iacdata[namelist[i]]=Iac_hoy - # - #Iacdata = pd.DataFrame(Iacdata) - - - - - # ------------------ # - # Uso de Camas # - # ------------------ # - - #H_bed_hoy = [H_bed[i][idx[i][0:days]] for i in range(len(input))] - if 'H' in variables: - UsoCamas = dict() - namelist = ['UsoCamas-60','UsoCamas-65','UsoCamas-70'] - for i in range(3): - UsoCamas_hoy = [round(self.H_bed[i][idx[i][0]])] - for j in range(1,len(idx[i])-1): - if idx[i][j-1]== idx[i][j]: - UsoCamas_hoy.extend([round((self.H_bed[i][idx[i][j-1]]+self.H_bed[i][idx[i][j+1]])/2)]) - else: - UsoCamas_hoy.extend([round(self.H_bed[i][idx[i][j]])]) - UsoCamas_hoy.extend([round(self.H_bed[i][idx[i][-1]])]) - UsoCamas[namelist[i-3]]=UsoCamas_hoy - - Hbed = pd.DataFrame(UsoCamas) - data.append(Hbed) - - # ------------------------- # - # Uso de Ventiladores # - # ------------------------- # - #H_vent_hoy = [H_vent[i][idx[i][0:days]] for i in range(len(input))] - if 'V' in variables: - namelist = ['UsoVMI-60','UsoVMI-65','UsoVMI-70'] - UsoVMI = dict() - for i in range(3): - UsoVMI_hoy = [round(self.H_vent[i][idx[i][0]])] - for j in range(1,len(idx[i])-1): - if idx[i][j-1]== idx[i][j]: - UsoVMI_hoy.extend([round((self.H_vent[i][idx[i][j-1]]+self.H_vent[i][idx[i][j+1]])/2)]) - else: - UsoVMI_hoy.extend([round(self.H_vent[i][idx[i][j]])]) - UsoVMI_hoy.extend([round(self.H_vent[i][idx[i][-1]])]) - UsoVMI[namelist[i-3]]=UsoVMI_hoy - - Hvent = pd.DataFrame(UsoVMI) - data.append(Hvent) - - - # ---------------------------------- # - # Camas adicionales Requeridas # - # ---------------------------------- # - if 'H_ad' in variables: - CH_d = dict() - namelist = ['CamaAdicional-60','CamaAdicional-65','CamaAdicional-70'] - for i in range(3): - CH_hoy = [round(self.CH[i][idx[i][0]])] - for j in range(1,len(idx[i])-1): - if idx[i][j-1]== idx[i][j]: - CH_hoy.extend([round((self.CH[i][idx[i][j-1]]+self.CH[i][idx[i][j+1]])/2)]) - else: - CH_hoy.extend([round(self.CH[i][idx[i][j]])]) - CH_hoy.extend([round(self.CH[i][idx[i][-1]])]) - CH_d[namelist[i-3]]=CH_hoy - - CH_d = pd.DataFrame(CH_d) - data.append(CH_d) - - if 'V_ad' in variables: - CV_d = dict() - namelist = ['VMIAdicional-60','VMIAdicional-65','VMIAdicional-70'] - for i in range(3): - CV_hoy = [round(self.CV[i][idx[i][0]])] - for j in range(1,len(idx[i])-1): - if idx[i][j-1]== idx[i][j]: - CV_hoy.extend([round((self.CV[i][idx[i][j-1]]+self.CV[i][idx[i][j+1]])/2)]) - else: - CV_hoy.extend([round(self.CV[i][idx[i][j]])]) - CV_hoy.extend([round(self.CV[i][idx[i][-1]])]) - CV_d[namelist[i-3]]=CV_hoy - - CV_d = pd.DataFrame(CV_d) - data.append(CV_d) - - - # ------------------------------ # - # Necesidad total de Camas # - # ------------------------------ # - if False: - namelistUsoC = ['UsoCamas-60','UsoCamas-65','UsoCamas-70'] - namelistUsoV = ['UsoVMI-60','UsoVMI-65','UsoVMI-70'] - - namelistCH = ['CamaAdicional-60','CamaAdicional-65','CamaAdicional-70'] - namelistCV = ['VMIAdicional-60','VMIAdicional-65','VMIAdicional-70'] - - namelistcamas = ['NecesidadTotalCamas-60','NecesidadTotalCamas-65','NecesidadTotalCamas-70'] - namelistvmi = ['NecesidadTotalVMI-60','NecesidadTotalVMI-65','NecesidadTotalVMI-70'] - - totbed_d = pd.DataFrame() - - totvmi_d = pd.DataFrame() - - for i in range(len(namelistCH)): - totbed_d[namelistcamas[i]] = CH_d[namelistCH[i]] + Hbed[namelistUsoC[i]] - totvmi_d[namelistvmi[i]] = CV_d[namelistCV[i]] + Hvent[namelistUsoV[i]] - data.append(totbed_d) - data.append(totvmi_d ) - - - # ------------------------- # - # Create Data Frame # - # ------------------------- # - index = pd.DataFrame(dict(dates=index)) - data = pd.concat(data, axis=1, sort=False) - data = pd.concat([index,data], axis=1, sort=False) - data = data.set_index('dates') - if path: - data.to_excel(path) - # - return(data) diff --git a/deprecated/src/SEIRHVD/SEIRHVD_tests.py b/deprecated/src/SEIRHVD/SEIRHVD_tests.py deleted file mode 100644 index f6fd106..0000000 --- a/deprecated/src/SEIRHVD/SEIRHVD_tests.py +++ /dev/null @@ -1,217 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -""" -# -------------------- # -# # -# SEIRHDV TEsts # -# # -# -------------------- # - - -Scripts for testing new features and messing around. -This commands must be run from SEIRHVD directory - -""" - - - -# -------------------- # -# # -# SEIRHDV Local # -# # -# -------------------- # - -from SEIRHVD_local import SEIRHVD_local -import numpy as np -from datetime import datetime -import matplotlib.pyplot as plt - -# ------------------------------------------- # -# Región Metropolitana # -# ------------------------------------------- # - - -# Región Por CUT -tstate = '13' -# Fecha Inicial -initdate = datetime(2020,4,13) - -# Tiempo de simulacion -tsim = 1000 - -# Fecha de inicio de cuarentena -qit = datetime(2020,5,15) -qit = (qit - initdate).days - -qfd = datetime(2020,7,24) -qft = (qfd - initdate).days - -qit = 0 -qft = tsim - -# Parametros del modelo -beta = 0.2#25#15#15#2#117 -mu = 0.1#5 -ScaleFactor = 3 -SeroPrevFactor = 1#0.22 # Sero Prevalence Factor. Permite ajustar la cantidad de gente que entra en la dinamica -expinfection = 1 # Proporcion en la que contagian los expuestos - -k=10 # Factor de Saturación Cinética - -# Creación del objeto de simulación -simulation = SEIRHVD_local(beta = beta,mu = mu,ScaleFactor=ScaleFactor,SeroPrevFactor=SeroPrevFactor,expinfection=expinfection,initdate = initdate, tsim = tsim,tstate=tstate,k=k) - -# Creación del vector de cuarentenas -# [Tsim, max_mov,rem_mov,quarantine period, quarantine initial time, quarantine final time, quarantine type] -quarantines = [[500.0, 0.85, 0.6, 0.0, qit,qft, 0.0], - [500.0, 0.85, 0.65, 0.0,qit,qft, 0.0], - [500.0, 0.85, 0.7, 0.0, qit,qft, 0.0]] - #[500.0, 0.85, 0.75, 0.0,qit,qft, 0.0], - #[500.0, 0.85, 0.4, 0.0,qit, qft, 0.0]] -simulation.inputarray = np.array(quarantines) # This will change during next update -simulation.addquarantine() - -simulation.simulate(v=3) - - -k=0 # Factor de Saturación Cinética - -# Creación del objeto de simulación -simulation2 = SEIRHVD_local(beta = beta,mu = mu,ScaleFactor=ScaleFactor,SeroPrevFactor=SeroPrevFactor,expinfection=expinfection,initdate = initdate, tsim = tsim,tstate=tstate,k=k) - -# Creación del vector de cuarentenas -# [Tsim, max_mov,rem_mov,quarantine period, quarantine initial time, quarantine final time, quarantine type] -quarantines = [[500.0, 0.85, 0.6, 0.0, qit,qft, 0.0]]#, - #[500.0, 0.85, 0.65, 0.0,qit,qft, 0.0], - #[500.0, 0.85, 0.7, 0.0, qit,qft, 0.0]] - #[500.0, 0.85, 0.75, 0.0,qit,qft, 0.0], - #[500.0, 0.85, 0.4, 0.0,qit, qft, 0.0]] -simulation2.inputarray = np.array(quarantines) # This will change during next update -simulation2.addquarantine() - -simulation2.simulate(v=3) - - -plt.plot(simulation.t[0],simulation.I[0]) -plt.plot(simulation2.t[0],simulation2.I[0]) -# Plots de ejemplo: -simulation.plotinfectadosactivos(scalefactor=True,ylim=200000) 11 - -simulation.plotinfectadosactivos() -simulation.plotventiladores() -simulation.plotfallecidosacumulados() - - -# ------------------..........--------------- # -# Simulación Datos Artificiales # -# ------------------------------------------- # -from SEIRHVD_local import SEIRHVD_local -import numpy as np -from datetime import datetime -import matplotlib.pyplot as plt - -tstate = '' -# Fecha Inicial -initdate = datetime(2020,5,15) -# Parametros del modelo -beta = 0.2 # Tasa de contagio -mu = 0.6 # Razon E0/I0 -ScaleFactor = 1 # Factor de Escala: Numero de infectados por sobre los reportados -SeroPrevFactor = 1 # Sero Prevalence Factor. Permite ajustar la cantidad de gente que entra en la dinamica -expinfection = 1 # Proporcion en la que contagian los expuestos -tsim = 500 # Tiempo de simulacion - -# Creación del objeto de simulación -simulation = SEIRHVD_local(beta = beta,mu = mu,ScaleFactor=ScaleFactor,SeroPrevFactor=SeroPrevFactor,expinfection=expinfection,initdate = initdate, tsim = tsim,tstate=tstate) - - -quarantines = [[500.0, 0.85, 0.7, 0.0, 0.0, 500.0, 0.0]] -simulation.inputarray = np.array(quarantines) -simulation.addquarantine() - -# Valores iniciales -I_act0 = 100 -dead = 0 -population = 10000 -H0 = 1 -V0 = 1 -# Capacidades hospitalarias -Htot = 1000 -Vtot = 1000 - -simulation.initialvalues(I_act0,dead,population,H0,V0,Htot,Vtot,R=0,D=0,H_cr = 0) - -# Simular -simulation.simulate() - -# Plots de ejemplo: -simulation.plotfallecidosdiarios() -simulation.plotventiladores() - - -# QA: - -simulation.I_as_ac_prop[0][-1] +simulation.I_mi_ac_prop[0][-1] +simulation.I_se_ac_prop[0][-1] +simulation.I_cr_ac_prop[0][-1] +simulation.I_act0/simulation.Iac[0][-1] - - - - - - -# -------------------- # -# # -# SEIRHDV Remote # -# # -# -------------------- # -# Not ready yet - - -from SEIRHVD_remote import SEIRHVD_remote - - -# ------------------..........--------------- # -# Ingreso de Parámetros Generales # -# ------------------------------------------- # -# Región Por CUT -tstate = '13' - -# Fecha Inicial -initdate = datetime(2020,5,15) - -# Parametros del modelo -beta = 0.117 # Tasa de contagio -mu = 0.6 # Razon E0/I0 -ScaleFactor = 1.9 # Factor de Escala: Numero de infectados por sobre los reportados -SeroPrevFactor = 0.5 # Sero Prevalence Factor. Permite ajustar la cantidad de gente que entra en la dinamica -expinfection = 1 # Proporcion en la que contagian los expuestos - -tsim = 500 # Tiempo de simulacion - -# Creación del objeto de simulación -simulation = SEIRHVD_DA(beta = beta,mu = mu,ScaleFactor=ScaleFactor,SeroPrevFactor=SeroPrevFactor,expinfection=expinfection,initdate = initdate, tsim = tsim,tstate=tstate) - -# Creación de escenarios -# Opcion 1: Escenarios por defecto -simulation.defaultescenarios() - -# Opción 2: Escenarios personalizados -# [tsim,max_mov,rem_mov,qp,iqt,fqt,movfunct] - -inputarray = [[500.0, 0.85, 0.6, 0.0, 0.0, 500.0, 0.0], - [500.0, 0.85, 0.65, 0.0, 0.0, 500.0, 0.0], - [500.0, 0.85, 0.7, 0.0, 0.0, 500.0, 0.0]] -simulation.inputarray = np.array(inputarray) -simulation.addscenario() - - -# Simular -simulation.simulate() - -# Análisis de Resultados -# funcion genérica: -simulation.pĺotvariable(enddate = datetime(2020,7,30),days=0, reales= True,ylim = 0,norm=1,scalefactor = False) - -simulation.plotactivos() -# Infectados Activos -simulation.tabladedatos(inicio = datetime(2020,5,15), fin = datetime(2020,6,30),variables =['I_cum','I_act','D','L'], path='')) diff --git a/deprecated/src/SEIRHVD/SEIRHVD_vars.py b/deprecated/src/SEIRHVD/SEIRHVD_vars.py deleted file mode 100644 index c6439a6..0000000 --- a/deprecated/src/SEIRHVD/SEIRHVD_vars.py +++ /dev/null @@ -1,241 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -import numpy as np -from datetime import timedelta -from datetime import datetime -from numpy import linalg as LA - -""" -# --------------------------------------- # -# Simulation results processing # -# --------------------------------------- # - -Creation of local variables for later analysis -""" - - -class SEIRHVD_vars(): - - # Creacion de variables auxiliares para los analisis - def localvar(self): - # Poblacion total - self.T=[self.sims[i][0].S+self.sims[i][0].E_as+self.sims[i][0].E_sy+self.sims[i][0].I_as+self.sims[i][0].I_cr+self.sims[i][0].I_mi+self.sims[i][0].I_se\ - +self.sims[i][0].H_in+self.sims[i][0].H_out+self.sims[i][0].H_cr+self.sims[i][0].V+self.sims[i][0].D+self.sims[i][0].R+self.sims[i][0].B for i in range(self.numescenarios)] - - - # Susceptibles - self.S = [self.sims[i][0].S for i in range(self.numescenarios)] - # Hospitalizados totales diarios - self.H_sum=[self.sims[i][0].H_in+self.sims[i][0].H_cr+self.sims[i][0].H_out+self.sims[i][0].V for i in range(self.numescenarios)] - # Hospitalizados camas diarios - self.H_bed=[self.sims[i][0].H_in+self.sims[i][0].H_cr+self.sims[i][0].H_out for i in range(self.numescenarios)] - # Hospitalizados ventiladores diarios - self.H_vent=[self.sims[i][0].V for i in range(self.numescenarios)] - # Infectados Acumulados - self.Iac=[self.sims[i][0].I for i in range(self.numescenarios)] - # Infectados activos diarios - self.I = [self.sims[i][0].I_as+self.sims[i][0].I_cr + self.sims[i][0].I_mi + self.sims[i][0].I_se + self.sims[i][0].H_in+self.sims[i][0].H_cr+self.sims[i][0].H_out+self.sims[i][0].V for i in range(self.numescenarios)] - #self.I_act = [self.sims[i][0].I_mi + self.sims[i][0].I_cr + self.sims[i][0].I_se + self.sims[i][0].H_in+self.sims[i][0].H_cr+self.sims[i][0].H_out+self.sims[i][0].V for i in range(self.numescenarios)] - self.I_act = [self.sims[i][0].I_as+self.sims[i][0].I_mi + self.sims[i][0].I_cr + self.sims[i][0].I_se for i in range(self.numescenarios)] - - # Infectados asintomaticos - self.I_as = [self.sims[i][0].I_as for i in range(self.numescenarios)] - # Infectados mild - self.I_mi = [self.sims[i][0].I_mi for i in range(self.numescenarios)] - # Infectados severos - self.I_se = [self.sims[i][0].I_se for i in range(self.numescenarios)] - # Infectados criticos - self.I_cr = [self.sims[i][0].I_cr for i in range(self.numescenarios)] - # suma de infectados "sueltos" - self.I_sum = [self.sims[i][0].I_as+self.sims[i][0].I_cr + self.sims[i][0].I_mi + self.sims[i][0].I_se for i in range(self.numescenarios)] - - # Infectados nuevos diarios - # Infectados asintomaticos - self.I_as_d = [self.sims[i][0].I_as_d for i in range(self.numescenarios)] - # Infectados mild - self.I_mi_d = [self.sims[i][0].I_mi_d for i in range(self.numescenarios)] - # Infectados severos - self.I_se_d = [self.sims[i][0].I_se_d for i in range(self.numescenarios)] - # Infectados criticos - self.I_cr_d = [self.sims[i][0].I_cr_d for i in range(self.numescenarios)] - - - # Infectados acumulados - # Infectados asintomaticos - self.I_as_ac = [self.sims[i][0].I_as_ac for i in range(self.numescenarios)] - # Infectados mild - self.I_mi_ac = [self.sims[i][0].I_mi_ac for i in range(self.numescenarios)] - # Infectados severos - self.I_se_ac = [self.sims[i][0].I_se_ac for i in range(self.numescenarios)] - # Infectados criticos - self.I_cr_ac = [self.sims[i][0].I_cr_ac for i in range(self.numescenarios)] - - - # Expuestos totales diarios - self.E = [self.sims[i][0].E_as+self.sims[i][0].E_sy for i in range(self.numescenarios)] - self.E_as = [self.sims[i][0].E_as for i in range(self.numescenarios)] - self.E_sy = [self.sims[i][0].E_sy for i in range(self.numescenarios)] - - # Fallecidos:: - - # Enterrados/Muertos acumulados - self.B = [self.sims[i][0].B for i in range(self.numescenarios)] - # Muertos diarios - self.D = [self.sims[i][0].D for i in range(self.numescenarios)] - # Infectados Criticos Fallecidos - self.I_crD = [self.sims[i][0].I_crD for i in range(self.numescenarios)] - self.I_crD_d = [self.sims[i][0].I_crD_d for i in range(self.numescenarios)] - # Infectados Serios Fallecidos - self.I_seD = [self.sims[i][0].I_seD for i in range(self.numescenarios)] - self.I_seD_d = [self.sims[i][0].I_seD_d for i in range(self.numescenarios)] - # Hospitalizados Criticos Fallecidos - self.H_crD = [self.sims[i][0].H_crD for i in range(self.numescenarios)] - self.H_crD_d = [self.sims[i][0].H_crD_d for i in range(self.numescenarios)] - # Ventilados Fallecidos - self.VD = [self.sims[i][0].VD for i in range(self.numescenarios)] - self.VD_d = [self.sims[i][0].VD_d for i in range(self.numescenarios)] - - # Recuperados - self.R = [self.sims[i][0].R for i in range(self.numescenarios)] - # Ventiladores diarios - self.V = [self.sims[i][0].V for i in range(self.numescenarios)] - - # Variables temporales - self.t = [self.sims[i][0].t for i in range(self.numescenarios)] - self.dt = [np.diff(self.t[i]) for i in range(self.numescenarios)] - - - # CAMAS - self.H_crin=[self.sims[i][0].H_cr for i in range(self.numescenarios)] - self.H_in=[self.sims[i][0].H_in for i in range(self.numescenarios)] - self.H_out=[self.sims[i][0].H_out for i in range(self.numescenarios)] - self.H_sum=[self.sims[i][0].H_in+self.sims[i][0].H_cr+self.sims[i][0].H_out for i in range(self.numescenarios)] - self.H_tot=[self.sims[i][0].H_in+self.sims[i][0].H_cr+self.sims[i][0].H_out+self.sims[i][0].V for i in range(self.numescenarios)] - - self.CH = [self.sims[i][0].CH for i in range(self.numescenarios)] - self.CV = [self.sims[i][0].CV for i in range(self.numescenarios)] - self.ACH = [self.sims[i][0].ACH for i in range(self.numescenarios)] - self.ACV = [self.sims[i][0].ACV for i in range(self.numescenarios)] - - #Cálculo de la fecha del Peak - self.peakindex = [np.where(self.I[i]==max(self.I[i]))[0][0] for i in range((self.numescenarios))] - self.peak = [max(self.I[i]) for i in range((self.numescenarios))] - self.peak_t = [self.t[i][self.peakindex[i]] for i in range((self.numescenarios))] - self.peak_date = [self.initdate+timedelta(days=round(self.peak_t[i])) for i in range((self.numescenarios))] - - #Cálculo de la fecha de Saturacion_ - self.ventsat = 0 - self.hsta = 0 - - #proporcion de la poblacion que entra en la dinamica de infeccion - #self.population = self.sims[0][0].population - self.infectedsusc = [100*((self.S[i][0] - self.S[i][-1])/self.S[i][0]) for i in range(self.numescenarios)] - self.infectedpop = [100*((self.S[i][0] - self.S[i][-1]))/self.population for i in range(self.numescenarios)] - self.infectedpop_norm = [100*((self.S[i][0] - self.S[i][-1]))/(self.population*self.ScaleFactor) for i in range(self.numescenarios)] - - - # Indicadores: - # Should Have been hospitalized - #self.SHFR = [self.B[i]/(self.I_se_ac[i]+self.I_cr_ac[i]) for i in range(self.numescenarios)] - self.totD = [self.B[i][-1] for i in range(self.numescenarios)] - - #self.SHFR = [self.totD[i]/(self.I_se_ac[i][-1]+self.I_cr_ac[i][-1]) if self.totD[i]>15 else 0.15 for i in range(self.numescenarios)] - self.SHFR = [self.totD[i]/(self.I_se_ac[i][-1]+self.I_cr_ac[i][-1]) for i in range(self.numescenarios)] - self.SHFR_d = [self.B[i]/(self.I_se_ac[i][-1]+self.I_cr_ac[i][-1]) for i in range(self.numescenarios)] - - # ----------------- # - # QA Variables # - # ----------------- # - # Infected accumulated checksum - self.Iac_checksum = [[self.Iac[i][j] - self.I_as_ac[i][j] - self.I_mi_ac[i][j] - self.I_se_ac[i][j] - self.I_cr_ac[i][j] - self.I_act0 for j in range(len(self.t[i]))] for i in range(self.numescenarios)] - # Accumulated Infected proportion over time - self.I_as_ac_prop = [[self.I_as_ac[i][j]/self.Iac[i][j] for j in range(len(self.t[i]))] for i in range(self.numescenarios)] - self.I_mi_ac_prop = [[self.I_mi_ac[i][j]/self.Iac[i][j] for j in range(len(self.t[i]))] for i in range(self.numescenarios)] - self.I_se_ac_prop = [[self.I_se_ac[i][j]/self.Iac[i][j] for j in range(len(self.t[i]))] for i in range(self.numescenarios)] - self.I_cr_ac_prop = [[self.I_cr_ac[i][j]/self.Iac[i][j] for j in range(len(self.t[i]))] for i in range(self.numescenarios)] - - # Accumulated Infected proportion sum - must be 1 - self.Iac_prop = [self.I_as_ac_prop[i][-1] +self.I_mi_ac_prop[i][-1] +self.I_se_ac_prop[i][-1] +self.I_cr_ac_prop[i][-1] +self.I_act0/self.Iac[i][-1] for i in range(self.numescenarios)] - - # Deaths - self.D_checksum = [max(self.VD_d[i]+self.H_crD_d[i]+self.I_seD_d[i]+self.I_crD_d[i] -self.D[i]) for i in range(self.numescenarios)] - #self.B_checksum = [max(self.VD[i]+self.H_crD[i]+self.I_seD[i]+self.I_crD[i]-self.B[i]) for i in range(self.numescenarios)] - - # Population: - self.population_checksum = [max(self.S[i]+self.E_as[i]+self.E_sy[i]+self.I_as[i]+self.I_mi[i]+self.I_se[i]+self.I_cr[i] - +self.H_crin[i]+self.H_in[i]+self.H_out[i]+self.V[i]+self.R[i]+self.D[i]-self.population) for i in range(self.numescenarios)] - - # plots de la suma de todos los estados del sistema - - # -------------- # - # Errores # - # -------------- # - if self.realdata: - # Camas - idx = [np.searchsorted(self.t[i],self.sochimi_tr) for i in range(self.numescenarios)] - self.err_bed = [LA.norm(self.Hr-self.H_sum[i][idx[i]])/LA.norm(self.Hr) for i in range(self.numescenarios)] - self.err_vent = [LA.norm(self.Vr-self.V[i][idx[i]])/LA.norm(self.Vr) for i in range(self.numescenarios)] - - # Infecatos Activos - idx = [np.searchsorted(self.t[i],self.tr) for i in range(self.numescenarios)] - self.err_Iactives = [LA.norm(self.Ir-self.I[i][idx[i]])/LA.norm(self.Ir) for i in range(self.numescenarios)] - idx = [np.searchsorted(self.t[i],self.I_minciencia_r_tr) for i in range(self.numescenarios)] - self.err_Iactives_minciencia = [LA.norm(self.I_minciencia_r-self.I[i][idx[i]])/LA.norm(self.Ir) for i in range(self.numescenarios)] - - # Infectados acumulados - #idx = [np.searchsorted(t[i],tr) for i in range(self.numescenarios)] - #err_Iactives = [LA.norm(Ir-I[i][idx[i]])/LA.norm(Ir) for i in range(self.numescenarios)] - - # Fallecidos - idx = [np.searchsorted(self.t[i],self.Br_tr) for i in range(self.numescenarios)] - self.err_dead = [LA.norm(self.Br-self.B[i][idx[i]])/LA.norm(self.Br) for i in range(self.numescenarios)] - - self.quarantines = [] - for i in range(self.numescenarios): - self.quarantines.append([self.sims[i][0].alpha(t) for t in self.t[i]]) - - # -------------------- # - # Fecha de Colapso # - # -------------------- # - self.H_colapsedate = [] - self.H_colapseday = [] - self.V_colapsedate = [] - self.V_colapseday = [] - for i in range(self.numescenarios): - try: - self.H_colapseday.append(np.where(self.CH[i]>0)[0][0]) - self.H_colapsedate.append((self.initdate+timedelta(days=self.H_colapseday[i])).strftime('%Y/%m/%d')) - except: - self.H_colapseday.append(self.tsim) - self.H_colapsedate.append("None") - try: - self.V_colapseday.append(np.where(self.CV[i]>0)[0][0]) - self.V_colapsedate.append((self.initdate+timedelta(days=self.V_colapseday[i])).strftime('%Y/%m/%d')) - except: - self.V_colapseday.append(self.tsim) - self.V_colapsedate.append("None") - - """ - # ---------------------------------- # - # Estudio Resultados # - # ---------------------------------- # - """ - # ---------------------------------- # - # Resumen de resultados # - # ---------------------------------- # - def resume(self): - print("Resumen de resultados:") - qtype = "" - for i in range(self.numescenarios): - if self.inputarray[i][-1]==0: - qtype = "Cuarentena total" - if self.inputarray[i][-1]>0: - qtype ="Cuarentena Dinámica" - - print("Escenario "+str(i)) - print("Tipo de Cuarentena: "+qtype+'\nmov_rem: '+str(self.inputarray[i][2])+'\nmov_max: '+str(self.inputarray[i][2])+ - "\nInicio cuarentena: "+(self.initdate+timedelta(days=self.inputarray[i][4])).strftime('%Y/%m/%d')+"\nFin cuarentena: "+(self.initdate+timedelta(days=self.inputarray[i][5])).strftime('%Y/%m/%d')) - print("Peak infetados \n"+"Peak value: "+str(self.peak[i])+"\nPeak date: "+str(self.peak_date[i])) - print("Fallecidos totales:"+str(max(self.B[i]))) - print("Fecha de colapso hospitalario \n"+"Camas: "+self.H_colapsedate[i]+"\nVentiladores: "+self.V_colapsedate[i]) - print("\n") diff --git a/deprecated/src/SEIRHVD/SEIR_tests.py b/deprecated/src/SEIRHVD/SEIR_tests.py deleted file mode 100644 index 3c6c2c1..0000000 --- a/deprecated/src/SEIRHVD/SEIR_tests.py +++ /dev/null @@ -1,140 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -# ----------------- # -# # -# SEIR Model # -# # -# ----------------- # - - - -from SEIRHVD_local import SEIRHVD_local -import numpy as np -from datetime import datetime -import matplotlib.pyplot as plt -from joblib import Parallel, delayed -import multiprocessing - - - -tstate = '' -initdate = datetime(2020,5,15) - -# ------------------- # -# Plot 1 # -# ------------------- # - -# Camas H totales vs infectados severos vs HcrtoD - - - - -# Parametros del modelo -beta = 0.2 # Tasa de contagio -mu = 0 # Razon E0/I0 -ScaleFactor = 1 # Factor de Escala: Numero de infectados por sobre los reportados -SeroPrevFactor = 1 # Sero Prevalence Factor. Permite ajustar la cantidad de gente que entra en la dinamica -expinfection = 1 # Proporcion en la que contagian los expuestos - -tsim = 1000 # Tiempo de simulacion - - - -# Simular -# Activos Iniciales -I_act0 = 100 -I_as_prop = 1 -I_mi_prop = 0 -I_se_prop = 0 -I_cr_prop = 0 - -# Muertos iniciales -dead0 = 0 - -population = 1000000 -# Initial Hospitalized -H0 = 0 -# Initial VMI -V0 = 0 - -nm = int(population/100000) -#step = 6 - - -# Hospital capacity -Htot = 30*nm - -# VMI Capacity -Vtot = 10*nm - - - -# Quarantines -alpha = 0.6 -quarantines = [[tsim, 0.85, alpha, 0.0, 0.0, tsim, 0.0]] - - - -# Simulation - -# Kinetic Saturation -k=0 - -simulation = SEIRHVD_local(beta = beta,mu = mu,ScaleFactor=ScaleFactor,SeroPrevFactor=SeroPrevFactor,expinfection=expinfection,initdate = initdate, tsim = tsim,tstate=tstate, k = k,I_as_prop = I_as_prop, I_mi_prop = I_mi_prop,I_se_prop = I_se_prop,I_cr_prop = I_cr_prop) -simulation.inputarray = np.array(quarantines) -simulation.addquarantine() -simulation.initialvalues(I_act0,dead0,population,H0,V0,Htot,Vtot,R=0,D=0,H_cr = 0) -simulation.simulate(v=0) - -simulation.plotseird() -simulation.peak -simulation.peak_t - -k=0.1 - -simulation2 = SEIRHVD_local(beta = beta,mu = mu,ScaleFactor=ScaleFactor,SeroPrevFactor=SeroPrevFactor,expinfection=expinfection,initdate = initdate, tsim = tsim,tstate=tstate, k = k,I_as_prop = I_as_prop, I_mi_prop = I_mi_prop,I_se_prop = I_se_prop,I_cr_prop = I_cr_prop) -simulation2.inputarray = np.array(quarantines) -simulation2.addquarantine() -simulation2.initialvalues(I_act0,dead0,population,H0,V0,Htot,Vtot,R=0,D=0,H_cr = 0) -simulation2.simulate(v=0) - -simulation2.plotseird() -simulation2.peak -simulation2.peak_t - -k=1 - -simulation3 = SEIRHVD_local(beta = beta,mu = mu,ScaleFactor=ScaleFactor,SeroPrevFactor=SeroPrevFactor,expinfection=expinfection,initdate = initdate, tsim = tsim,tstate=tstate, k = k,I_as_prop = I_as_prop, I_mi_prop = I_mi_prop,I_se_prop = I_se_prop,I_cr_prop = I_cr_prop) -simulation3.inputarray = np.array(quarantines) -simulation3.addquarantine() -simulation3.initialvalues(I_act0,dead0,population,H0,V0,Htot,Vtot,R=0,D=0,H_cr = 0) -simulation3.simulate(v=0) - -simulation3.plotseird() -simulation3.peak -simulation3.peak_t - -k=10 - -simulation4 = SEIRHVD_local(beta = beta,mu = mu,ScaleFactor=ScaleFactor,SeroPrevFactor=SeroPrevFactor,expinfection=expinfection,initdate = initdate, tsim = tsim,tstate=tstate, k = k,I_as_prop = I_as_prop, I_mi_prop = I_mi_prop,I_se_prop = I_se_prop,I_cr_prop = I_cr_prop) -simulation4.inputarray = np.array(quarantines) -simulation4.addquarantine() -simulation4.initialvalues(I_act0,dead0,population,H0,V0,Htot,Vtot,R=0,D=0,H_cr = 0) -simulation4.simulate(v=0) - -simulation4.plotseird() -simulation4.peak -simulation4.peak_t - -# Plots: - -plt.plot(simulation.t[0],simulation.I[0],label="k=0") -plt.plot(simulation2.t[0],simulation2.I[0],label="k=0.1") -plt.plot(simulation3.t[0],simulation3.I[0],label="k=1") -plt.plot(simulation4.t[0],simulation4.I[0],label="k=10") -plt.legend(loc=0) -plt.ylabel('Infected') -plt.xlabel('Days') -plt.xlim(0,500) -plt.show() \ No newline at end of file diff --git a/deprecated/src/SEIRHVD/class_SEIR.py b/deprecated/src/SEIRHVD/class_SEIR.py deleted file mode 100644 index 5ac817e..0000000 --- a/deprecated/src/SEIRHVD/class_SEIR.py +++ /dev/null @@ -1,1076 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -""" -SEIRHVD Model -""" - -import numpy as np -from scipy.integrate import solve_ivp -from scipy.special import expit -from joblib import Parallel, delayed -from scipy import signal -import pandas as pd -from numpy import linalg as LA -import multiprocessing - -""" -To do: - - Create reports function inside simSAEIRHVD class - - -SEIRHVD Implementation -Instructions: - Init a simSEIRHVD objecting giving the simulation condictions: - - tsim: Simulation time - - max_mov: - - rem_mov: - - qp: - - iqt: - - fqt: - - movfunct: - -""" - -class simSEIRHVD: - definputarray=np.array([ - [500,0.8,0.6,0,0,500,0], - [500,0.6,0.5,0,0,500,0], - [500,0.4,0.4,0,0,500,0]]) - - - def __init__(self,beta = 0.19, mu =2.6,inputarray = definputarray,B=221,D=26,V=758,I_act0=12642,R=0,Htot=None,Vtot=None,H_cr=80,H0=1720,tsat=30,Hmax=4000,Vmax=2000,expinfection=0,SeroPrevFactor=1,population=100000, - intgr = 0,I_as_ac =0, I_mi_ac = 0, I_se_ac = 0, I_cr_ac = 0,H_crD = 0, VD=0,I_crD=0,I_seD=0,I_as_prop = 0.35, I_mi_prop = 0.63,I_cr_prop = 0.007,I_se_prop = 0.013, k =0): - self.mu = mu - self.beta = beta - self.sims = [] - self.inputarray=inputarray - self.simulated = False - self.B = B - self.D = D - self.V = V - self.I_act0 = I_act0 - self.R = R - self.H_cr = H_cr # Hospitalizados criticos dia 0 - self.H0 = H0 # Hospitalizados totales dia 0 - - self.Hmax = Hmax - self.Vmax = Vmax - self.expinfection = expinfection - self.SeroPrevFactor=SeroPrevFactor - self.population = population - self.Htot = Htot - self.Vtot = Vtot - self.intgr = intgr - - # Accumulated Infected - self.I_as_ac = I_as_ac - self.I_mi_ac = I_mi_ac - self.I_se_ac = I_se_ac - self.I_cr_ac = I_cr_ac - - # Deaths - self.H_crD = H_crD - self.VD = VD - self.I_seD = I_seD - self.I_crD = I_crD - - # Initial Infected proportion - self.I_as_prop = I_as_prop - self.I_mi_prop = I_mi_prop - self.I_cr_prop = I_cr_prop - self.I_se_prop = I_se_prop - - - # dayly Infected - self.I_as_d = 0 - self.I_mi_d = 0 - self.I_se_d = 0 - self.I_cr_d = 0 - - # Saturated Kinetics - self.k = k - - - - def sim_run(self,tsim,max_mov,rem_mov,qp,iqt=0,fqt = 300,movfunct = 0): - case = SEIRHUDV(tsim,max_mov,rem_mov,qp,iqt,fqt,movfunct,k=self.k) - case.beta = self.beta - case.mu = self.mu - case.B = self.B - case.D = self.D - case.V = self.V - case.I_act0 = self.I_act0 - case.R = self.R - case.Htot = self.Htot - case.Vtot = self.Vtot - case.H_cr = self.H_cr # Hospitalizados criticos dia 0 - case.H0 = self.H0 # Hospitalizados totales dia 0 - - case.Hmax = self.Hmax - case.Vmax = self.Vmax - case.expinfection = self.expinfection - case.SeroPrevFactor = self.SeroPrevFactor - case.population = self.population - - # Accumulated Infected - case.I_as_ac = self.I_as_ac - case.I_mi_ac = self.I_mi_ac - case.I_se_ac = self.I_se_ac - case.I_cr_ac = self.I_cr_ac - - # Deaths - case.H_crD = self.H_crD - case.VD = self.VD - case.I_seD = self.I_seD - case.I_crD = self.I_crD - - case.I_as_d = self.I_as_d - case.I_mi_d = self.I_mi_d - case.I_se_d = self.I_se_d - case.I_cr_d = self.I_cr_d - - case.I_as_prop=self.I_as_prop - case.I_mi_prop=self.I_mi_prop - case.I_cr_prop=self.I_cr_prop - case.I_se_prop=self.I_se_prop - - #case.k = self.k - - - case.setrelationalvalues() - if self.intgr == 0: - print('Fast Solver') - case.integr_sci(0,tsim,0.1,False) - else: - print('Robust Solver') - case.integr(0,tsim,0.1,False) - out=[case,max_mov,rem_mov,qp,tsim] - return(out) - - - # Agregar un codigo numerico para que solo haya 1 vector de simulacion - #['once','once','once','once','once','once','square','square','once','once','once','once','once','once','square','square'] - - def setparameters(self): - return - def simulate(self,intgr=0): - num_cores = multiprocessing.cpu_count() - #params=Parallel(n_jobs=num_cores, verbose=50)(delayed(ref_test.refinepso_all)(Ir,tr,swarmsize=200,maxiter=50,omega=0.5, phip=0.5, phig=0.5,eta_r=[0,1],Q_r=[0,1],obj_func='IN')for i in range(int(rep))) - self.sims=Parallel(n_jobs=num_cores, verbose=50)(delayed(self.sim_run)(self.inputarray[i,0],self.inputarray[i,1],self.inputarray[i,2],self.inputarray[i,3],self.inputarray[i,4],self.inputarray[i,5],self.inputarray[i,6]) for i in range(self.inputarray.shape[0])) - self.simulated = True - return(self.sims) - - def getscenarios(self): - return() - def addscenario(self,inputarray): - return() - - - - - -class SEIRHUDV : - def __init__(self,tsim,max_mov,rem_mov,qp,iqt,fqt,movfunct,k=0): - #print(max_mov) - self.setparams() - self.setinitvalues() - #print(max_mov) - self.setscenario(tsim,max_mov,rem_mov,qp,iqt,fqt,movfunct) - self.k = k - #global mobility reduction parameters - #self.alpha=alpha - # total Hostipatl beds - - - # --------------------------- # - # Diferential Ecuations # - # --------------------------- # - - # dVariable/dt = sum(prob_i/in_time_i*in_State_i,i in in states) - sum(prob_i/out_time_i*out_State_i,i in in states) - - # Susceptibles - # dS/dt: - if self.k==0: - self.dS=lambda t,S,E_as,E_sy,I_as,I_mi,D,R: -self.alpha(t)*self.beta*S*(self.expinfection*(E_as+E_sy)+I_as+I_mi)/self.N-self.betaD*D+self.eta*R - else: - self.dS=lambda t,S,E_as,E_sy,I_as,I_mi,D,R: -self.alpha(t)*self.beta*S*(self.expinfection*(E_as+E_sy)+I_as+I_mi)/(self.N+self.k*I_as)-self.betaD*D+self.eta*R - # Exposed - # dE_as/dt - if self.k==0: - self.dE_as=lambda t,S,E_as,E_sy,I_as,I_mi: self.pSas/self.tSas*self.alpha(t)*self.beta*S*(self.expinfection*(E_as+E_sy)+I_as+I_mi)/self.N\ - -self.pasas/self.tasas*E_as - # dE_sy/dt - self.dE_sy=lambda t,S,E_as,E_sy,I_as,I_mi: self.pSsy/self.tSsy*self.alpha(t)*self.beta*S*(self.expinfection*(E_as+E_sy)+I_as+I_mi)/self.N\ - -self.psymi/self.tsymi*E_sy-self.psyse/self.tsyse*E_sy-self.psycr/self.tsycr*E_sy - - else: - self.dE_as=lambda t,S,E_as,E_sy,I_as,I_mi: self.pSas/self.tSas*self.alpha(t)*self.beta*S*(self.expinfection*(E_as+E_sy)+I_as+I_mi)/(self.N+self.k*I_as)\ - -self.pasas/self.tasas*E_as - # dE_sy/dt - self.dE_sy=lambda t,S,E_as,E_sy,I_as,I_mi: self.pSsy/self.tSsy*self.alpha(t)*self.beta*S*(self.expinfection*(E_as+E_sy)+I_as+I_mi)/(self.N+self.k*I_as)\ - -self.psymi/self.tsymi*E_sy-self.psyse/self.tsyse*E_sy-self.psycr/self.tsycr*E_sy - - # Infected - # dI_as/dt - self.dI_as=lambda t,E_as,I_as: self.pasas/self.tasas*E_as-self.pasR/self.tasR*I_as - # dI_mi/dt - self.dI_mi=lambda t,E_sy,I_mi: self.psymi/self.tsymi*E_sy-self.pmiR/self.tmiR*I_mi - # dI_se/dt: Esy - - self.dI_se=lambda t,E_sy,I_se,H_in,H_cr,H_out: self.psyse/self.tsyse*E_sy-self.psein/self.tsein*I_se*(self.h_sat(H_in,H_cr,H_out,t))\ - -self.pseD/self.tseD*I_se*(1-self.h_sat(H_in,H_cr,H_out,t)) - # dI_cr/dt - self.dI_cr=lambda t,E_sy,I_cr,H_in,H_cr,H_out,V: self.psycr/self.tsycr*E_sy\ - -self.pcrcrin/self.tcrcrin*I_cr*(self.h_sat(H_in,H_cr,H_out,t)*(1-self.v_sat(V,t)))\ - -self.pcrV/self.tcrV*I_cr*(self.v_sat(V,t))-self.pcrD/self.tcrD*I_cr*(1-self.h_sat(H_in,H_cr,H_out,t))*(1-self.v_sat(V,t)) - - #self.dI_cr=lambda t,E_sy,I_cr,H_in,H_cr,H_out: self.psycr/self.tsycr*E_sy-self.pcrcrin/self.tcrcrin*I_cr*(self.h_sat(H_in,H_cr,H_out,t))\ - # -self.pcrD/self.tcrD*I_cr*(1-self.h_sat(H_in,H_cr,H_out,t)) - - # Hospitalized - # dH_in/dt: Hospitalized arriving to the hospital - self.dH_in=lambda t,I_se,H_in,H_cr,H_out: self.psein/self.tsein*I_se*(self.h_sat(H_in,H_cr,H_out,t))\ - -self.pinout/self.tinout*H_in-self.pincrin/self.tincrin*H_in - # dH_cr/dt: Hospitalized in critical conditions - self.dH_cr=lambda t,I_cr,H_in,H_cr,H_out,V: self.pcrcrin/self.tcrcrin*I_cr*(self.h_sat(H_in,H_cr,H_out,t)*(1-self.v_sat(V,t)))\ - -self.pcrinV/self.tcrinV*H_cr*self.v_sat(V,t)-self.pcrinD/self.tcrinD*H_cr*(1-self.v_sat(V,t))+self.pincrin/self.tincrin*H_in - # dH_out/dt: Hospitalized getting better - self.dH_out=lambda t,H_in,H_out,V: self.pVout/self.tVout*V+self.pinout/self.tinout*H_in-self.poutR/self.toutR*H_out - # dV/dt: Ventilator necessity rates - self.dV=lambda t,I_cr,H_cr,V: self.pcrinV/self.tcrinV*H_cr*self.v_sat(V,t)-self.pVout/self.tVout*V-self.pVD/self.tVD*V\ - +self.pcrV/self.tcrV*I_cr*(self.v_sat(V,t)) - - # Deaths - # dD/dt: Death Rate - self.dD=lambda t,I_se,I_cr,H_in,H_cr,H_out,V,D: self.pVD/self.tVD*V+self.pcrD/self.tcrD*I_cr*(1-self.h_sat(H_in,H_cr,H_out,t)*(1-self.v_sat(V,t)))+\ - self.pseD/self.tseD*I_se*(1-self.h_sat(H_in,H_cr,H_out,t))+self.pcrinD/self.tcrinD*H_cr*(1-self.v_sat(V,t))-\ - self.pDB/self.tDB*D - # dB/dt: Bury rate - self.dB=lambda t,D: self.pDB/self.tDB*D - - # Recovered - # dR/dt - self.dR=lambda t,I_as,I_mi,H_out,R: self.pasR/self.tasR*I_as+self.pmiR/self.tmiR*I_mi+self.poutR/self.toutR*H_out-self.eta*R - - #Auxiliar functions: - self.dI=lambda t,E_as,E_sy: self.pasas/self.tasas*E_as+self.psymi/self.tsymi*E_sy+self.psyse/self.tsyse*E_sy+self.psycr/self.tsycr*E_sy - self.dCV=lambda t,I_cr,H_in,H_cr,H_out,V,CV:self.pcrD/self.tcrD*I_cr*(1-self.h_sat(H_in,H_cr,H_out,t)*(1-self.v_sat(V,t)))+self.pcrinD/self.tcrinD*H_cr*(1-self.v_sat(V,t))-CV - self.dCH=lambda t,I_se,H_in,H_cr,H_out,CH:self.pseD/self.tseD*I_se*(1-self.h_sat(H_in,H_cr,H_out,t))-CH - self.dACV=lambda t,CV: CV - self.dACH=lambda t,CH: CH - - # Accummulated Infected - self.dI_as_ac = lambda t,E_as: self.pasas/self.tasas*E_as - self.dI_mi_ac = lambda t,E_sy: self.psymi/self.tsymi*E_sy - self.dI_se_ac = lambda t,E_sy: self.psyse/self.tsyse*E_sy - self.dI_cr_ac = lambda t,E_sy: self.psycr/self.tsycr*E_sy - - # Accumulated Deads - self.dH_crD=lambda t,H_cr,V: self.pcrinD/self.tcrinD*H_cr*(1-self.v_sat(V,t)) - self.dVD=lambda t,V: self.pVD/self.tVD*V - self.dI_seD=lambda t,I_se,H_in,H_cr,H_out: self.pseD/self.tseD*I_se*(1-self.h_sat(H_in,H_cr,H_out,t)) - self.dI_crD=lambda t,I_cr,H_in,H_cr,H_out: self.pcrD/self.tcrD*I_cr*(1-self.h_sat(H_in,H_cr,H_out,t)) - - # Daily Infected - self.dI_as_d = lambda t,E_as,I_as_d: self.pasas/self.tasas*E_as - I_as_d - self.dI_mi_d = lambda t,E_sy,I_mi_d: self.psymi/self.tsymi*E_sy - I_mi_d - self.dI_se_d = lambda t,E_sy,I_se_d: self.psyse/self.tsyse*E_sy - I_se_d - self.dI_cr_d = lambda t,E_sy,I_cr_d: self.psycr/self.tsycr*E_sy - I_cr_d - - # Daily Deads - self.dH_crD_d=lambda t,H_cr,V,H_crD_d: self.pcrinD/self.tcrinD*H_cr*(1-self.v_sat(V,t)) - H_crD_d - self.dVD_d=lambda t,V,VD_d: self.pVD/self.tVD*V - VD_d - self.dI_seD_d=lambda t,I_se,H_in,H_cr,H_out,I_seD_d: self.pseD/self.tseD*I_se*(1-self.h_sat(H_in,H_cr,H_out,t)) - I_seD_d - self.dI_crD_d=lambda t,I_cr,H_in,H_cr,H_out,I_crD_d: self.pcrD/self.tcrD*I_cr*(1-self.h_sat(H_in,H_cr,H_out,t)) - I_crD_d - - - - - # UCI and UTI beds saturation function - def h_sat(self,H_in,H_cr,H_out,t): - return(expit(-self.gw*(H_in+H_cr+H_out-self.Htot(t)))) - # Ventilators Saturation Function - def v_sat(self,V,t): - return(expit(-self.gw*(V-self.Vtot(t)))) - - def setparams(self): - self.mu = 2.6 - - self.beta = 0.19 # (*probabilidad de transmision por contacto con contagiados*) - self.betaD = 0.0 #(*probabilidad de transmision por contacto con muertos*) - - self.pSas = 1#3 # Transicion de Susceptible a Expuesto Asintomatico - self.tSas = 1.0 - - self.pSsy = 0#7 # Transicion de Susceptible a Expuesto sintomatico - self.tSsy = 1.0 - - self.pasas = 1.0# Transicion de Expuesto asintomatico a Infectado asintomatico - self.tasas = 5.0 - - self.psymi = 0.8333#78 # Transicion de Expuesto Sintomatico a Infectado Mild - self.tsymi = 5.0 - - self.psycr = 0.05555#8 # Transicion de Expuesto Sintomatico a Infectado critico - self.tsycr = 3.0 - - self.psyse = 0.11111#14 # Transicion de Expuesto Sintomatico a Infectado Severo - self.tsyse = 3.0 - - self.pasR = 1.0 # Transicion de Infectado asintomatico a Recuperado - self.tasR = 10.0 - - self.pmiR = 1.0 # Transicion de Infectado mild a Recuperado - self.tmiR = 15.0 - - self.psein = 1.0 # Transicion de Infectado serio a Hospitalizado (si no ha colapsado Htot) - self.tsein = 3.0 - - self.pincrin = 0.03 # Transicion de Hospitalizado a Hospitalizado Critico (si no ha colapsado Htot) - self.tincrin = 3.0 - - self.pcrcrin = 1.0 # Transicion de Infectado critico a Hopsitalizado Critico (si no ha colapsado Htot) - self.tcrcrin = 3.0 - - self.pcrinV = 1.0 # Transicion de Hospitalizado critico a Ventilado (si no ha colapsado V) - self.tcrinV = 0.01 - - self.pcrinD = 1.0 # Muerte de hospitalizado critico (Cuando V colapsa) - self.tcrinD = 0.001 # - - self.pcrD = 1.0 # Muerte de Infectado critico (si ha colapsado Htot) - self.tcrD = 3.0 #(*Hin+H_cr_in+Hout colapsa*) - - self.pseD = 1.0 # Muerte de Infectado severo (si ha colapsado Htot) - self.tseD = 3.0 - - self.pinout = 0.97 # Mejora de paciente severo hospitalizado, transita a Hout - self.tinout = 6.0 - - self.pVout = 0.5 # Mejora de ventilado hospitalizado, transita a Hout - self.tVout = 15.0 - - self.pVD = 0.5 # Muerte de ventilado - self.tVD = 15.0 - - self.poutR = 1.0 # Mejora del paciente hospitalizado, Hout a R - self.toutR = 5.0 - - self.pDB = 1.0 # Entierros - self.tDB = 1.0 - - self.pcrV = 1.0 # Transicion de Hospitalizado critico a Ventilado (si no ha colapsado V) - self.tcrV = 3.0 - - self.eta = 0.0 # tasa de perdida de inmunidad (1/periodo) - - - # ------------------- # - # Valores Iniciales # - # ------------------- # - - def setinitvalues(self): - # 15 de Mayo - self.I_act0 = 12642 - self.res=1 - self.muS=self.mu - self.H_incr = 34 - self.H_incr2 = 0 - self.H_incr3 = 0 - self.V_incr = 17 - self.V_incr2 = 0 - self.V_incr3 = 0 - self.Vc0 = 1029 - self.Hc0 = 1980 - self.H0=1720 #1980#1903.0 - self.H_cr=80.0 - self.gw=10 - self.D=26.0 - self.B=221.0 - self.R=0.0 - self.V=758.0#846.0 - self.mu=1.4 - self.t=400.0 - self.CV=0 - self.CH=0 - self.ACV=0 - self.ACH=0 - self.SeroPrevFactor = 1 - self.population = 8125072 - - self.Hmax = 3000 - self.Vmax = 1500 - self.expinfection = 0 - - # Accumulated Infected - self.I_as_ac = 0 - self.I_mi_ac = 0 - self.I_se_ac = 0 - self.I_cr_ac = 0 - - # Deaths - self.H_crD = 0 - self.VD = 0 - self.I_seD = 0 - self.I_crD = 0 - - # Daily Infected - self.I_as_d = 0 - self.I_mi_d = 0 - self.I_se_d = 0 - self.I_cr_d = 0 - - # Daily Deaths - self.H_crD_d = 0 - self.VD_d = 0 - self.I_seD_d = 0 - self.I_crD_d = 0 - - # Initial Infected proportion - self.I_as_prop = 1 - self.I_mi_prop = 0 - self.I_cr_prop = 0 - self.I_se_prop = 0 - - # Saturated Kinetics - self.k = 0 - - self.setrelationalvalues() - - def setrelationalvalues(self): - self.I_as= self.I_as_prop*self.I_act0 - self.I_mi= self.I_mi_prop*self.I_act0 - self.I_cr= self.I_cr_prop*self.I_act0 - self.I_se = self.I_se_prop*self.I_act0 - # Expuestos - - self.E_as=0.3*self.mu*self.I_act0 - self.E_sy=0.7*self.mu*self.I_act0 - # Hospitalizados - #self.V+=(self.I_act0-(self.I_as+self.I_mi+self.I_cr+self.I_se))*0.05 - self.H_in=self.H0*0.42-self.H_cr/2 #+ (self.I_act0-(self.I_as+self.I_mi+self.I_cr+self.I_se))*0.1 - self.H_out=self.H0*0.58-self.H_cr/2 - - # Valores globales - self.SeroPrevPop = self.SeroPrevFactor*self.population - self.S=self.SeroPrevPop-self.H0-self.V-self.D-(self.E_as+self.E_sy)-(self.I_as+self.I_cr+self.I_se+self.I_mi) - self.N=(self.S+self.E_as+self.E_sy+self.I_as+self.I_mi+self.I_se+self.I_cr+self.H_in+self.H_cr+self.H_out+self.V+self.D+self.R) - self.I=self.I_cr+self.I_as+self.I_se+self.I_mi - - #constructor of SEIR class elements, it's initialized when a parameter - #miminization is performed to adjust the best setting of the actual infected - - def setscenario(self,tsim,max_mov,rem_mov,qp,iqt,fqt,movfunct): - self.tsim = tsim - self.max_mov = max_mov - self.rem_mov = rem_mov - self.qp = qp - self.iqt = iqt - self.fqt = fqt - if movfunct == 0: - self.movfunct = 'once' - elif movfunct == 1: - self.movfunct = 'square' - elif movfunct == 2: - self.movfunct = 'sawtooth' - else: - self.movfunct = 'once' - - self.alpha = self.alphafunct(self.max_mov,self.rem_mov,self.qp,self.iqt,self.fqt,self.movfunct) - return() - - - - def alphafunct(self,max_mov,rem_mov,qp,iqt=0,fqt=300,movfunct = 'once'): - """ - # max_mov: Movilidad sin cuarentena - # rem_mov: Movilidad con cuarentena - # qp: Periodo cuarentena dinamica - # - qp >0 periodo Qdinamica - # - qp = 0 sin qdinamica - # iqt: Initial quarantine time. Tiempo inicial antes de cuarentena dinamica - # - iqt>0 inicia con cuarentena total hasta iqt - # - iqt<0 sin cuarentena hasta iqt - # fqt: Final quarantine time. Duracion tiempo cuarentena - # movfunct: Tipo de cuarentena dinamica desde iqt - # - once: una vez durante qp dias - # - total: total desde iqt - # - sawtooth: diente de cierra - # - square: onda cuadrada - """ - def alpha(t): - if 'square' in movfunct: - def f(t): - return signal.square(t) - if t0: - return(rem_mov) - else: - return(max_mov) - else: - if qp == 0: - return(max_mov) - elif tfqt: - return(max_mov) - else: - return(rem_mov) - - - elif 'sawtooth' in movfunct: - def f(t): - return signal.sawtooth(t) - if t0: - return(rem_mov) - else: - return(max_mov) - else: - if qp == 0: - return(max_mov) - elif t=24: - self.sims = [] - for i in range(len(self.inputarray)): - self.sims.append(self.sim_run(self.inputarray[i,0],self.inputarray[i,1],self.inputarray[i,2],self.inputarray[i,3],self.inputarray[i,4],self.inputarray[i,5],self.inputarray[i,6])) - #params=Parallel(n_jobs=num_cores, verbose=50)(delayed(ref_test.refinepso_all)(Ir,tr,swarmsize=200,maxiter=50,omega=0.5, phip=0.5, phig=0.5,eta_r=[0,1],Q_r=[0,1],obj_func='IN')for i in range(int(rep))) - else: - self.sims=Parallel(n_jobs=num_cores, verbose=50)(delayed(self.sim_run)(self.inputarray[i,0],self.inputarray[i,1],self.inputarray[i,2],self.inputarray[i,3],self.inputarray[i,4],self.inputarray[i,5],self.inputarray[i,6]) for i in range(self.inputarray.shape[0])) - self.simulated = True - return(self.sims) - - def getscenarios(self): - return() - def addscenario(self,inputarray): - return() - - - - - -class SEIRHUDV : - def __init__(self,tsim,max_mov,rem_mov,qp,iqt,fqt,movfunct): - #print(max_mov) - self.setparams() - self.setinitvalues() - #print(max_mov) - self.setscenario(tsim,max_mov,rem_mov,qp,iqt,fqt,movfunct) - #global mobility reduction parameters - #self.alpha=alpha - # total Hostipatl beds - - - # --------------------------- # - # Diferential Ecuations # - # --------------------------- # - - # dVariable/dt = sum(prob_i/in_time_i*in_State_i,i in in states) - sum(prob_i/out_time_i*out_State_i,i in in states) - - # Susceptibles - # dS/dt: - self.dS=lambda t,S,E_as,E_sy,I_as,I_mi,D,R: -self.alpha(t)*self.beta*S*(self.expinfection*(E_as+E_sy)+I_as+I_mi)/self.N-self.betaD*D+self.eta*R - - # Exposed - # dE_as/dt - self.dE_as=lambda t,S,E_as,E_sy,I_as,I_mi: self.pSas/self.tSas*self.alpha(t)*self.beta*S*(self.expinfection*(E_as+E_sy)+I_as+I_mi)/self.N\ - -self.pasas/self.tasas*E_as - # dE_sy/dt - self.dE_sy=lambda t,S,E_as,E_sy,I_as,I_mi: self.pSsy/self.tSsy*self.alpha(t)*self.beta*S*(self.expinfection*(E_as+E_sy)+I_as+I_mi)/self.N\ - -self.psymi/self.tsymi*E_sy-self.psyse/self.tsyse*E_sy-self.psycr/self.tsycr*E_sy - - # Infected - # dI_as/dt - self.dI_as=lambda t,E_as,I_as: self.pasas/self.tasas*E_as-self.pasR/self.tasR*I_as - # dI_mi/dt - self.dI_mi=lambda t,E_sy,I_mi: self.psymi/self.tsymi*E_sy-self.pmiR/self.tmiR*I_mi - # dI_se/dt: Esy - - self.dI_se=lambda t,E_sy,I_se,H_in,H_cr,H_out: self.psyse/self.tsyse*E_sy-self.psein/self.tsein*I_se*(self.h_sat(H_in,H_cr,H_out,t))\ - -self.pseD/self.tseD*I_se*(1-self.h_sat(H_in,H_cr,H_out,t)) - # dI_cr/dt - self.dI_cr=lambda t,E_sy,I_cr,H_in,H_cr,H_out: self.psycr/self.tsycr*E_sy-self.pcrcrin/self.tcrcrin*I_cr*(self.h_sat(H_in,H_cr,H_out,t))\ - -self.pcrD/self.tcrD*I_cr*(1-self.h_sat(H_in,H_cr,H_out,t)) - - # Hospitalized - # dH_in/dt: Hospitalized arriving to the hospital - self.dH_in=lambda t,I_se,H_in,H_cr,H_out: self.psein/self.tsein*I_se*(self.h_sat(H_in,H_cr,H_out,t))\ - -self.pinout/self.tinout*H_in-self.pincrin/self.tincrin*H_in - # dH_cr/dt: Hospitalized in critical conditions - self.dH_cr=lambda t,I_cr,H_in,H_cr,H_out,V: self.pcrcrin/self.tcrcrin*I_cr*(self.h_sat(H_in,H_cr,H_out,t))\ - -self.pcrinV/self.tcrinV*H_cr*self.v_sat(V,t)-self.pcrinD/self.tcrinD*H_cr*(1-self.v_sat(V,t))+self.pincrin/self.tincrin*H_in - # dH_out/dt: Hospitalized getting better - self.dH_out=lambda t,H_in,H_out,V: self.pVout/self.tVout*V+self.pinout/self.tinout*H_in-self.poutR/self.toutR*H_out - # dV/dt: Ventilator necessity rates - self.dV=lambda t,H_cr,V: self.pcrinV/self.tcrinV*H_cr*self.v_sat(V,t)-self.pVout/self.tVout*V-self.pVD/self.tVD*V - - - # Deaths - # dD/dt: Death Rate - self.dD=lambda t,I_se,I_cr,H_in,H_cr,H_out,V,D: self.pVD/self.tVD*V+self.pcrD/self.tcrD*I_cr*(1-self.h_sat(H_in,H_cr,H_out,t))+\ - self.pseD/self.tseD*I_se*(1-self.h_sat(H_in,H_cr,H_out,t))+self.pcrinD/self.tcrinD*H_cr*(1-self.v_sat(V,t))-self.pDB/self.tDB*D - # dB/dt: Bury rate - self.dB=lambda t,D: self.pDB/self.tDB*D - - # Recovered - # dR/dt - self.dR=lambda t,I_as,I_mi,H_out,R: self.pasR/self.tasR*I_as+self.pmiR/self.tmiR*I_mi+self.poutR/self.toutR*H_out-self.eta*R - - #Auxiliar functions: - self.dI=lambda t,E_as,E_sy: self.pasas/self.tasas*E_as+self.psymi/self.tsymi*E_sy+self.psyse/self.tsyse*E_sy+self.psycr/self.tsycr*E_sy - self.dCV=lambda t,I_cr,H_in,H_cr,H_out,V,CV:self.pcrD/self.tcrD*I_cr*(1-self.h_sat(H_in,H_cr,H_out,t))+self.pcrinD/self.tcrinD*H_cr*(1-self.v_sat(V,t))-CV - self.dCH=lambda t,I_se,H_in,H_cr,H_out,CH:self.pseD/self.tseD*I_se*(1-self.h_sat(H_in,H_cr,H_out,t))-CH - self.dACV=lambda t,CV: CV - self.dACH=lambda t,CH: CH - - # Accummulated Infected - self.dI_as_ac = lambda t,E_as: self.pasas/self.tasas*E_as - self.dI_mi_ac = lambda t,E_sy: self.psymi/self.tsymi*E_sy - self.dI_se_ac = lambda t,E_sy: self.psyse/self.tsyse*E_sy - self.dI_cr_ac = lambda t,E_sy: self.psycr/self.tsycr*E_sy - - # Fallecidos - self.dH_crD=lambda t,H_cr,V: self.pcrinD/self.tcrinD*H_cr*(1-self.v_sat(V,t)) - self.dVD=lambda t,V: self.pVD/self.tVD*V - self.dI_seD=lambda t,I_se,H_in,H_cr,H_out: self.pseD/self.tseD*I_se*(1-self.h_sat(H_in,H_cr,H_out,t)) - self.dI_crD=lambda t,I_cr,H_in,H_cr,H_out: self.pcrD/self.tcrD*I_cr*(1-self.h_sat(H_in,H_cr,H_out,t)) - - # Daily Infected - self.dI_as_d = lambda t,E_as,I_as_d: self.pasas/self.tasas*E_as - I_as_d - self.dI_mi_d = lambda t,E_sy,I_mi_d: self.psymi/self.tsymi*E_sy - I_mi_d - self.dI_se_d = lambda t,E_sy,I_se_d: self.psyse/self.tsyse*E_sy - I_se_d - self.dI_cr_d = lambda t,E_sy,I_cr_d: self.psycr/self.tsycr*E_sy - I_cr_d - - # Daily Deads - self.dH_crD_d=lambda t,H_cr,V,H_crD_d: self.pcrinD/self.tcrinD*H_cr*(1-self.v_sat(V,t)) - H_crD_d - self.dVD_d=lambda t,V,VD_d: self.pVD/self.tVD*V - VD_d - self.dI_seD_d=lambda t,I_se,H_in,H_cr,H_out,I_seD_d: self.pseD/self.tseD*I_se*(1-self.h_sat(H_in,H_cr,H_out,t)) - I_seD_d - self.dI_crD_d=lambda t,I_cr,H_in,H_cr,H_out,I_crD_d: self.pcrD/self.tcrD*I_cr*(1-self.h_sat(H_in,H_cr,H_out,t)) - I_crD_d - - - # UCI and UTI beds saturation function - def h_sat(self,H_in,H_cr,H_out,t): - return(expit(-self.gw*(H_in+H_cr+H_out-self.Htot(t)))) - # Ventilators Saturation Function - def v_sat(self,V,t): - return(expit(-self.gw*(V-self.Vtot(t)))) - - def setparams(self): - self.mu = 2.6 - - self.beta = 0.19 # (*probabilidad de transmision por contacto con contagiados*) - self.betaD = 0.0 #(*probabilidad de transmision por contacto con muertos*) - - self.pSas = 0.4#3 # Transicion de Susceptible a Expuesto Asintomatico - self.tSas = 1.0 - - self.pSsy = 0.6#7 # Transicion de Susceptible a Expuesto sintomatico - self.tSsy = 1.0 - - self.pasas = 1.0# Transicion de Expuesto asintomatico a Infectado asintomatico - self.tasas = 5.0 - - self.psymi = 0.916#0.78 # Transicion de Expuesto Sintomatico a Infectado Mild - self.tsymi = 5.0 - - self.psycr = 0.02777#0.8 # Transicion de Expuesto Sintomatico a Infectado critico 0.05 - self.tsycr = 3.0 #5 - - self.psyse = 0.05555#0.14 # Transicion de Expuesto Sintomatico a Infectado Severo 0.017 - self.tsyse = 3.0 #5 - - self.pasR = 1.0 # Transicion de Infectado asintomatico a Recuperado - self.tasR = 10.0 - - self.pmiR = 1.0 # Transicion de Infectado mild a Recuperado - self.tmiR = 15.0 - - self.psein = 1.0 # Transicion de Infectado serio a Hospitalizado (si no ha colapsado Htot) - self.tsein = 3.0 - - self.pincrin = 0.03 # Transicion de Hospitalizado a Hospitalizado Critico (si no ha colapsado Htot) - self.tincrin = 3.0 - - self.pcrcrin = 1.0 # Transicion de Infectado critico a Hopsitalizado Critico (si no ha colapsado Htot) - self.tcrcrin = 3.0 - - self.pcrinV = 1.0 # Transicion de Hospitalizado critico a Ventilado (si no ha colapsado V) - self.tcrinV = 0.01 - - self.pcrinD = 1.0 # Muerte de hospitalizado critico (Cuando V colapsa) - self.tcrinD = 3.0 # - - self.pcrD = 1.0 # Muerte de Infectado critico (si ha colapsado Htot) - self.tcrD = 3.0 #(*Hin+H_cr_in+Hout colapsa*) - - self.pseD = 1.0 # Muerte de Infectado severo (si ha colapsado Htot) - self.tseD = 3.0 - - self.pinout = 0.97 # Mejora de paciente severo hospitalizado, transita a Hout - self.tinout = 6.0 - - self.pVout = 0.5#75 # Mejora de ventilado hospitalizado, transita a Hout - self.tVout = 15.0 - - self.pVD = 0.5#25 # Muerte de ventilado - self.tVD = 15.0 - - self.poutR = 1.0 # Mejora del paciente hospitalizado, Hout a R - self.toutR = 5.0 - - self.pDB = 1.0 # Entierros - self.tDB = 1.0 - - self.eta = 0.0 # tasa de perdida de inmunidad (1/periodo) - - - # ------------------- # - # Valores Iniciales # - # ------------------- # - - def setinitvalues(self): - # 15 de Mayo - self.I_act0 = 12642 - self.res=1 - self.muS=self.mu - self.H_incr = np.poly1d(34) - self.H_incr2 = 0 - self.H_incr3 = 0 - self.V_incr = np.poly1d(17) - self.V_incr2 = 0 - self.V_incr3 = 0 - self.Vc0 = 1029 - self.Hc0 = 1980 - self.H0=1720 #1980#1903.0 - self.H_cr=80.0 - self.gw=10 - self.D=26.0 - self.B=221.0 - self.R=0.0 - self.V=758.0#846.0 - self.mu=1.4 - self.t=400.0 - self.CV=0 - self.CH=0 - self.ACV=0 - self.ACH=0 - self.SeroPrevFactor = 1 - self.population = 8125072 - - self.Hmax = 3000 - self.Vmax = 1500 - self.expinfection = 0 - - # Accumulated Infected - self.I_as_ac = 0 - self.I_mi_ac = 0 - self.I_se_ac = 0 - self.I_cr_ac = 0 - - # Deaths - self.H_crD = 0 - self.VD = 0 - self.I_seD = 0 - self.I_crD = 0 - - # Daily Infected - self.I_as_d = 0 - self.I_mi_d = 0 - self.I_se_d = 0 - self.I_cr_d = 0 - - # Daily Deaths - self.H_crD_d = 0 - self.VD_d = 0 - self.I_seD_d = 0 - self.I_crD_d = 0 - - # Initial Infected proportion - self.I_as_prop = 0.35 - self.I_mi_prop = 0.63 - self.I_cr_prop = 0.007 - self.I_se_prop = 0.013 - - self.setrelationalvalues() - - def setrelationalvalues(self): - self.I_as= self.I_as_prop*self.I_act0 - self.I_mi= self.I_mi_prop*self.I_act0 - self.I_cr= self.I_cr_prop*self.I_act0 - self.I_se = self.I_se_prop*self.I_act0 - - # Expuestos - self.E_as=0.3*self.mu*self.I_act0 - self.E_sy=0.7*self.mu*self.I_act0 - - # Hospitalizados - #self.V+=(self.I_act0-(self.I_as+self.I_mi+self.I_cr+self.I_se))*0.05 - self.H_in=self.H0*0.70-self.H_cr/2 #+ (self.I_act0-(self.I_as+self.I_mi+self.I_cr+self.I_se))*0.1 - self.H_out=self.H0*0.30-self.H_cr/2 - - # Valores globales - self.SeroPrevPop = self.SeroPrevFactor*self.population - self.S=self.SeroPrevPop-self.H0-self.V-self.D-(self.E_as+self.E_sy)-(self.I_as+self.I_cr+self.I_se+self.I_mi) - self.N=(self.S+self.E_as+self.E_sy+self.I_as+self.I_mi+self.I_se+self.I_cr+self.H_in+self.H_cr+self.H_out+self.V+self.D+self.R) - self.I=self.I_cr+self.I_as+self.I_se+self.I_mi - - #constructor of SEIR class elements, it's initialized when a parameter - #miminization is performed to adjust the best setting of the actual infected - - def setscenario(self,tsim,max_mov,rem_mov,qp,iqt,fqt,movfunct): - self.tsim = tsim - self.max_mov = max_mov - self.rem_mov = rem_mov - self.qp = qp - self.iqt = iqt - self.fqt = fqt - if movfunct == 0: - self.movfunct = 'once' - elif movfunct == 1: - self.movfunct = 'square' - elif movfunct == 2: - self.movfunct = 'sawtooth' - else: - self.movfunct = 'once' - - self.alpha = self.alphafunct(self.max_mov,self.rem_mov,self.qp,self.iqt,self.fqt,self.movfunct) - return() - - - - def alphafunct(self,max_mov,rem_mov,qp,iqt=0,fqt=300,movfunct = 'once'): - """ - # max_mov: Movilidad sin cuarentena - # rem_mov: Movilidad con cuarentena - # qp: Periodo cuarentena dinamica - # - qp >0 periodo Qdinamica - # - qp = 0 sin qdinamica - # iqt: Initial quarantine time. Tiempo inicial antes de cuarentena dinamica - # - iqt>0 inicia con cuarentena total hasta iqt - # - iqt<0 sin cuarentena hasta iqt - # fqt: Final quarantine time. Duracion tiempo cuarentena - # movfunct: Tipo de cuarentena dinamica desde iqt - # - once: una vez durante qp dias - # - total: total desde iqt - # - sawtooth: diente de cierra - # - square: onda cuadrada - """ - def alpha(t): - if 'square' in movfunct: - def f(t): - return signal.square(t) - if t0: - return(rem_mov) - else: - return(max_mov) - else: - if qp == 0: - return(max_mov) - elif tfqt: - return(max_mov) - else: - return(rem_mov) - - - elif 'sawtooth' in movfunct: - def f(t): - return signal.sawtooth(t) - if t0: - return(rem_mov) - else: - return(max_mov) - else: - if qp == 0: - return(max_mov) - elif t0 periodo Qdinamica - # - qp = 0 sin qdinamica - # iqt: Initial quarantine time. Tiempo inicial antes de cuarentena dinamica - # - iqt>0 inicia con cuarentena total hasta iqt - # - iqt<0 sin cuarentena hasta iqt - # fqt: Final quarantine time. Duracion tiempo cuarentena - # movfunct: Tipo de cuarentena dinamica desde iqt - # - once: una vez durante qp dias - # - total: total desde iqt - # - sawtooth: diente de cierra - # - square: onda cuadrada - """ - def alpha(t): - if 'square' in movfunct: - def f(t): - return signal.square(t) - if t0: - return(rem_mov) - else: - return(max_mov) - else: - if qp == 0: - return(max_mov) - elif tfqt: - return(max_mov) - else: - return(rem_mov) - - - elif 'sawtooth' in movfunct: - def f(t): - return signal.sawtooth(t) - if t0: - return(rem_mov) - else: - return(max_mov) - else: - if qp == 0: - return(max_mov) - elif t0: - qtype ="Cuarentena Dinámica" - - print("Escenario "+str(i)) - print("Tipo de Cuarentena: "+qtype+'\nmov_rem: '+str(self.inputarray[i][2])+'\nmov_max: '+str(self.inputarray[i][2])+ - "\nInicio cuarentena: "+(self.initdate+timedelta(days=self.inputarray[i][4])).strftime('%Y/%m/%d')+"\nFin cuarentena: "+(self.initdate+timedelta(days=self.inputarray[i][5])).strftime('%Y/%m/%d')) - print("Peak infetados \n"+"Peak value: "+str(self.peak[i])+"\nPeak date: "+str(self.peak_date[i])) - print("Fallecidos totales:"+str(max(self.B[i]))) - print("Fecha de colapso hospitalario \n"+"Camas: "+self.H_colapsedate[i]+"\nVentiladores: "+self.V_colapsedate[i]) - print("\n") - """ - - - def integr(self,t0,T,h,E0init=False): - #integrator function that star form t0 and finish with T with h as - #timestep. If there aren't inital values in [t0,T] function doesn't - #start. Or it's start if class object is initialze. - print('Import odeint') - from scikits.odes.odeint import odeint - - - if(not isinstance(self.S, np.ndarray)): - #pass if object is initalized - if(E0init): - E0=self.mu*(self.I) - E_d0=self.mu*(self.I_d) - E_ac0=self.mu*(self.I_ac) - else: - E0 = self.E - E_d0 = self.mu*(self.I_d) - E_ac0 = self.mu*(self.I_ac) - - S0=self.S - - E0=self.E - E_d0=self.E_d - E_ac0=self.E_ac - - Ias0=self.Ias - Imi0=self.Imi - Ise0=self.Ise - Icr0=self.Icr - - Ias_d0=self.Ias_d - Imi_d0=self.Imi_d - Ise_d0=self.Ise_d - Icr_d0=self.Icr_d - - Ias_ac0=self.Ias_ac - Imi_ac0=self.Imi_ac - Ise_ac0=self.Ise_ac - Icr_ac0=self.Icr_ac - - Hse0=self.Hse - Hout0=self.Hout - V0=self.V - - Hse_d0= self.Hse_d - Hout_d0= self.Hout_d - V_d0= self.V_d - - Hse_ac0= self.Hse_ac - Hout_ac0= self.Hout_ac - V_ac0= self.V_ac - - R0=self.R - R_d0=self.R_d - - D0=self.D - B0=self.B - - Ise_D_d0 = self.Ise_D_d - Icr_D_d0 = self.Icr_D_d - Hse_D_d0 = self.Hse_D_d - V_D_d0 = self.V_D_d - - Ise_D_ac0 = self.Ise_D_ac - Icr_D_ac0 = self.Icr_D_ac - Hse_D_ac0 = self.Hse_D_ac - V_D_ac0 = self.V_D_ac - - - - self.t=np.arange(t0,T+h,h) - - elif((min(self.t)<=t0) & (t0<=max(self.t))): - #Condition over exiting time in already initialized object - - #Search fot initial time - idx=np.searchsorted(self.t,t0) - - #set initial condition - - E0 = self.E - E_d0 = self.E_d - E_ac0 ==self.E_ac - - S0=self.S[idx] - Ias0=self.Ias[idx] - Imi0=self.Imi[idx] - Ise0=self.Ise[idx] - Icr0=self.Icr[idx] - - Ias_d0=self.Ias_d[idx] - Imi_d0=self.Imi_d[idx] - Ise_d0=self.Ise_d[idx] - Icr_d0=self.Icr_d[idx] - - Ias_ac0=self.Ias_ac[idx] - Imi_ac0=self.Imi_ac[idx] - Ise_ac0=self.Ise_ac[idx] - Icr_ac0=self.Icr_ac[idx] - - Hse0=self.Hse[idx] - Hout0=self.Hout[idx] - V0=self.V[idx] - - Hse_d0=self.Hse_d[idx] - Hout_d0=self.Hout_d[idx] - V_d0=self.V_d[idx] - - Hse_ac0=self.Hse_ac[idx] - Hout_ac0=self.Hout_ac[idx] - V_ac0=self.V_ac[idx] - - R0=self.R[idx] - R_d0=self.R_d[idx] - - D0=self.D[idx] - B0=self.B[idx] - - Ise_D_d0 = self.Ise_D_d[idx] - Icr_D_d0 = self.Icr_D_d[idx] - Hse_D_d0 = self.Hse_D_d[idx] - V_D_d0 = self.V_D_d[idx] - - Ise_D_ac0 = self.Ise_D_ac[idx] - Icr_D_ac0 = self.Icr_D_ac[idx] - Hse_D_ac0 = self.Hse_D_ac[idx] - V_D_ac0 = self.V_D_ac[idx] - - - #set time grid - self.t=np.arange(self.t[idx],T+h,h) - - else: - return() - - - def model_SEIR_graph(t,y,ydot): - - ydot[0]=self.dS(t,y[0],y[1],y[2],y[3],y[4],y[5],y[19],y[20]) - - ydot[1]=self.dE(t,y[0],y[1],y[2],y[3],y[4],y[5]) - ydot[2]=self.dE_d(t,y[0],y[1],y[2],y[4],y[5],y[6],y[7]) - ydot[3]=self.dE_ac(t,y[0],y[1],y[4],y[5],y[6],y[7]) - - ydot[4]=self.dIas(t,y[1],y[4]) - ydot[5]=self.dImi(t,y[1],y[5]) - ydot[6]=self.dIse(t,y[1],y[6],y[16],y[17]) - ydot[7]=self.dIcr(t,y[1],y[7],y[18]) - - ydot[8]=self.dIas_d(t,y[1],y[8]) - ydot[9]=self.dImi_d(t,y[1],y[9]) - ydot[10]=self.dIse_d(t,y[1],y[10]) - ydot[11]=self.dIcr_d(t,y[1],y[11]) - - ydot[12]=self.dIas_ac(t,y[1]) - ydot[13]=self.dImi_ac(t,y[1]) - ydot[14]=self.dIse_ac(t,y[1]) - ydot[15]=self.dIcr_ac(t,y[1]) - - ydot[16]=self.dHse(t,y[6],y[16],y[17],y[18]) - ydot[17]=self.dHout(t,y[17],y[18]) - ydot[18]=self.dV(t,y[7],y[16],y[18]) - - ydot[19]=self.dHse_d(t,y[6],y[16],y[17],y[19]) - ydot[20]=self.dHout_d(t,y[18],y[20]) - ydot[21]=self.dV_d(t,y[7],y[16],y[18],y[21]) - - ydot[22]=self.dHse_ac(t,y[6],y[16],y[17]) - ydot[23]=self.dHout_ac(t,y[18]) - ydot[24]=self.dV_ac(t,y[7],y[16],y[18]) - - ydot[25]=self.dR(t,y[4],y[5],y[16],y[17],y[25]) - ydot[26]=self.dR_d(t,y[4],y[5],y[16],y[17],y[25],y[26]) - - ydot[27]=self.dD(t,y[6],y[7],y[16],y[17],y[18],y[27]) - ydot[28]=self.dB(t,y[27]) - - ydot[29]=self.dIse_D_d(t,y[6],y[16],y[17],y[29]) - ydot[30]=self.dIcr_D_d(t,y[7],y[16],y[17],y[18],y[30]) - ydot[31]=self.dHse_D_d(t,y[16],y[18],y[31]) - ydot[32]=self.dV_D_d(t,y[18],y[32]) - - ydot[33]=self.dIse_D_ac(t,y[6],y[16],y[17]) - ydot[34]=self.dIcr_D_ac(t,y[7],y[16],y[17],y[18]) - ydot[35]=self.dHse_D_ac(t,y[16],y[18]) - ydot[36]=self.dV_D_ac(t,y[18]) - - - - initcond = np.array([S0,E0,E_d0,E_ac0,Ias0,Imi0,Ise0,Icr0,Ias_d0,Imi_d0,Ise_d0,Icr_d0,Ias_ac0,Imi_ac0,Ise_ac0,Icr_ac0,Hse0,Hout0,V0,Hse_d0,Hout_d0,V_d0,Hse_ac0, - Hout_ac0,V_ac0,R0,R_d0,D0,B0,Ise_D_d0,Icr_D_d0,Hse_D_d0,V_D_d0,Ise_D_ac0,Icr_D_ac0,Hse_D_ac0,V_D_ac0]) - - print('Solving ODE') - sol = odeint(model_SEIR_graph, self.t, initcond,method='admo') - - self.t=sol.values.t - - self.S=sol.values.y[:,0] - - self.E=sol.values.y[:,1] - self.E_d=sol.values.y[:,2] - self.E_ac=sol.values.y[:,3] - - self.Ias=sol.values.y[:,4] - self.Imi=sol.values.y[:,5] - self.Ise=sol.values.y[:,6] - self.Icr=sol.values.y[:,7] - - self.Ias_d=sol.values.y[:,8] - self.Imi_d=sol.values.y[:,9] - self.Ise_d=sol.values.y[:,10] - self.Icr_d=sol.values.y[:,11] - - self.Ias_ac=sol.values.y[:,12] - self.Imi_ac=sol.values.y[:,13] - self.Ise_ac=sol.values.y[:,14] - self.Icr_ac=sol.values.y[:,15] - - self.Hse=sol.values.y[:,16] - self.Hout=sol.values.y[:,17] - self.V=sol.values.y[:,18] - - self.Hse_d=sol.values.y[:,19] - self.Hout_d=sol.values.y[:,20] - self.V_d=sol.values.y[:,21] - - self.Hse_ac=sol.values.y[:,22] - self.Hout_ac=sol.values.y[:,23] - self.V_ac=sol.values.y[:,24] - - self.R=sol.values.y[:,25] - self.R_d=sol.values.y[:,26] - - self.D=sol.values.y[:,27] - self.B=sol.values.y[:,28] - - self.Ise_D_d=sol.values.y[:,29] - self.Icr_D_d=sol.values.y[:,30] - self.Hse_D_d=sol.values.y[:,31] - self.V_D_d=sol.values.y[:,32] - - self.Ise_D_ac=sol.values.y[:,33] - self.Icr_D_ac=sol.values.y[:,34] - self.Hse_D_ac=sol.values.y[:,35] - self.V_D_ac=sol.values.y[:,36] - - - - self.I = self.Ias + self.Imi + self.Ise + self.Icr - self.I_d = self.Ias_d + self.Imi_d + self.Ise_d + self.Icr_d - self.I_ac = self.Ias_ac + self.Imi_ac + self.Ise_ac + self.Icr_ac - - self.H = self.Hse + self.Hout - self.H_d = self.Hse_d + self.Hout_d - self.H_ac = self.Hse_ac + self.Hout_ac - - self.H_sat = [self.h_sat(self.Hse[i],self.Hout[i],self.t[i]) for i in range(len(self.t))] - self.V_sat = [self.v_sat(self.V[i],self.t[i]) for i in range(len(self.t))] - - self.V_cap = [self.Vtot(i) for i in self.t] - self.H_cap = [self.Htot(i) for i in self.t] - - #Cálculo de la fecha del Peak - self.peakindex = np.where(self.I==max(self.I))[0][0] - self.peak = max(self.I) - self.peak_t = self.t[self.peakindex] - if self.initdate: - self.peak_date = self.initdate+timedelta(days=round(self.peak_t)) - - # Detected Cases - self.I_det = self.I*(self.Ias_det*self.pE_Ias + self.Imi_det*self.pE_Imi + self.pE_Ise + self.pE_Icr ) - self.I_d_det = self.I_d*(self.Ias_det*self.pE_Ias + self.Imi_det*self.pE_Imi + self.pE_Ise + self.pE_Icr ) - self.I_ac_det = self.I_ac*(self.Ias_det*self.pE_Ias + self.Imi_det*self.pE_Imi + self.pE_Ise + self.pE_Icr ) - - return(sol) - - def integr_sci(self,t0,T,h,E0init=False): - #integrator function that star form t0 and finish with T with h as - #timestep. If there aren't inital values in [t0,T] function doesn't - #start. Or it's start if class object is initialze. - - if(not isinstance(self.S, np.ndarray)): - #pass if object is initalized - if(E0init): - E0=self.mu*(self.I) - E_d0=self.mu*(self.I_d) - E_ac0=self.mu*(self.I_ac) - else: - E0 = self.E - E_d0 = self.mu*(self.I_d) - E_ac0 = self.mu*(self.I_ac) - - S0=self.S - - E0=self.E - E_d0=self.E_d - E_ac0=self.E_ac - - Ias0=self.Ias - Imi0=self.Imi - Ise0=self.Ise - Icr0=self.Icr - - Ias_d0=self.Ias_d - Imi_d0=self.Imi_d - Ise_d0=self.Ise_d - Icr_d0=self.Icr_d - - Ias_ac0=self.Ias_ac - Imi_ac0=self.Imi_ac - Ise_ac0=self.Ise_ac - Icr_ac0=self.Icr_ac - - Hse0=self.Hse - Hout0=self.Hout - V0=self.V - - Hse_d0= self.Hse_d - Hout_d0= self.Hout_d - V_d0= self.V_d - - Hse_ac0= self.Hse_ac - Hout_ac0= self.Hout_ac - V_ac0= self.V_ac - - R0=self.R - R_d0=self.R_d - - D0=self.D - B0=self.B - - Ise_D_d0 = self.Ise_D_d - Icr_D_d0 = self.Icr_D_d - Hse_D_d0 = self.Hse_D_d - V_D_d0 = self.V_D_d - - Ise_D_ac0 = self.Ise_D_ac - Icr_D_ac0 = self.Icr_D_ac - Hse_D_ac0 = self.Hse_D_ac - V_D_ac0 = self.V_D_ac - - self.t=np.arange(t0,T+h,h) - - elif((min(self.t)<=t0) & (t0<=max(self.t))): - #Condition over exiting time in already initialized object - - #Search fot initial time - idx=np.searchsorted(self.t,t0) - - #set initial condition - - E0 = self.E - E_d0 = self.E_d - E_ac0 ==self.E_ac - - S0=self.S[idx] - Ias0=self.Ias[idx] - Imi0=self.Imi[idx] - Ise0=self.Ise[idx] - Icr0=self.Icr[idx] - - Ias_d0=self.Ias_d[idx] - Imi_d0=self.Imi_d[idx] - Ise_d0=self.Ise_d[idx] - Icr_d0=self.Icr_d[idx] - - Ias_ac0=self.Ias_ac[idx] - Imi_ac0=self.Imi_ac[idx] - Ise_ac0=self.Ise_ac[idx] - Icr_ac0=self.Icr_ac[idx] - - Hse0=self.Hse[idx] - Hout0=self.Hout[idx] - V0=self.V[idx] - - Hse_d0=self.Hse_d[idx] - Hout_d0=self.Hout_d[idx] - V_d0=self.V_d[idx] - - Hse_ac0=self.Hse_ac[idx] - Hout_ac0=self.Hout_ac[idx] - V_ac0=self.V_ac[idx] - - R0=self.R[idx] - R_d0=self.R_d[idx] - - D0=self.D[idx] - B0=self.B[idx] - - Ise_D_d0 = self.Ise_D_d[idx] - Icr_D_d0 = self.Icr_D_d[idx] - Hse_D_d0 = self.Hse_D_d[idx] - V_D_d0 = self.V_D_d[idx] - - Ise_D_ac0 = self.Ise_D_ac[idx] - Icr_D_ac0 = self.Icr_D_ac[idx] - Hse_D_ac0 = self.Hse_D_ac[idx] - V_D_ac0 = self.V_D_ac[idx] - - #set time grid - self.t=np.arange(self.t[idx],T+h,h) - - - else: - return() - - - - def model_SEIR_graph(t,y): - ydot=np.zeros(len(y)) - ydot[0]=self.dS(t,y[0],y[1],y[2],y[3],y[4],y[5],y[19],y[20]) - - ydot[1]=self.dE(t,y[0],y[1],y[2],y[3],y[4],y[5]) - ydot[2]=self.dE_d(t,y[0],y[1],y[2],y[4],y[5],y[6],y[7]) - ydot[3]=self.dE_ac(t,y[0],y[1],y[4],y[5],y[6],y[7]) - - ydot[4]=self.dIas(t,y[1],y[4]) - ydot[5]=self.dImi(t,y[1],y[5]) - ydot[6]=self.dIse(t,y[1],y[6],y[16],y[17]) - ydot[7]=self.dIcr(t,y[1],y[7],y[18]) - - ydot[8]=self.dIas_d(t,y[1],y[8]) - ydot[9]=self.dImi_d(t,y[1],y[9]) - ydot[10]=self.dIse_d(t,y[1],y[10]) - ydot[11]=self.dIcr_d(t,y[1],y[11]) - - ydot[12]=self.dIas_ac(t,y[1]) - ydot[13]=self.dImi_ac(t,y[1]) - ydot[14]=self.dIse_ac(t,y[1]) - ydot[15]=self.dIcr_ac(t,y[1]) - - ydot[16]=self.dHse(t,y[6],y[16],y[17],y[18]) - ydot[17]=self.dHout(t,y[17],y[18]) - ydot[18]=self.dV(t,y[7],y[16],y[18]) - - ydot[19]=self.dHse_d(t,y[6],y[16],y[17],y[19]) - ydot[20]=self.dHout_d(t,y[18],y[20]) - ydot[21]=self.dV_d(t,y[7],y[16],y[18],y[21]) - - ydot[22]=self.dHse_ac(t,y[6],y[16],y[17]) - ydot[23]=self.dHout_ac(t,y[18]) - ydot[24]=self.dV_ac(t,y[7],y[16],y[18]) - - ydot[25]=self.dR(t,y[4],y[5],y[16],y[17],y[25]) - ydot[26]=self.dR_d(t,y[4],y[5],y[16],y[17],y[25],y[26]) - - ydot[27]=self.dD(t,y[6],y[7],y[16],y[17],y[18],y[27]) - ydot[28]=self.dB(t,y[27]) - - ydot[29]=self.dIse_D_d(t,y[6],y[16],y[17],y[29]) - ydot[30]=self.dIcr_D_d(t,y[7],y[16],y[17],y[18],y[30]) - ydot[31]=self.dHse_D_d(t,y[16],y[18],y[31]) - ydot[32]=self.dV_D_d(t,y[18],y[32]) - - ydot[33]=self.dIse_D_ac(t,y[6],y[16],y[17]) - ydot[34]=self.dIcr_D_ac(t,y[7],y[16],y[17],y[18]) - ydot[35]=self.dHse_D_ac(t,y[16],y[18]) - ydot[36]=self.dV_D_ac(t,y[18]) - - - return(ydot) - - initcond = np.array([S0,E0,E_d0,E_ac0,Ias0,Imi0,Ise0,Icr0,Ias_d0,Imi_d0,Ise_d0,Icr_d0,Ias_ac0,Imi_ac0,Ise_ac0,Icr_ac0,Hse0,Hout0,V0,Hse_d0,Hout_d0,V_d0,Hse_ac0, - Hout_ac0,V_ac0,R0,R_d0,D0,B0,Ise_D_d0,Icr_D_d0,Hse_D_d0,V_D_d0,Ise_D_ac0,Icr_D_ac0,Hse_D_ac0,V_D_ac0]) - - - sol = solve_ivp(model_SEIR_graph,(t0,T), initcond,method='LSODA') - - self.t=sol.t - - self.S=sol.y[0,:] - self.E=sol.y[1,:] - self.E_d=sol.y[2,:] - self.E_ac=sol.y[3,:] - self.Ias=sol.y[4,:] - self.Imi=sol.y[5,:] - self.Ise=sol.y[6,:] - self.Icr=sol.y[7,:] - self.Ias_d=sol.y[8,:] - self.Imi_d=sol.y[9,:] - self.Ise_d=sol.y[10,:] - self.Icr_d=sol.y[11,:] - self.Ias_ac=sol.y[12,:] - self.Imi_ac=sol.y[13,:] - self.Ise_ac=sol.y[14,:] - self.Icr_ac=sol.y[15,:] - self.Hse=sol.y[16,:] - self.Hout=sol.y[17,:] - self.V=sol.y[18,:] - self.Hse_d=sol.y[19,:] - self.Hout_d=sol.y[20,:] - self.V_d=sol.y[21,:] - self.Hse_ac=sol.y[22,:] - self.Hout_ac=sol.y[23,:] - self.V_ac=sol.y[24,:] - self.R=sol.y[25,:] - self.R_d=sol.y[26,:] - self.D=sol.y[27,:] - self.B=sol.y[28,:] - self.Ise_D_d=sol.y[29,:] - self.Icr_D_d=sol.y[30,:] - self.Hse_D_d=sol.y[31,:] - self.V_D_d=sol.y[32,:] - self.Ise_D_ac=sol.y[33,:] - self.Icr_D_ac=sol.y[34,:] - self.Hse_D_ac=sol.y[35,:] - self.V_D_ac=sol.y[36,:] - - - self.I = self.Ias + self.Imi + self.Ise + self.Icr - self.I_d = self.Ias_d + self.Imi_d + self.Ise_d + self.Icr_d - self.I_ac = self.Ias_ac + self.Imi_ac + self.Ise_ac + self.Icr_ac - - self.H = self.Hse + self.Hout - self.H_d = self.Hse_d + self.Hout_d - self.H_ac = self.Hse_ac + self.Hout_ac - - self.H_sat = [self.h_sat(self.Hse[i],self.Hout[i],self.t[i]) for i in range(len(self.t))] - self.V_sat = [self.v_sat(self.V[i],self.t[i]) for i in range(len(self.t))] - - self.V_cap = [self.Vtot(i) for i in self.t] - self.H_cap = [self.Htot(i) for i in self.t] - - #Cálculo de la fecha del Peak - self.peakindex = np.where(self.I==max(self.I))[0][0] - self.peak = max(self.I) - self.peak_t = self.t[self.peakindex] - if self.initdate: - self.peak_date = self.initdate+timedelta(days=round(self.peak_t)) - - # Detected Cases - self.I_det = self.I*(self.Ias_det*self.pE_Ias + self.Imi_det*self.pE_Imi + self.pE_Ise + self.pE_Icr ) - self.I_d_det = self.I_d*(self.Ias_det*self.pE_Ias + self.Imi_det*self.pE_Imi + self.pE_Ise + self.pE_Icr ) - self.I_ac_det = self.I_ac*(self.Ias_det*self.pE_Ias + self.Imi_det*self.pE_Imi + self.pE_Ise + self.pE_Icr ) - - return(sol) - - - - - - diff --git a/deprecated/src/SEIRHVD/class_SEIRHUVD5.py b/deprecated/src/SEIRHVD/class_SEIRHUVD5.py deleted file mode 100644 index 4d77085..0000000 --- a/deprecated/src/SEIRHVD/class_SEIRHUVD5.py +++ /dev/null @@ -1,1267 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -""" -SEIRHVD Model -""" - -import numpy as np - -from scipy.integrate import solve_ivp -from scipy.special import expit -from joblib import Parallel, delayed -from scipy import signal -import pandas as pd -from numpy import linalg as LA -import multiprocessing -from datetime import datetime -from datetime import timedelta - -""" -To do: - - Create reports function inside simSAEIRHVD class - - -SEIRHVD Implementation -Instructions: - Init a simSEIRHVD objecting giving the simulation condictions: - - tsim: Simulation time - - max_mov: - - rem_mov: - - qp: - - iqt: - - fqt: - - movfunct: - -""" - - -class SEIRHVD: - """ - SEIRHVD Object: - Construction: - SEIRHVD(tsim,beta,mu,alpha,k=0,Htot=30,Vtot=20) - with: - tsim: Simulation time - beta: Transmition rate - mu: E/I initial rate - alpha: Movility function (quarantine object function) - k: Saturation Kynetics Dynamics factor - Htot: Hospital capacity, either an int or a function(t) - Vtot: VMI capacity, either an int or a function(t) - """ - def __init__(self,tsim,beta,mu,alpha,k=0,chi = 0,k_I=0,k_R=0,Htot=30,Vtot=20, - H0=0,V0=0,B0=0,D0=0,R0=0,I0=100,I_d0=10,I_ac0=100,SeroPrevFactor=1,expinfection=0, - population=1000000,RealIC=None, initdate = None,Imi_det = 1,Ias_det = 1,Ise_det = 1,Icr_det = 1,SimIC=None): - - self.tsim = tsim - self.beta = beta - self.mu = mu - - self.alpha = alpha - - self.SeroPrevFactor = SeroPrevFactor - self.expinfection = expinfection - - self.Imi_det = Imi_det # Fraction of mild infected detected - self.Ias_det = Ias_det # Fraction of asymptomatic infected detected - self.Ise_det = Ise_det # Fraction of mild infected detected - self.Icr_det = Icr_det # Fraction of asymptomatic infected detected - - self.SimIC = SimIC - - - self.k = k - self.k_I = k_I - self.k_R = k_R - - # To add backcompatibility - if k > 0 and k_I == 0: - self.k_I = k - - if type(chi) == int: - self.chi = np.poly1d(0) - else: - self.chi = chi - - """ - I0 = Imi_det*Imi + Ias_det*Ias + Icr + Ise - Itot = Imi + Icr + Ise + Iac - Ias = Itot * pas - Imi = Itot * pmi - Ise = Itot * pse - Icr = Itot * pcr - - I0 = Imi_det*Itot*pmi + Itot*(pcr + pse) + Ias_det*Itot*pas - I0 = Itot(Imi_det*pmi + Ias_det*pas + pcr + pse) - - Itot = I0/(Imi_det*pmi + Ias_det*pas + pcr + pse) - """ - self.gw=20 - - self.initdate = initdate - # Initial Conditions: - #self.setinitvalues() - if RealIC: - IC = RealIC - # Use initial conditions object/dictionary with realworld imported initial conditions - - # Aproximate Hospitals capacity: - #Hcmodel = np.poly1d(np.polyfit(IC.sochimi_tr, IC.Hr_tot, 4)) - Hcmodel = np.poly1d(30000) - tsat = IC.sochimi_tr[-1] - Hmax = np.mean(IC.Hr_tot[-10:]) - self.Htot=lambda t: Hcmodel(t)*(1-expit(t-tsat)) + expit(t-tsat)*Hmax - - Vcmodel = np.poly1d(np.polyfit(IC.sochimi_tr, IC.Vr_tot, 4)) - tsat = IC.sochimi_tr[-1] - Vmax = np.mean(IC.Vr_tot[-10:]) - self.Vtot=lambda t: Vcmodel(t)*(1-expit(t-tsat)) + expit(t-tsat)*Vmax #+ 1000 - - # Set Initial values - if type(IC.Hr) == list: - self.H0 = IC.Hr[0] - else: - self.H0 = IC.Hr - self.V = IC.Vr[0] - self.B = IC.Br[0] - self.D = IC.Br[1]-IC.Br[0] - if 'R' in IC.__dict__: - self.R = IC.R[0] - else: - self.R = 0 - self.I0 = IC.Ir[0] - self.I_d0 = IC.I_d_r[0] - self.I_ac0 = IC.I_ac_r[0] - self.population = IC.population - self.initdate = IC.initdate - - self.Ise_D_d = 0 - self.Icr_D_d = 0 - self.Hse_D_d = 0 - self.V_D_d = 0 - - self.Ise_D_ac = 0 - self.Icr_D_ac = 0 - self.Hse_D_ac = 0 - self.V_D_ac = 0 - - self.R_d = 0 - - self.Hse_d = 0 - self.Hout_d = 0 - self.V_d = 0 - - self.Hse_ac = 0 - self.Hout_ac = 0 - self.V_ac = 0 - - self.setparams() - self.Einit = False - self.setrelationalvalues() - self.setequations() - print('InitialCondition Object Data') - - elif SimIC: - self.SimICinitdate = SimIC.initdate - self.population = SimIC.population - - # New Susceptible: - self.S = SimIC.S[-1] + SimIC.population*(1-SimIC.SeroPrevFactor)*self.SeroPrevFactor - self.N = SimIC.SeroPrevFactor*self.population + self.population*(1-SimIC.SeroPrevFactor)*self.SeroPrevFactor #Past simulation + added now - - # Exposed: - self.E = SimIC.E[-1] - self.E_d = SimIC.E_d[-1] - self.E_ac = SimIC.E_ac[-1] - - self.I = SimIC.I[-1] - self.I_d = SimIC.I_d[-1] - self.I_ac = SimIC.I_ac[-1] - - self.Ias = SimIC.Ias[-1] - self.Imi = SimIC.Imi[-1] - self.Ise = SimIC.Ise[-1] - self.Icr = SimIC.Icr[-1] - - self.Ias_d = SimIC.Ias_d[-1] - self.Imi_d = SimIC.Imi_d[-1] - self.Ise_d = SimIC.Ise_d[-1] - self.Icr_d = SimIC.Icr_d[-1] - - self.Ias_ac = SimIC.Ias_ac[-1] - self.Imi_ac = SimIC.Imi_ac[-1] - self.Ise_ac = SimIC.Ise_ac[-1] - self.Icr_ac = SimIC.Icr_ac[-1] - - self.R = SimIC.R[-1] - self.R_d = SimIC.R_d[-1] - - self.Hse = SimIC.Hse[-1] - self.Hout = SimIC.Hout[-1] - self.V = SimIC.V[-1] - - self.Hse_d = SimIC.Hse_d[-1] - self.Hout_d = SimIC.Hout_d[-1] - self.V_d = SimIC.V_d[-1] - - self.Hse_ac = SimIC.Hse_ac[-1] - self.Hout_ac = SimIC.Hout_ac[-1] - self.V_ac = SimIC.V_ac[-1] - - self.R = SimIC.R[-1] - self.R_d = SimIC.R_d[-1] - - self.D = SimIC.D[-1] - self.B = SimIC.B[-1] - - self.Ise_D_d = SimIC.Ise_D_d[-1] - self.Icr_D_d = SimIC.Icr_D_d[-1] - self.Hse_D_d = SimIC.Hse_D_d[-1] - self.V_D_d = SimIC.V_D_d[-1] - - self.Ise_D_ac = SimIC.Ise_D_ac[-1] - self.Icr_D_ac = SimIC.Icr_D_ac[-1] - self.Hse_D_ac = SimIC.Hse_D_ac[-1] - self.V_D_ac = SimIC.V_D_ac[-1] - - self.Einit = True - - # Falta trasladarlo en el tiempo - self.T_delta = (self.initdate - SimIC.initdate).days - - self.Htot = self.Htot_SimIC(SimIC) - self.Vtot = self.Vtot_SimIC(SimIC) - - self.alpha = self.alpha_SimIC(SimIC) - - self.setparams() - self.setequations() - - - - - else: - self.H0 = H0 - self.V = V0 - self.B = B0 - self.D = D0 - self.R = R0 - self.I0 = I0 - self.I_d0 = I_d0 - self.I_ac0 = I_ac0 - self.population = population - - # Build Hospital Capacities - if type(Htot)==int or type(Htot)==float: - self.Htot = np.poly1d(Htot) - else: - self.Htot = Htot - - if type(Vtot)==int or type(Vtot)==float: - self.Vtot = np.poly1d(Vtot) - else: - self.Vtot = Vtot - - self.Ise_D_d = 0 - self.Icr_D_d = 0 - self.Hse_D_d = 0 - self.V_D_d = 0 - - self.Ise_D_ac = 0 - self.Icr_D_ac = 0 - self.Hse_D_ac = 0 - self.V_D_ac = 0 - - self.Hse_d = 0 - self.Hout_d = 0 - self.V_d = 0 - - self.Hse_ac = 0 - self.Hout_ac = 0 - self.V_ac = 0 - - self.R_d = 0 - - self.setparams() - self.Einit = False - self.setrelationalvalues() - self.setequations() - - - def alpha_SimIC(self,SimIC): - def funct(t): - return SimIC.alpha(t+self.T_delta) - return funct - - - def Htot_SimIC(self,SimIC): - def funct(t): - return SimIC.Htot(t+self.T_delta) - return funct - - - def Vtot_SimIC(self,SimIC): - def funct(t): - return SimIC.Vtot(t+self.T_delta) - return funct - #return(SimIC.Vtot(t-self.T_delta)) - - def setnewparams(self): - self.setequations() - if not self.SimIC: - self.setrelationalvalues() - print('Compartimental model State parameters changed') - - - def setequations(self): - """ - # --------------------------- # - # Diferential Ecuations # - # --------------------------- # - """ - # dVariable/dt = sum(prob_i/in_time_i*in_State_i,i in in states) - sum(prob_i/out_time_i*out_State_i,i in in states) - - # --------------------------- # - # Susceptibles # - # --------------------------- # - - # 0) dS/dt: - self.dS=lambda t,S,E,Ias,Imi,Ise,Icr,R,D: self.chi(t) - self.alpha(t)*self.beta*S*(self.expinfection*E+Ias+Imi+Ise+Icr)/(self.N+self.k_I*(Ias+Imi+Ise+Icr))-self.betaD*D+self.eta*R - - # --------------------------- # - # Exposed # - # --------------------------- # - - # 1) dE_as/dt - self.dE = lambda t,S,E,Ias,Imi,Ise,Icr: self.alpha(t)*self.beta*S*(self.expinfection*E+Ias+Imi+Ise+Icr)/(self.N+self.k_I*(Ias+Imi+Ise+Icr)) \ - -self.pE_Ias/self.tE_Ias*E -self.pE_Imi/self.tE_Imi*E-self.pE_Ise/self.tE_Ise*E-self.pE_Icr/self.tE_Icr*E - - # 2) Daily dE_as/dt - self.dE_d = lambda t,S,E,E_d,Ias,Imi,Ise,Icr: self.alpha(t)*self.beta*S*(self.expinfection*E+Ias+Imi+Ise+Icr)/(self.N+self.k*(Ias+Imi+Ise+Icr)) - E_d - - # 3) Accumulated dE_as/dt - self.dE_ac = lambda t,S,E,Ias,Imi,Ise,Icr: self.alpha(t)*self.beta*S*(self.expinfection*E+Ias+Imi+Ise+Icr)/(self.N+self.k*(Ias+Imi+Ise+Icr)) - - - # --------------------------- # - # Infected # - # --------------------------- # - - # --- Active --- # - - # 4) Asymptomatic dIas/dt - self.dIas=lambda t,E,Ias: self.pE_Ias/self.tE_Ias*E-self.pIas_R/self.tIas_R*Ias - # 5) Mild dImi/dt - self.dImi=lambda t,E,Imi: self.pE_Imi/self.tE_Imi*E-self.pImi_R/self.tImi_R*Imi - # 6) Serious dIse/dt: Esy - - self.dIse=lambda t,E,Ise,Hse,Hout: self.pE_Ise/self.tE_Ise*E-self.pIse_Hse/self.tIse_Hse*Ise*(self.h_sat(Hse,Hout,t))\ - -self.pIse_D/self.tIse_D*Ise*(1-self.h_sat(Hse,Hout,t)) - # 7) Critical dIcr/dt - self.dIcr=lambda t,E,Icr,V: self.pE_Icr/self.tE_Icr*E\ - -self.pIcr_V/self.tIcr_V*Icr*(self.v_sat(V,t)) - self.pIcr_D/self.tIcr_D*Icr*(1-self.v_sat(V,t)) - - - # 8-11) Daily Infected - self.dIas_d = lambda t,E,Ias_d: self.pE_Ias/self.tE_Ias*E - Ias_d - self.dImi_d = lambda t,E,Imi_d: self.pE_Imi/self.tE_Imi*E - Imi_d - self.dIse_d = lambda t,E,Ise_d: self.pE_Ise/self.tE_Ise*E - Ise_d - self.dIcr_d = lambda t,E,Icr_d: self.pE_Icr/self.tE_Icr*E - Icr_d - #self.dI_d = lambda t,E,I_d: self.pE_Ias/self.tE_Ias*E + self.pE_Imi/self.tE_Imi*E + self.pE_Ise/self.tE_Ise*E + self.pE_Icr/self.tE_Icr*E - I_d - - # 12-15) Accummulated Infected - self.dIas_ac = lambda t,E: self.pE_Ias/self.tE_Ias*E - self.dImi_ac = lambda t,E: self.pE_Imi/self.tE_Imi*E - self.dIse_ac = lambda t,E: self.pE_Ise/self.tE_Ise*E - self.dIcr_ac = lambda t,E: self.pE_Icr/self.tE_Icr*E - #self.dI_ac = lambda t,E: self.pE_Ias/self.tE_Ias*E + self.pE_Imi/self.tE_Imi*E + self.pE_Ise/self.tE_Ise*E + self.pE_Icr/self.tE_Icr*E - - # --------------------------- # - # Hospitalized # - # --------------------------- # - - # 16) dHse/dt: Serious Infected Hospitalized - self.dHse=lambda t,Ise,Hse,Hout,V: self.pIse_Hse/self.tIse_Hse*Ise*(self.h_sat(Hse,Hout,t)) - self.pHse_V/self.tHse_V*Hse*(self.v_sat(V,t)) \ - - self.pHse_D/self.tHse_D*Hse*(1- self.v_sat(V,t)) - self.pHse_R/self.tHse_R*Hse - - - # 17) dHout/dt: Hospitalized Recovering after VMI - self.dHout=lambda t,Hout,V: self.pV_Hout/self.tV_Hout*V-self.pHout_R/self.tHout_R*Hout - - # 18) dV/dt: Ventilator use - self.dV=lambda t,Icr,Hse,V: self.pIcr_V/self.tIcr_V*Icr*(self.v_sat(V,t))+ self.pHse_V/self.tHse_V*Hse*(self.v_sat(V,t)) \ - - self.pV_Hout/self.tV_Hout*V - self.pV_D/self.tV_D*V - - # Daily - - # 19) dHse/dt: Serious Infected Hospitalized - self.dHse_d=lambda t,Ise,Hse,Hout,Hse_d: self.pIse_Hse/self.tIse_Hse*Ise*(self.h_sat(Hse,Hout,t)) - Hse_d - - - # 20) dHout/dt: Hospitalized Recovering after VMI - self.dHout_d=lambda t,V,Hout_d: self.pV_Hout/self.tV_Hout*V - Hout_d - - # 21) dV/dt: Ventilator use - self.dV_d=lambda t,Icr,Hse,V,V_d: self.pIcr_V/self.tIcr_V*Icr*(self.v_sat(V,t))+ self.pHse_V/self.tHse_V*Hse*(self.v_sat(V,t)) - V_d - - - # Accumulated: - # 22) dHse/dt: Serious Infected Hospitalized - self.dHse_ac=lambda t,Ise,Hse,Hout: self.pIse_Hse/self.tIse_Hse*Ise*(self.h_sat(Hse,Hout,t)) - - # 23) dHout/dt: Hospitalized Recovering after VMI - self.dHout_ac=lambda t,V: self.pV_Hout/self.tV_Hout*V - - # 24) dV/dt: Ventilator use - self.dV_ac=lambda t,Icr,Hse,V: self.pIcr_V/self.tIcr_V*Icr*(self.v_sat(V,t))+ self.pHse_V/self.tHse_V*Hse*(self.v_sat(V,t)) - - - # --------------------------- # - # Recovered # - # --------------------------- # - - # 25) dR/dt - self.dR=lambda t,Ias,Imi,Hse,Hout,R: self.pIas_R/self.tIas_R*Ias + self.pImi_R/self.tImi_R*Imi + \ - self.pHout_R/self.tHout_R*Hout + self.pHse_R/self.tHse_R*Hse - self.eta*R - - # 26) Daily recovered - self.dR_d=lambda t,Ias,Imi,Hse,Hout,R,R_d: self.pIas_R/self.tIas_R*Ias + self.pImi_R/self.tImi_R*Imi + \ - self.pHout_R/self.tHout_R*Hout + self.pHse_R/self.tHse_R*Hse - R_d - - - # --------------------------- # - # Deaths # - # --------------------------- # - - # 27) dD/dt: Death Rate - self.dD=lambda t,Ise,Icr,Hse,Hout,V,D: self.pIse_D/self.tIse_D*Ise*(1-self.h_sat(Hse,Hout,t)) + self.pIcr_D/self.tIcr_D*Icr*(1-self.v_sat(V,t)) + \ - self.pHse_D/self.tHse_D*Hse*(1- self.v_sat(V,t)) + self.pV_D/self.tV_D*V - self.pD_B/self.tD_B*D - - # 28) dB/dt: Bury rate - self.dB=lambda t,D: self.pD_B/self.tD_B*D - - # 29-32) Daily Deads - self.dIse_D_d = lambda t,Ise,Hse,Hout,Ise_D_d: self.pIse_D/self.tIse_D*Ise*(1-self.h_sat(Hse,Hout,t)) - Ise_D_d - self.dIcr_D_d = lambda t,Icr,Hse,Hout,V,Icr_D_d: self.pIcr_D/self.tIcr_D*Icr*(1-self.v_sat(V,t)) - Icr_D_d - self.dHse_D_d = lambda t,Hse,V,Hse_D_d: self.pHse_D/self.tHse_D*Hse*(1- self.v_sat(V,t)) - Hse_D_d - self.dV_D_d = lambda t,V,V_D_d: self.pV_D/self.tV_D*V - V_D_d - - # 33-36) Accumulated Deads ṕer cause - self.dIse_D_ac = lambda t,Ise,Hse,Hout: self.pIse_D/self.tIse_D*Ise*(1-self.h_sat(Hse,Hout,t)) - self.dIcr_D_ac = lambda t,Icr,Hse,Hout,V: self.pIcr_D/self.tIcr_D*Icr*(1-self.v_sat(V,t)) - self.dHse_D_ac = lambda t,Hse,V: self.pHse_D/self.tHse_D*Hse*(1- self.v_sat(V,t)) - self.dV_D_ac = lambda t,V: self.pV_D/self.tV_D*V - - - - # ---------------------------------- # - # Hospital beds Necesity # - # ---------------------------------- # - - # 37) dV_need/dt: Ventilator Necesity - self.dV_need=lambda t,Icr,H_need,V_need: self.pIcr_V/self.tIcr_V*Icr + self.pHse_V/self.tHse_V*H_need \ - - self.pV_Hout/self.tV_Hout*V_need - self.pV_D/self.tV_D*V_need - - - # 38) dHse/dt: Serious Infected Hospitalized - self.dHse_need=lambda t,Ise,Hse_need,V: self.pIse_Hse/self.tIse_Hse*Ise - self.pHse_V/self.tHse_V*Hse_need \ - - self.pHse_R/self.tHse_R*Hse_need - - - # 39) dHout/dt: Hospitalized Recovering after VMI - self.dHout_need=lambda t,Hout_need,V_need: self.pV_Hout/self.tV_Hout*V_need-self.pHout_R/self.tHout_R*Hout_need - - # 38) dH_need/dt: Hospital beds need - #self.dH_need=lambda t,Ise,H_need,Hout,V_need: self.pIse_Hse/self.tIse_Hse*Ise - self.pHse_V/self.tHse_V*H_need \ - # - self.pHse_R/self.tHse_R*H_need + self.pV_Hout/self.tV_Hout*V_need-self.pHout_R/self.tHout_R*Hout - - - - - - # UCI and UTI beds saturation function - def h_sat(self,Hse,Hout,t): - return(expit(-self.gw*(Hse+Hout-self.Htot(t)))) - # Ventilators Saturation Function - def v_sat(self,V,t): - return(expit(-self.gw*(V-self.Vtot(t)))) - - def setparams(self): - self.pE_Ias = 0.4 # Transition from exposed to Asymptomatic Infected - self.tE_Ias = 5.0 - - self.pE_Imi = 0.55 # Transition from exposed to Mild Infected - self.tE_Imi = 5.0 - - self.pE_Icr = 0.01666 # Transition from exposed to Critical Infected - self.tE_Icr = 3.0 - - self.pE_Ise = 0.03334 ## Transition from exposed to Serious Infected - self.tE_Ise = 3.0 - - self.pIas_R = 1.0 # Transition from Asymptomatic Infected to Recovered - self.tIas_R = 10.0 - - self.pImi_R = 1.0 # Transition from Mild Infected to Recovered - self.tImi_R = 15.0 - - self.pIse_Hse = 1.0 # Transition from Serious Infected to Serious Hospitalized (When Hospital capacity is not saturated) - self.tIse_Hse = 3.0 - - self.pIse_D = 1.0 # Transition from Serious Infected to Death (When Hospital capacity is saturated) - self.tIse_D = 3.0 - - self.pIcr_V = 1.0 # Transition from Critical Infected to Ventilator (When Ventilators capacity is not saturated) - self.tIcr_V = 3.0 - - self.pIcr_D = 1.0 # Transition from Serious Infected to Death (When Ventilators capacity is saturated) - self.tIcr_D = 3.0 - - self.pHse_R = 0.97 # Transition from Serious Hospitalized to Recovered - self.tHse_R = 11.0 - - self.pHse_V = 0.03 # Transition from Serious Hospitalized to Ventilators (When Ventilators capacity is not saturated) - self.tHse_V = 3.0 - - self.pHse_D = 0.03 # Transition from Serious Hospitalized to Death (When Ventilators capacity is saturated) - self.tHse_D = 3.0 - - self.pV_Hout = 0.5 # Transition from Ventilators to Hospital Recovery (Hout) - self.tV_Hout = 15.0 - - self.pV_D = 0.5 # Transition from Ventilators to Death - self.tV_D = 15.0 - - self.pHout_R = 1.0 # Transition from Hospital Recovery (Hout) to Recovered - self.tHout_R = 4.0 - - self.pD_B = 1.0 # Transition from Dead to buried - self.tD_B = 1.0 - - self.betaD = 0 # Contagion by deads rate - self.eta = 0.0 # Immunity loss rate - - - # ------------------- # - # Valores Iniciales # - # ------------------- # - - def setinitvalues(self): - # 15 de Mayo - self.I_act0 = 12642 - - self.Vc0 = 1029 - self.Hc0 = 1980 - self.H0=1720 #1980#1903.0 - self.H_cr=80.0 - self.gw=10 - self.D=26.0 - self.B=221.0 - self.R=0.0 - self.V=758.0#846.0 - self.mu=1.4 - self.t=400.0 - self.CV=0 - self.CH=0 - self.ACV=0 - self.ACH=0 - self.SeroPrevFactor = 1 - self.population = 8125072 - - self.Hmax = 3000 - self.Vmax = 1500 - self.expinfection = 0 - - # Accumulated Infected - self.Ias_ac = 0 - self.Imi_ac = 0 - self.Ise_ac = 0 - self.Icr_ac = 0 - - # Deaths - self.H_crD = 0 - self.VD = 0 - self.Ise_D = 0 - self.IcrD = 0 - - # Daily Infected - self.Ias_d = 0 - self.Imi_d = 0 - self.Ise_d = 0 - self.Icr_d = 0 - - # Daily Deaths - self.H_crD_d = 0 - self.VD_d = 0 - self.Ise_D_d = 0 - self.IcrD_d = 0 - - # Initial Infected proportion - self.Ias_prop = 0.35 - self.Imi_prop = 0.63 - self.Icr_prop = 0.007 - self.Ise_prop = 0.013 - - self.setrelationalvalues() - - def setrelationalvalues(self): - self.I = self.I0/(self.Ias_det*self.pE_Ias + self.Imi_det*self.pE_Imi + self.Ise_det*self.pE_Ise + self.Icr_det*self.pE_Icr ) - # Active infected - self.Ias= self.pE_Ias*self.I - self.Imi= self.pE_Imi*self.I - self.Icr= self.pE_Icr*self.I - self.Ise = self.pE_Ise*self.I - - self.I_d = self.I_d0/(self.Ias_det*self.pE_Ias + self.Imi_det*self.pE_Imi + self.Ise_det*self.pE_Ise + self.Icr_det*self.pE_Icr ) - self.Ias_d = self.pE_Ias*self.I_d - self.Imi_d = self.pE_Imi*self.I_d - self.Icr_d = self.pE_Icr*self.I_d - self.Ise_d = self.pE_Ise*self.I_d - - self.I_ac = self.I_ac0/(self.Ias_det*self.pE_Ias + self.Imi_det*self.pE_Imi + self.Ise_det*self.pE_Ise + self.Icr_det*self.pE_Icr ) - self.Ias_ac = self.pE_Ias*self.I_ac - self.Imi_ac = self.pE_Imi*self.I_ac - self.Icr_ac = self.pE_Icr*self.I_ac - self.Ise_ac = self.pE_Ise*self.I_ac - - # Exposed - if not self.Einit: - self.E = self.mu*self.I - self.E_d=self.mu*(self.I_d) - self.E_ac=self.mu*(self.I_ac) - # Hospitalizados - self.Hse = self.H0*self.pE_Ise/(self.pE_Ise+self.pE_Icr) - self.Hout = self.H0*self.pE_Icr/(self.pE_Ise+self.pE_Icr) - - # Valores globales - self.N = self.SeroPrevFactor*self.population - self.S = self.N-self.H0-self.V-self.D-self.E-(self.Ias+self.Icr+self.Ise+self.Imi) - self.R - #self.I = self.I - - #constructor of SEIR class elements, it's initialized when a parameter - #miminization is performed to adjust the best setting of the actual infected - - """ - def calculateindicators(self): - self.R_ef - self.SHFR - # Peak - self.peak - self.peakindex - self.peak_t - self.peak_date - # Saturation dates - self.Hsat_t - self.Hsat_date - self.VMIsat_t - self.VMIsat_date - - # SeroPrevalence Calculation - - # Errors (if real data) - - # Active infected - print('wip') - - def resume(self): - print("Resumen de resultados:") - qtype = "" - for i in range(self.numescenarios): - if self.inputarray[i][-1]==0: - qtype = "Cuarentena total" - if self.inputarray[i][-1]>0: - qtype ="Cuarentena Dinámica" - - print("Escenario "+str(i)) - print("Tipo de Cuarentena: "+qtype+'\nmov_rem: '+str(self.inputarray[i][2])+'\nmov_max: '+str(self.inputarray[i][2])+ - "\nInicio cuarentena: "+(self.initdate+timedelta(days=self.inputarray[i][4])).strftime('%Y/%m/%d')+"\nFin cuarentena: "+(self.initdate+timedelta(days=self.inputarray[i][5])).strftime('%Y/%m/%d')) - print("Peak infetados \n"+"Peak value: "+str(self.peak[i])+"\nPeak date: "+str(self.peak_date[i])) - print("Fallecidos totales:"+str(max(self.B[i]))) - print("Fecha de colapso hospitalario \n"+"Camas: "+self.H_colapsedate[i]+"\nVentiladores: "+self.V_colapsedate[i]) - print("\n") - """ - - - def integr(self,t0,T,h,E0init=False): - #integrator function that star form t0 and finish with T with h as - #timestep. If there aren't inital values in [t0,T] function doesn't - #start. Or it's start if class object is initialze. - print('Import odeint') - from scikits.odes.odeint import odeint - - - if(not isinstance(self.S, np.ndarray)): - #pass if object is initalized - if(E0init): - E0=self.mu*(self.I) - E_d0=self.mu*(self.I_d) - E_ac0=self.mu*(self.I_ac) - else: - E0 = self.E - E_d0 = self.mu*(self.I_d) - E_ac0 = self.mu*(self.I_ac) - - S0=self.S - - E0=self.E - E_d0=self.E_d - E_ac0=self.E_ac - - Ias0=self.Ias - Imi0=self.Imi - Ise0=self.Ise - Icr0=self.Icr - - Ias_d0=self.Ias_d - Imi_d0=self.Imi_d - Ise_d0=self.Ise_d - Icr_d0=self.Icr_d - - Ias_ac0=self.Ias_ac - Imi_ac0=self.Imi_ac - Ise_ac0=self.Ise_ac - Icr_ac0=self.Icr_ac - - Hse0=self.Hse - Hout0=self.Hout - V0=self.V - - Hse_d0= self.Hse_d - Hout_d0= self.Hout_d - V_d0= self.V_d - - Hse_ac0= self.Hse_ac - Hout_ac0= self.Hout_ac - V_ac0= self.V_ac - - R0=self.R - R_d0=self.R_d - - D0=self.D - B0=self.B - - Ise_D_d0 = self.Ise_D_d - Icr_D_d0 = self.Icr_D_d - Hse_D_d0 = self.Hse_D_d - V_D_d0 = self.V_D_d - - Ise_D_ac0 = self.Ise_D_ac - Icr_D_ac0 = self.Icr_D_ac - Hse_D_ac0 = self.Hse_D_ac - V_D_ac0 = self.V_D_ac - - V_need0=self.V - Hse_need0=self.Hse - Hout_need0= self.Hout - - self.t=np.arange(t0,T+h,h) - - elif((min(self.t)<=t0) & (t0<=max(self.t))): - #Condition over exiting time in already initialized object - - #Search fot initial time - idx=np.searchsorted(self.t,t0) - - #set initial condition - - E0 = self.E - E_d0 = self.E_d - E_ac0 ==self.E_ac - - S0=self.S[idx] - Ias0=self.Ias[idx] - Imi0=self.Imi[idx] - Ise0=self.Ise[idx] - Icr0=self.Icr[idx] - - Ias_d0=self.Ias_d[idx] - Imi_d0=self.Imi_d[idx] - Ise_d0=self.Ise_d[idx] - Icr_d0=self.Icr_d[idx] - - Ias_ac0=self.Ias_ac[idx] - Imi_ac0=self.Imi_ac[idx] - Ise_ac0=self.Ise_ac[idx] - Icr_ac0=self.Icr_ac[idx] - - Hse0=self.Hse[idx] - Hout0=self.Hout[idx] - V0=self.V[idx] - - Hse_d0=self.Hse_d[idx] - Hout_d0=self.Hout_d[idx] - V_d0=self.V_d[idx] - - Hse_ac0=self.Hse_ac[idx] - Hout_ac0=self.Hout_ac[idx] - V_ac0=self.V_ac[idx] - - R0=self.R[idx] - R_d0=self.R_d[idx] - - D0=self.D[idx] - B0=self.B[idx] - - Ise_D_d0 = self.Ise_D_d[idx] - Icr_D_d0 = self.Icr_D_d[idx] - Hse_D_d0 = self.Hse_D_d[idx] - V_D_d0 = self.V_D_d[idx] - - Ise_D_ac0 = self.Ise_D_ac[idx] - Icr_D_ac0 = self.Icr_D_ac[idx] - Hse_D_ac0 = self.Hse_D_ac[idx] - V_D_ac0 = self.V_D_ac[idx] - - V_need0=self.V[idx] - Hse_need0 = self.Hse[idx] - Hout_need0 = self.Hout[idx] - - #set time grid - self.t=np.arange(self.t[idx],T+h,h) - - else: - return() - - - def model_SEIR_graph(t,y,ydot): - - ydot[0]=self.dS(t,y[0],y[1],y[2],y[3],y[4],y[5],y[19],y[20]) - - ydot[1]=self.dE(t,y[0],y[1],y[2],y[3],y[4],y[5]) - ydot[2]=self.dE_d(t,y[0],y[1],y[2],y[4],y[5],y[6],y[7]) - ydot[3]=self.dE_ac(t,y[0],y[1],y[4],y[5],y[6],y[7]) - - ydot[4]=self.dIas(t,y[1],y[4]) - ydot[5]=self.dImi(t,y[1],y[5]) - ydot[6]=self.dIse(t,y[1],y[6],y[16],y[17]) - ydot[7]=self.dIcr(t,y[1],y[7],y[18]) - - ydot[8]=self.dIas_d(t,y[1],y[8]) - ydot[9]=self.dImi_d(t,y[1],y[9]) - ydot[10]=self.dIse_d(t,y[1],y[10]) - ydot[11]=self.dIcr_d(t,y[1],y[11]) - - ydot[12]=self.dIas_ac(t,y[1]) - ydot[13]=self.dImi_ac(t,y[1]) - ydot[14]=self.dIse_ac(t,y[1]) - ydot[15]=self.dIcr_ac(t,y[1]) - - ydot[16]=self.dHse(t,y[6],y[16],y[17],y[18]) - ydot[17]=self.dHout(t,y[17],y[18]) - ydot[18]=self.dV(t,y[7],y[16],y[18]) - - ydot[19]=self.dHse_d(t,y[6],y[16],y[17],y[19]) - ydot[20]=self.dHout_d(t,y[18],y[20]) - ydot[21]=self.dV_d(t,y[7],y[16],y[18],y[21]) - - ydot[22]=self.dHse_ac(t,y[6],y[16],y[17]) - ydot[23]=self.dHout_ac(t,y[18]) - ydot[24]=self.dV_ac(t,y[7],y[16],y[18]) - - ydot[25]=self.dR(t,y[4],y[5],y[16],y[17],y[25]) - ydot[26]=self.dR_d(t,y[4],y[5],y[16],y[17],y[25],y[26]) - - ydot[27]=self.dD(t,y[6],y[7],y[16],y[17],y[18],y[27]) - ydot[28]=self.dB(t,y[27]) - - ydot[29]=self.dIse_D_d(t,y[6],y[16],y[17],y[29]) - ydot[30]=self.dIcr_D_d(t,y[7],y[16],y[17],y[18],y[30]) - ydot[31]=self.dHse_D_d(t,y[16],y[18],y[31]) - ydot[32]=self.dV_D_d(t,y[18],y[32]) - - ydot[33]=self.dIse_D_ac(t,y[6],y[16],y[17]) - ydot[34]=self.dIcr_D_ac(t,y[7],y[16],y[17],y[18]) - ydot[35]=self.dHse_D_ac(t,y[16],y[18]) - ydot[36]=self.dV_D_ac(t,y[18]) - - ydot[37]=self.dV_need(t,y[7],y[38],y[37]) - ydot[38]=self.dHse_need(t,y[6],y[38],y[37]) - ydot[39]=self.dHout_need(t,y[39],y[37]) - - - - initcond = np.array([S0,E0,E_d0,E_ac0,Ias0,Imi0,Ise0,Icr0,Ias_d0,Imi_d0,Ise_d0,Icr_d0,Ias_ac0,Imi_ac0,Ise_ac0,Icr_ac0,Hse0,Hout0,V0,Hse_d0,Hout_d0,V_d0,Hse_ac0, - Hout_ac0,V_ac0,R0,R_d0,D0,B0,Ise_D_d0,Icr_D_d0,Hse_D_d0,V_D_d0,Ise_D_ac0,Icr_D_ac0,Hse_D_ac0,V_D_ac0,V_need0,Hse_need0,Hout_need0]) - - print('Solving ODE') - sol = odeint(model_SEIR_graph, self.t, initcond,method='admo') - - self.t=sol.values.t - - self.S=sol.values.y[:,0] - - self.E=sol.values.y[:,1] - self.E_d=sol.values.y[:,2] - self.E_ac=sol.values.y[:,3] - - self.Ias=sol.values.y[:,4] - self.Imi=sol.values.y[:,5] - self.Ise=sol.values.y[:,6] - self.Icr=sol.values.y[:,7] - - self.Ias_d=sol.values.y[:,8] - self.Imi_d=sol.values.y[:,9] - self.Ise_d=sol.values.y[:,10] - self.Icr_d=sol.values.y[:,11] - - self.Ias_ac=sol.values.y[:,12] - self.Imi_ac=sol.values.y[:,13] - self.Ise_ac=sol.values.y[:,14] - self.Icr_ac=sol.values.y[:,15] - - self.Hse=sol.values.y[:,16] - self.Hout=sol.values.y[:,17] - self.V=sol.values.y[:,18] - - self.Hse_d=sol.values.y[:,19] - self.Hout_d=sol.values.y[:,20] - self.V_d=sol.values.y[:,21] - - self.Hse_ac=sol.values.y[:,22] - self.Hout_ac=sol.values.y[:,23] - self.V_ac=sol.values.y[:,24] - - self.R=sol.values.y[:,25] - self.R_d=sol.values.y[:,26] - - self.D=sol.values.y[:,27] - self.B=sol.values.y[:,28] - - self.Ise_D_d=sol.values.y[:,29] - self.Icr_D_d=sol.values.y[:,30] - self.Hse_D_d=sol.values.y[:,31] - self.V_D_d=sol.values.y[:,32] - - self.Ise_D_ac=sol.values.y[:,33] - self.Icr_D_ac=sol.values.y[:,34] - self.Hse_D_ac=sol.values.y[:,35] - self.V_D_ac=sol.values.y[:,36] - - self.V_need=sol.values.y[:,37] - self.Hse_need=sol.values.y[:,38] - self.Hout_need=sol.values.y[:,39] - - self.I = self.Ias + self.Imi + self.Ise + self.Icr - self.I_d = self.Ias_d + self.Imi_d + self.Ise_d + self.Icr_d - self.I_ac = self.Ias_ac + self.Imi_ac + self.Ise_ac + self.Icr_ac - - self.H = self.Hse + self.Hout - self.H_d = self.Hse_d + self.Hout_d - self.H_ac = self.Hse_ac + self.Hout_ac - - self.H_sat = [self.h_sat(self.Hse[i],self.Hout[i],self.t[i]) for i in range(len(self.t))] - self.V_sat = [self.v_sat(self.V[i],self.t[i]) for i in range(len(self.t))] - - self.V_cap = [self.Vtot(i) for i in self.t] - self.H_cap = [self.Htot(i) for i in self.t] - - self.H_need = self.Hse_need + self.Hout_need - - #Cálculo de la fecha del Peak - self.peakindex = np.where(self.I==max(self.I))[0][0] - self.peak = max(self.I) - self.peak_t = self.t[self.peakindex] - if self.initdate: - self.peak_date = self.initdate+timedelta(days=round(self.peak_t)) - - # Detected Cases - self.I_det = self.I*(self.Ias_det*self.pE_Ias + self.Imi_det*self.pE_Imi + self.Ise_det*self.pE_Ise + self.Icr_det*self.pE_Icr ) - self.I_d_det = self.I_d*(self.Ias_det*self.pE_Ias + self.Imi_det*self.pE_Imi + self.Ise_det*self.pE_Ise + self.Icr_det*self.pE_Icr ) - self.I_ac_det = self.I_ac*(self.Ias_det*self.pE_Ias + self.Imi_det*self.pE_Imi + self.Ise_det*self.pE_Ise + self.Icr_det*self.pE_Icr ) - - - # Prevalence: - self.prevalence_total = self.I_ac/self.population - self.prevalence_susc = [self.I_ac[i]/(self.S[i]+self.E[i]+self.I[i]+self.R[i]+self.V[i]+self.H[i]+self.B[i]) for i in range(len(self.I_ac))] - self.prevalence_detected = [(self.Ias_det*self.Ias[i]+self.Imi_det*self.Imi[i]+self.Ise_det*self.Ise[i]+self.Icr_det*self.Icr[i])//(self.S[i]+self.E[i]+self.I[i]+self.R[i]+self.V[i]+self.H[i]+self.B[i]) for i in range(len(self.I_ac))] - - return(sol) - - def integr_sci(self,t0,T,h,E0init=False): - #integrator function that star form t0 and finish with T with h as - #timestep. If there aren't inital values in [t0,T] function doesn't - #start. Or it's start if class object is initialze. - - if(not isinstance(self.S, np.ndarray)): - #pass if object is initalized - if(E0init): - E0=self.mu*(self.I) - E_d0=self.mu*(self.I_d) - E_ac0=self.mu*(self.I_ac) - else: - E0 = self.E - E_d0 = self.mu*(self.I_d) - E_ac0 = self.mu*(self.I_ac) - - S0=self.S - - E0=self.E - E_d0=self.E_d - E_ac0=self.E_ac - - Ias0=self.Ias - Imi0=self.Imi - Ise0=self.Ise - Icr0=self.Icr - - Ias_d0=self.Ias_d - Imi_d0=self.Imi_d - Ise_d0=self.Ise_d - Icr_d0=self.Icr_d - - Ias_ac0=self.Ias_ac - Imi_ac0=self.Imi_ac - Ise_ac0=self.Ise_ac - Icr_ac0=self.Icr_ac - - Hse0=self.Hse - Hout0=self.Hout - V0=self.V - - Hse_d0= self.Hse_d - Hout_d0= self.Hout_d - V_d0= self.V_d - - Hse_ac0= self.Hse_ac - Hout_ac0= self.Hout_ac - V_ac0= self.V_ac - - R0=self.R - R_d0=self.R_d - - D0=self.D - B0=self.B - - Ise_D_d0 = self.Ise_D_d - Icr_D_d0 = self.Icr_D_d - Hse_D_d0 = self.Hse_D_d - V_D_d0 = self.V_D_d - - Ise_D_ac0 = self.Ise_D_ac - Icr_D_ac0 = self.Icr_D_ac - Hse_D_ac0 = self.Hse_D_ac - V_D_ac0 = self.V_D_ac - - V_need0 = self.V - Hse_need0 = self.Hse - Hout_need0 = self.Hout - - self.t=np.arange(t0,T+h,h) - - elif((min(self.t)<=t0) & (t0<=max(self.t))): - #Condition over exiting time in already initialized object - - #Search fot initial time - idx=np.searchsorted(self.t,t0) - - #set initial condition - - E0 = self.E - E_d0 = self.E_d - E_ac0 ==self.E_ac - - S0=self.S[idx] - Ias0=self.Ias[idx] - Imi0=self.Imi[idx] - Ise0=self.Ise[idx] - Icr0=self.Icr[idx] - - Ias_d0=self.Ias_d[idx] - Imi_d0=self.Imi_d[idx] - Ise_d0=self.Ise_d[idx] - Icr_d0=self.Icr_d[idx] - - Ias_ac0=self.Ias_ac[idx] - Imi_ac0=self.Imi_ac[idx] - Ise_ac0=self.Ise_ac[idx] - Icr_ac0=self.Icr_ac[idx] - - Hse0=self.Hse[idx] - Hout0=self.Hout[idx] - V0=self.V[idx] - - Hse_d0=self.Hse_d[idx] - Hout_d0=self.Hout_d[idx] - V_d0=self.V_d[idx] - - Hse_ac0=self.Hse_ac[idx] - Hout_ac0=self.Hout_ac[idx] - V_ac0=self.V_ac[idx] - - R0=self.R[idx] - R_d0=self.R_d[idx] - - D0=self.D[idx] - B0=self.B[idx] - - Ise_D_d0 = self.Ise_D_d[idx] - Icr_D_d0 = self.Icr_D_d[idx] - Hse_D_d0 = self.Hse_D_d[idx] - V_D_d0 = self.V_D_d[idx] - - Ise_D_ac0 = self.Ise_D_ac[idx] - Icr_D_ac0 = self.Icr_D_ac[idx] - Hse_D_ac0 = self.Hse_D_ac[idx] - V_D_ac0 = self.V_D_ac[idx] - - V_need0=self.V[idx] - Hse_need0=self.Hse[idx] - Hout_need0= self.Hout[idx] - - #set time grid - self.t=np.arange(self.t[idx],T+h,h) - - - else: - return() - - - - def model_SEIR_graph(t,y): - ydot=np.zeros(len(y)) - ydot[0]=self.dS(t,y[0],y[1],y[2],y[3],y[4],y[5],y[19],y[20]) - - ydot[1]=self.dE(t,y[0],y[1],y[2],y[3],y[4],y[5]) - ydot[2]=self.dE_d(t,y[0],y[1],y[2],y[4],y[5],y[6],y[7]) - ydot[3]=self.dE_ac(t,y[0],y[1],y[4],y[5],y[6],y[7]) - - ydot[4]=self.dIas(t,y[1],y[4]) - ydot[5]=self.dImi(t,y[1],y[5]) - ydot[6]=self.dIse(t,y[1],y[6],y[16],y[17]) - ydot[7]=self.dIcr(t,y[1],y[7],y[18]) - - ydot[8]=self.dIas_d(t,y[1],y[8]) - ydot[9]=self.dImi_d(t,y[1],y[9]) - ydot[10]=self.dIse_d(t,y[1],y[10]) - ydot[11]=self.dIcr_d(t,y[1],y[11]) - - ydot[12]=self.dIas_ac(t,y[1]) - ydot[13]=self.dImi_ac(t,y[1]) - ydot[14]=self.dIse_ac(t,y[1]) - ydot[15]=self.dIcr_ac(t,y[1]) - - ydot[16]=self.dHse(t,y[6],y[16],y[17],y[18]) - ydot[17]=self.dHout(t,y[17],y[18]) - ydot[18]=self.dV(t,y[7],y[16],y[18]) - - ydot[19]=self.dHse_d(t,y[6],y[16],y[17],y[19]) - ydot[20]=self.dHout_d(t,y[18],y[20]) - ydot[21]=self.dV_d(t,y[7],y[16],y[18],y[21]) - - ydot[22]=self.dHse_ac(t,y[6],y[16],y[17]) - ydot[23]=self.dHout_ac(t,y[18]) - ydot[24]=self.dV_ac(t,y[7],y[16],y[18]) - - ydot[25]=self.dR(t,y[4],y[5],y[16],y[17],y[25]) - ydot[26]=self.dR_d(t,y[4],y[5],y[16],y[17],y[25],y[26]) - - ydot[27]=self.dD(t,y[6],y[7],y[16],y[17],y[18],y[27]) - ydot[28]=self.dB(t,y[27]) - - ydot[29]=self.dIse_D_d(t,y[6],y[16],y[17],y[29]) - ydot[30]=self.dIcr_D_d(t,y[7],y[16],y[17],y[18],y[30]) - ydot[31]=self.dHse_D_d(t,y[16],y[18],y[31]) - ydot[32]=self.dV_D_d(t,y[18],y[32]) - - ydot[33]=self.dIse_D_ac(t,y[6],y[16],y[17]) - ydot[34]=self.dIcr_D_ac(t,y[7],y[16],y[17],y[18]) - ydot[35]=self.dHse_D_ac(t,y[16],y[18]) - ydot[36]=self.dV_D_ac(t,y[18]) - - ydot[37]=self.dV_need(t,y[7],y[16],y[18]) - ydot[38]=self.dHse_need(t,y[6],y[38],y[37]) - ydot[39]=self.dHout_need(t,y[39],y[37]) - - return(ydot) - - initcond = np.array([S0,E0,E_d0,E_ac0,Ias0,Imi0,Ise0,Icr0,Ias_d0,Imi_d0,Ise_d0,Icr_d0,Ias_ac0,Imi_ac0,Ise_ac0,Icr_ac0,Hse0,Hout0,V0,Hse_d0,Hout_d0,V_d0,Hse_ac0, - Hout_ac0,V_ac0,R0,R_d0,D0,B0,Ise_D_d0,Icr_D_d0,Hse_D_d0,V_D_d0,Ise_D_ac0,Icr_D_ac0,Hse_D_ac0,V_D_ac0,V_need0,Hse_need0,Hout_need0]) - - - sol = solve_ivp(model_SEIR_graph,(t0,T), initcond,method='LSODA',t_eval=list(range(t0,T))) - - self.t=sol.t - - self.S=sol.y[0,:] - self.E=sol.y[1,:] - self.E_d=sol.y[2,:] - self.E_ac=sol.y[3,:] - self.Ias=sol.y[4,:] - self.Imi=sol.y[5,:] - self.Ise=sol.y[6,:] - self.Icr=sol.y[7,:] - self.Ias_d=sol.y[8,:] - self.Imi_d=sol.y[9,:] - self.Ise_d=sol.y[10,:] - self.Icr_d=sol.y[11,:] - self.Ias_ac=sol.y[12,:] - self.Imi_ac=sol.y[13,:] - self.Ise_ac=sol.y[14,:] - self.Icr_ac=sol.y[15,:] - self.Hse=sol.y[16,:] - self.Hout=sol.y[17,:] - self.V=sol.y[18,:] - self.Hse_d=sol.y[19,:] - self.Hout_d=sol.y[20,:] - self.V_d=sol.y[21,:] - self.Hse_ac=sol.y[22,:] - self.Hout_ac=sol.y[23,:] - self.V_ac=sol.y[24,:] - self.R=sol.y[25,:] - self.R_d=sol.y[26,:] - self.D=sol.y[27,:] - self.B=sol.y[28,:] - self.Ise_D_d=sol.y[29,:] - self.Icr_D_d=sol.y[30,:] - self.Hse_D_d=sol.y[31,:] - self.V_D_d=sol.y[32,:] - self.Ise_D_ac=sol.y[33,:] - self.Icr_D_ac=sol.y[34,:] - self.Hse_D_ac=sol.y[35,:] - self.V_D_ac=sol.y[36,:] - - self.V_need=sol.y[37,:] - self.Hse_need=sol.y[37,:] - self.Hout_need=sol.y[37,:] - - - self.I = self.Ias + self.Imi + self.Ise + self.Icr - self.I_d = self.Ias_d + self.Imi_d + self.Ise_d + self.Icr_d - self.I_ac = self.Ias_ac + self.Imi_ac + self.Ise_ac + self.Icr_ac - - self.H = self.Hse + self.Hout - self.H_d = self.Hse_d + self.Hout_d - self.H_ac = self.Hse_ac + self.Hout_ac - - self.H_sat = [self.h_sat(self.Hse[i],self.Hout[i],self.t[i]) for i in range(len(self.t))] - self.V_sat = [self.v_sat(self.V[i],self.t[i]) for i in range(len(self.t))] - - self.V_cap = [self.Vtot(i) for i in self.t] - self.H_cap = [self.Htot(i) for i in self.t] - - self.H_need = self.Hse_need + self.Hout_need - - #Cálculo de la fecha del Peak - self.peakindex = np.where(self.I==max(self.I))[0][0] - self.peak = max(self.I) - self.peak_t = self.t[self.peakindex] - if self.initdate: - self.dates = [self.initdate+timedelta(int(self.t[i])) for i in range(len(self.t))] - self.peak_date = self.initdate+timedelta(days=round(self.peak_t)) - - # Detected Cases - self.I_det = self.I*(self.Ias_det*self.pE_Ias + self.Imi_det*self.pE_Imi + self.pE_Ise + self.pE_Icr ) - self.I_d_det = self.I_d*(self.Ias_det*self.pE_Ias + self.Imi_det*self.pE_Imi + self.pE_Ise + self.pE_Icr ) - self.I_ac_det = self.I_ac*(self.Ias_det*self.pE_Ias + self.Imi_det*self.pE_Imi + self.pE_Ise + self.pE_Icr ) - - # Prevalence: - self.prevalence_total = self.I_ac/self.population - self.prevalence_susc = [self.I_ac[i]/(self.S[i]+self.E[i]+self.I[i]+self.R[i]+self.V[i]+self.H[i]+self.B[i]) for i in range(len(self.I_ac))] - self.prevalence_detected = [(self.Ias_det*self.Ias[i]+self.Imi_det*self.Imi[i]+self.Ise_det*self.Ise[i]+self.Icr_det*self.Icr[i])//(self.S[i]+self.E[i]+self.I[i]+self.R[i]+self.V[i]+self.H[i]+self.B[i]) for i in range(len(self.I_ac))] - - return(sol) - - - - - - diff --git a/deprecated/src/SEIRHVD/class_SEIRHUVD6.py b/deprecated/src/SEIRHVD/class_SEIRHUVD6.py deleted file mode 100644 index 8505817..0000000 --- a/deprecated/src/SEIRHVD/class_SEIRHUVD6.py +++ /dev/null @@ -1,1266 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -""" -SEIRHVD Model -""" - -import numpy as np - -from scipy.integrate import solve_ivp -from scipy.special import expit -from joblib import Parallel, delayed -from scipy import signal -import pandas as pd -from numpy import linalg as LA -import multiprocessing -from datetime import datetime -from datetime import timedelta - -""" -To do: - - Create reports function inside simSAEIRHVD class - - -SEIRHVD Implementation -Instructions: - Init a simSEIRHVD objecting giving the simulation condictions: - - tsim: Simulation time - - max_mov: - - rem_mov: - - qp: - - iqt: - - fqt: - - movfunct: - -""" - - -class SEIRHVD: - """ - SEIRHVD Object: - Construction: - SEIRHVD(tsim,beta,mu,alpha,k=0,Htot=30,Vtot=20) - with: - tsim: Simulation time - beta: Transmition rate - mu: E/I initial rate - alpha: Movility function (quarantine object function) - k: Saturation Kynetics Dynamics factor - Htot: Hospital capacity, either an int or a function(t) - Vtot: VMI capacity, either an int or a function(t) - """ - def __init__(self,tsim,beta,mu,alpha,k=0,chi = 0,k_I=0,k_R=0,Htot=30,Vtot=20, - H0=0,V0=0,B0=0,D0=0,R0=0,I0=100,I_d0=10,I_ac0=100,SeroPrevFactor=1,expinfection=0, - population=1000000,RealIC=None, initdate = None,Imi_det = 1,Ias_det = 1,Ise_det = 1,Icr_det = 1,SimIC=None): - - self.tsim = tsim - self.beta = beta - self.mu = mu - - self.alpha = alpha - - self.SeroPrevFactor = SeroPrevFactor - self.expinfection = expinfection - - self.Imi_det = Imi_det # Fraction of mild infected detected - self.Ias_det = Ias_det # Fraction of asymptomatic infected detected - self.Ise_det = Ise_det # Fraction of mild infected detected - self.Icr_det = Icr_det # Fraction of asymptomatic infected detected - - self.SimIC = SimIC - - - self.k = k - self.k_I = k_I - self.k_R = k_R - - # To add backcompatibility - if k > 0 and k_I == 0: - self.k_I = k - - if type(chi) == int: - self.chi = np.poly1d(0) - else: - self.chi = chi - - """ - I0 = Imi_det*Imi + Ias_det*Ias + Icr + Ise - Itot = Imi + Icr + Ise + Iac - Ias = Itot * pas - Imi = Itot * pmi - Ise = Itot * pse - Icr = Itot * pcr - - I0 = Imi_det*Itot*pmi + Itot*(pcr + pse) + Ias_det*Itot*pas - I0 = Itot(Imi_det*pmi + Ias_det*pas + pcr + pse) - - Itot = I0/(Imi_det*pmi + Ias_det*pas + pcr + pse) - """ - self.gw=20 - - self.initdate = initdate - # Initial Conditions: - #self.setinitvalues() - if RealIC: - IC = RealIC - # Use initial conditions object/dictionary with realworld imported initial conditions - - # Aproximate Hospitals capacity: - #Hcmodel = np.poly1d(np.polyfit(IC.sochimi_tr, IC.Hr_tot, 4)) - Hcmodel = np.poly1d(30000) - tsat = IC.sochimi_tr[-1] - Hmax = np.mean(IC.Hr_tot[-3:]) - self.Htot=lambda t: Hcmodel(t)*(1-expit(t-tsat)) + expit(t-tsat)*Hmax - - Vcmodel = np.poly1d(np.polyfit(IC.sochimi_tr, IC.Vr_tot, 4)) - tsat = IC.sochimi_tr[-1] - Vmax = np.mean(IC.Vr_tot[-3:]) - self.Vtot=lambda t: Vcmodel(t)*(1-expit(t-tsat)) + expit(t-tsat)*Vmax #+ 1000 - - # Set Initial values - if type(IC.Hr) == list: - self.H0 = IC.Hr[0] - else: - self.H0 = IC.Hr - self.V = IC.Vr[0] - self.B = IC.Br[0] - self.D = IC.Br[1]-IC.Br[0] - if 'R' in IC.__dict__: - self.R = IC.R[0] - else: - self.R = 0 - self.I0 = IC.Ir[0] - self.I_d0 = IC.I_d_r[0] - self.I_ac0 = IC.I_ac_r[0] - self.population = IC.population - self.initdate = IC.initdate - - self.Ise_D_d = 0 - self.Icr_D_d = 0 - self.Hse_D_d = 0 - self.V_D_d = 0 - - self.Ise_D_ac = 0 - self.Icr_D_ac = 0 - self.Hse_D_ac = 0 - self.V_D_ac = 0 - - self.R_d = 0 - - self.Hse_d = 0 - self.Hout_d = 0 - self.V_d = 0 - - self.Hse_ac = 0 - self.Hout_ac = 0 - self.V_ac = 0 - - self.setparams() - self.Einit = False - self.setrelationalvalues() - self.setequations() - print('InitialCondition Object Data') - - elif SimIC: - self.SimICinitdate = SimIC.initdate - self.population = SimIC.population - - # New Susceptible: - self.S = SimIC.S[-1] + SimIC.population*(1-SimIC.SeroPrevFactor)*self.SeroPrevFactor - self.N = SimIC.SeroPrevFactor*self.population + self.population*(1-SimIC.SeroPrevFactor)*self.SeroPrevFactor #Past simulation + added now - - # Exposed: - self.E = SimIC.E[-1] - self.E_d = SimIC.E_d[-1] - self.E_ac = SimIC.E_ac[-1] - - self.I = SimIC.I[-1] - self.I_d = SimIC.I_d[-1] - self.I_ac = SimIC.I_ac[-1] - - self.Ias = SimIC.Ias[-1] - self.Imi = SimIC.Imi[-1] - self.Ise = SimIC.Ise[-1] - self.Icr = SimIC.Icr[-1] - - self.Ias_d = SimIC.Ias_d[-1] - self.Imi_d = SimIC.Imi_d[-1] - self.Ise_d = SimIC.Ise_d[-1] - self.Icr_d = SimIC.Icr_d[-1] - - self.Ias_ac = SimIC.Ias_ac[-1] - self.Imi_ac = SimIC.Imi_ac[-1] - self.Ise_ac = SimIC.Ise_ac[-1] - self.Icr_ac = SimIC.Icr_ac[-1] - - self.R = SimIC.R[-1] - self.R_d = SimIC.R_d[-1] - - self.Hse = SimIC.Hse[-1] - self.Hout = SimIC.Hout[-1] - self.V = SimIC.V[-1] - - self.Hse_d = SimIC.Hse_d[-1] - self.Hout_d = SimIC.Hout_d[-1] - self.V_d = SimIC.V_d[-1] - - self.Hse_ac = SimIC.Hse_ac[-1] - self.Hout_ac = SimIC.Hout_ac[-1] - self.V_ac = SimIC.V_ac[-1] - - self.R = SimIC.R[-1] - self.R_d = SimIC.R_d[-1] - - self.D = SimIC.D[-1] - self.B = SimIC.B[-1] - - self.Ise_D_d = SimIC.Ise_D_d[-1] - self.Icr_D_d = SimIC.Icr_D_d[-1] - self.Hse_D_d = SimIC.Hse_D_d[-1] - self.V_D_d = SimIC.V_D_d[-1] - - self.Ise_D_ac = SimIC.Ise_D_ac[-1] - self.Icr_D_ac = SimIC.Icr_D_ac[-1] - self.Hse_D_ac = SimIC.Hse_D_ac[-1] - self.V_D_ac = SimIC.V_D_ac[-1] - - self.Einit = True - - # Falta trasladarlo en el tiempo - self.T_delta = (self.initdate - SimIC.initdate).days - - self.Htot = self.Htot_SimIC(SimIC) - self.Vtot = self.Vtot_SimIC(SimIC) - - self.alpha = self.alpha_SimIC(SimIC) - - self.setparams() - self.setequations() - - - - - else: - self.H0 = H0 - self.V = V0 - self.B = B0 - self.D = D0 - self.R = R0 - self.I0 = I0 - self.I_d0 = I_d0 - self.I_ac0 = I_ac0 - self.population = population - - # Build Hospital Capacities - if type(Htot)==int or type(Htot)==float: - self.Htot = np.poly1d(Htot) - else: - self.Htot = Htot - - if type(Vtot)==int or type(Vtot)==float: - self.Vtot = np.poly1d(Vtot) - else: - self.Vtot = Vtot - - self.Ise_D_d = 0 - self.Icr_D_d = 0 - self.Hse_D_d = 0 - self.V_D_d = 0 - - self.Ise_D_ac = 0 - self.Icr_D_ac = 0 - self.Hse_D_ac = 0 - self.V_D_ac = 0 - - self.Hse_d = 0 - self.Hout_d = 0 - self.V_d = 0 - - self.Hse_ac = 0 - self.Hout_ac = 0 - self.V_ac = 0 - - self.R_d = 0 - - self.setparams() - self.Einit = False - self.setrelationalvalues() - self.setequations() - - - def alpha_SimIC(self,SimIC): - def funct(t): - return SimIC.alpha(t+self.T_delta) - return funct - - - def Htot_SimIC(self,SimIC): - def funct(t): - return SimIC.Htot(t+self.T_delta) - return funct - - - def Vtot_SimIC(self,SimIC): - def funct(t): - return SimIC.Vtot(t+self.T_delta) - return funct - #return(SimIC.Vtot(t-self.T_delta)) - - def setnewparams(self): - self.setequations() - if not self.SimIC: - self.setrelationalvalues() - print('Compartimental model State parameters changed') - - - def setequations(self): - """ - # --------------------------- # - # Diferential Ecuations # - # --------------------------- # - """ - # dVariable/dt = sum(prob_i/in_time_i*in_State_i,i in in states) - sum(prob_i/out_time_i*out_State_i,i in in states) - - # --------------------------- # - # Susceptibles # - # --------------------------- # - - # 0) dS/dt: - self.dS=lambda t,S,E,Ias,Imi,Ise,Icr,R,D: self.chi(t)-self.alpha(t)*self.beta*S*(self.expinfection*E + Ias+Imi+Ise+Icr)/(self.N+self.k_I*(Ias+Imi+Ise+Icr))+self.eta*R - - # --------------------------- # - # Exposed # - # --------------------------- # - - # 1) dE_as/dt - self.dE = lambda t,S,E,Ias,Imi,Ise,Icr: self.alpha(t)*self.beta*S*(self.expinfection*E+Ias+Imi+Ise+Icr)/(self.N+self.k_I*(Ias+Imi+Ise+Icr)) \ - -self.pE_Ias/self.tE_Ias*E -self.pE_Imi/self.tE_Imi*E-self.pE_Ise/self.tE_Ise*E-self.pE_Icr/self.tE_Icr*E - - # 2) Daily dE_as/dt - self.dE_d = lambda t,S,E,E_d,Ias,Imi,Ise,Icr: self.alpha(t)*self.beta*S*(self.expinfection*E+Ias+Imi+Ise+Icr)/(self.N+self.k*(Ias+Imi+Ise+Icr)) - E_d - - # 3) Accumulated dE_as/dt - self.dE_ac = lambda t,S,E,Ias,Imi,Ise,Icr: self.alpha(t)*self.beta*S*(self.expinfection*E+Ias+Imi+Ise+Icr)/(self.N+self.k*(Ias+Imi+Ise+Icr)) - - - # --------------------------- # - # Infected # - # --------------------------- # - - # --- Active --- # - - # 4) Asymptomatic dIas/dt - self.dIas=lambda t,E,Ias: self.pE_Ias/self.tE_Ias*E-self.pIas_R/self.tIas_R*Ias - # 5) Mild dImi/dt - self.dImi=lambda t,E,Imi: self.pE_Imi/self.tE_Imi*E-self.pImi_R/self.tImi_R*Imi - # 6) Serious dIse/dt: Esy - - self.dIse=lambda t,E,Ise,Hse,Hout: self.pE_Ise/self.tE_Ise*E-self.pIse_Hse/self.tIse_Hse*Ise*(self.h_sat(Hse,Hout,t))\ - -self.pIse_D/self.tIse_D*Ise*(1-self.h_sat(Hse,Hout,t)) - # 7) Critical dIcr/dt - self.dIcr=lambda t,E,Icr,V: self.pE_Icr/self.tE_Icr*E\ - -self.pIcr_V/self.tIcr_V*Icr*(self.v_sat(V,t)) - self.pIcr_D/self.tIcr_D*Icr*(1-self.v_sat(V,t)) - - - # 8-11) Daily Infected - self.dIas_d = lambda t,E,Ias_d: self.pE_Ias/self.tE_Ias*E - Ias_d - self.dImi_d = lambda t,E,Imi_d: self.pE_Imi/self.tE_Imi*E - Imi_d - self.dIse_d = lambda t,E,Ise_d: self.pE_Ise/self.tE_Ise*E - Ise_d - self.dIcr_d = lambda t,E,Icr_d: self.pE_Icr/self.tE_Icr*E - Icr_d - #self.dI_d = lambda t,E,I_d: self.pE_Ias/self.tE_Ias*E + self.pE_Imi/self.tE_Imi*E + self.pE_Ise/self.tE_Ise*E + self.pE_Icr/self.tE_Icr*E - I_d - - # 12-15) Accummulated Infected - self.dIas_ac = lambda t,E: self.pE_Ias/self.tE_Ias*E - self.dImi_ac = lambda t,E: self.pE_Imi/self.tE_Imi*E - self.dIse_ac = lambda t,E: self.pE_Ise/self.tE_Ise*E - self.dIcr_ac = lambda t,E: self.pE_Icr/self.tE_Icr*E - #self.dI_ac = lambda t,E: self.pE_Ias/self.tE_Ias*E + self.pE_Imi/self.tE_Imi*E + self.pE_Ise/self.tE_Ise*E + self.pE_Icr/self.tE_Icr*E - - # --------------------------- # - # Hospitalized # - # --------------------------- # - - # 16) dHse/dt: Serious Infected Hospitalized - self.dHse=lambda t,Ise,Hse,Hout,V: self.pIse_Hse/self.tIse_Hse*Ise*(self.h_sat(Hse,Hout,t)) - self.pHse_V/self.tHse_V*Hse*(self.v_sat(V,t)) \ - - self.pHse_D/self.tHse_D*Hse*(1- self.v_sat(V,t)) - self.pHse_R/self.tHse_R*Hse - - - # 17) dHout/dt: Hospitalized Recovering after VMI - self.dHout=lambda t,Hout,V: self.pV_Hout/self.tV_Hout*V-self.pHout_R/self.tHout_R*Hout - - # 18) dV/dt: Ventilator use - self.dV=lambda t,Icr,Hse,V: self.pIcr_V/self.tIcr_V*Icr*(self.v_sat(V,t))+ self.pHse_V/self.tHse_V*Hse*(self.v_sat(V,t)) \ - - self.pV_Hout/self.tV_Hout*V - self.pV_D/self.tV_D*V - - # Daily - - # 19) dHse/dt: Serious Infected Hospitalized - self.dHse_d=lambda t,Ise,Hse,Hout,Hse_d: self.pIse_Hse/self.tIse_Hse*Ise*(self.h_sat(Hse,Hout,t)) - Hse_d - - - # 20) dHout/dt: Hospitalized Recovering after VMI - self.dHout_d=lambda t,V,Hout_d: self.pV_Hout/self.tV_Hout*V - Hout_d - - # 21) dV/dt: Ventilator use - self.dV_d=lambda t,Icr,Hse,V,V_d: self.pIcr_V/self.tIcr_V*Icr*(self.v_sat(V,t))+ self.pHse_V/self.tHse_V*Hse*(self.v_sat(V,t)) - V_d - - - # Accumulated: - # 22) dHse/dt: Serious Infected Hospitalized - self.dHse_ac=lambda t,Ise,Hse,Hout: self.pIse_Hse/self.tIse_Hse*Ise*(self.h_sat(Hse,Hout,t)) - - # 23) dHout/dt: Hospitalized Recovering after VMI - self.dHout_ac=lambda t,V: self.pV_Hout/self.tV_Hout*V - - # 24) dV/dt: Ventilator use - self.dV_ac=lambda t,Icr,Hse,V: self.pIcr_V/self.tIcr_V*Icr*(self.v_sat(V,t))+ self.pHse_V/self.tHse_V*Hse*(self.v_sat(V,t)) - - - # --------------------------- # - # Recovered # - # --------------------------- # - - # 25) dR/dt - self.dR=lambda t,Ias,Imi,Hse,Hout,R: self.pIas_R/self.tIas_R*Ias + self.pImi_R/self.tImi_R*Imi + \ - self.pHout_R/self.tHout_R*Hout + self.pHse_R/self.tHse_R*Hse - self.eta*R - - # 26) Daily recovered - self.dR_d=lambda t,Ias,Imi,Hse,Hout,R,R_d: self.pIas_R/self.tIas_R*Ias + self.pImi_R/self.tImi_R*Imi + \ - self.pHout_R/self.tHout_R*Hout + self.pHse_R/self.tHse_R*Hse - R_d - - - # --------------------------- # - # Deaths # - # --------------------------- # - - # 27) dD/dt: Death Rate - self.dD=lambda t,Ise,Icr,Hse,Hout,V,D: self.pIse_D/self.tIse_D*Ise*(1-self.h_sat(Hse,Hout,t)) + self.pIcr_D/self.tIcr_D*Icr*(1-self.v_sat(V,t)) + \ - self.pHse_D/self.tHse_D*Hse*(1- self.v_sat(V,t)) + self.pV_D/self.tV_D*V - self.pD_B/self.tD_B*D - - # 28) dB/dt: Bury rate - self.dB=lambda t,D: self.pD_B/self.tD_B*D - - # 29-32) Daily Deads - self.dIse_D_d = lambda t,Ise,Hse,Hout,Ise_D_d: self.pIse_D/self.tIse_D*Ise*(1-self.h_sat(Hse,Hout,t)) - Ise_D_d - self.dIcr_D_d = lambda t,Icr,Hse,Hout,V,Icr_D_d: self.pIcr_D/self.tIcr_D*Icr*(1-self.v_sat(V,t)) - Icr_D_d - self.dHse_D_d = lambda t,Hse,V,Hse_D_d: self.pHse_D/self.tHse_D*Hse*(1- self.v_sat(V,t)) - Hse_D_d - self.dV_D_d = lambda t,V,V_D_d: self.pV_D/self.tV_D*V - V_D_d - - # 33-36) Accumulated Deads ṕer cause - self.dIse_D_ac = lambda t,Ise,Hse,Hout: self.pIse_D/self.tIse_D*Ise*(1-self.h_sat(Hse,Hout,t)) - self.dIcr_D_ac = lambda t,Icr,Hse,Hout,V: self.pIcr_D/self.tIcr_D*Icr*(1-self.v_sat(V,t)) - self.dHse_D_ac = lambda t,Hse,V: self.pHse_D/self.tHse_D*Hse*(1- self.v_sat(V,t)) - self.dV_D_ac = lambda t,V: self.pV_D/self.tV_D*V - - - - # ---------------------------------- # - # Hospital beds Necesity # - # ---------------------------------- # - - # 37) dV_need/dt: Ventilator Necesity - self.dV_need=lambda t,Icr,H_need,V_need: self.pIcr_V/self.tIcr_V*Icr + self.pHse_V/self.tHse_V*H_need \ - - self.pV_Hout/self.tV_Hout*V_need - self.pV_D/self.tV_D*V_need - - - # 38) dHse/dt: Serious Infected Hospitalized - self.dHse_need=lambda t,Ise,Hse_need,V: self.pIse_Hse/self.tIse_Hse*Ise - self.pHse_V/self.tHse_V*Hse_need \ - - self.pHse_R/self.tHse_R*Hse_need - - - # 39) dHout/dt: Hospitalized Recovering after VMI - self.dHout_need=lambda t,Hout_need,V_need: self.pV_Hout/self.tV_Hout*V_need-self.pHout_R/self.tHout_R*Hout_need - - # 38) dH_need/dt: Hospital beds need - #self.dH_need=lambda t,Ise,H_need,Hout,V_need: self.pIse_Hse/self.tIse_Hse*Ise - self.pHse_V/self.tHse_V*H_need \ - # - self.pHse_R/self.tHse_R*H_need + self.pV_Hout/self.tV_Hout*V_need-self.pHout_R/self.tHout_R*Hout - - - - - - # UCI and UTI beds saturation function - def h_sat(self,Hse,Hout,t): - return(expit(-self.gw*(Hse+Hout-self.Htot(t)))) - # Ventilators Saturation Function - def v_sat(self,V,t): - return(expit(-self.gw*(V-self.Vtot(t)))) - - def setparams(self): - self.pE_Ias = 0.4 # Transition from exposed to Asymptomatic Infected - self.tE_Ias = 5.0 - - self.pE_Imi = 0.55 # Transition from exposed to Mild Infected - self.tE_Imi = 5.0 - - self.pE_Icr = 0.01666 # Transition from exposed to Critical Infected - self.tE_Icr = 3.0 - - self.pE_Ise = 0.03334 ## Transition from exposed to Serious Infected - self.tE_Ise = 3.0 - - self.pIas_R = 1.0 # Transition from Asymptomatic Infected to Recovered - self.tIas_R = 10.0 - - self.pImi_R = 1.0 # Transition from Mild Infected to Recovered - self.tImi_R = 15.0 - - self.pIse_Hse = 1.0 # Transition from Serious Infected to Serious Hospitalized (When Hospital capacity is not saturated) - self.tIse_Hse = 3.0 - - self.pIse_D = 1.0 # Transition from Serious Infected to Death (When Hospital capacity is saturated) - self.tIse_D = 3.0 - - self.pIcr_V = 1.0 # Transition from Critical Infected to Ventilator (When Ventilators capacity is not saturated) - self.tIcr_V = 3.0 - - self.pIcr_D = 1.0 # Transition from Serious Infected to Death (When Ventilators capacity is saturated) - self.tIcr_D = 3.0 - - self.pHse_R = 0.97 # Transition from Serious Hospitalized to Recovered - self.tHse_R = 11.0 - - self.pHse_V = 0.03 # Transition from Serious Hospitalized to Ventilators (When Ventilators capacity is not saturated) - self.tHse_V = 3.0 - - self.pHse_D = 0.03 # Transition from Serious Hospitalized to Death (When Ventilators capacity is saturated) - self.tHse_D = 3.0 - - self.pV_Hout = 0.5 # Transition from Ventilators to Hospital Recovery (Hout) - self.tV_Hout = 15.0 - - self.pV_D = 0.5 # Transition from Ventilators to Death - self.tV_D = 15.0 - - self.pHout_R = 1.0 # Transition from Hospital Recovery (Hout) to Recovered - self.tHout_R = 4.0 - - self.pD_B = 1.0 # Transition from Dead to buried - self.tD_B = 1.0 - - self.betaD = 0 # Contagion by deads rate - self.eta = 0.0 # Immunity loss rate - - - # ------------------- # - # Valores Iniciales # - # ------------------- # - - def setinitvalues(self): - # 15 de Mayo - self.I_act0 = 12642 - - self.Vc0 = 1029 - self.Hc0 = 1980 - self.H0=1720 #1980#1903.0 - self.H_cr=80.0 - self.gw=10 - self.D=26.0 - self.B=221.0 - self.R=0.0 - self.V=758.0#846.0 - self.mu=1.4 - self.t=400.0 - self.CV=0 - self.CH=0 - self.ACV=0 - self.ACH=0 - self.SeroPrevFactor = 1 - self.population = 8125072 - - self.Hmax = 3000 - self.Vmax = 1500 - self.expinfection = 0 - - # Accumulated Infected - self.Ias_ac = 0 - self.Imi_ac = 0 - self.Ise_ac = 0 - self.Icr_ac = 0 - - # Deaths - self.H_crD = 0 - self.VD = 0 - self.Ise_D = 0 - self.IcrD = 0 - - # Daily Infected - self.Ias_d = 0 - self.Imi_d = 0 - self.Ise_d = 0 - self.Icr_d = 0 - - # Daily Deaths - self.H_crD_d = 0 - self.VD_d = 0 - self.Ise_D_d = 0 - self.IcrD_d = 0 - - self.setrelationalvalues() - - def setrelationalvalues(self): - self.I = self.I0/(self.Ias_det*self.pE_Ias + self.Imi_det*self.pE_Imi + self.Ise_det*self.pE_Ise + self.Icr_det*self.pE_Icr ) - # Active infected - self.Ias= self.pE_Ias*self.I - self.Imi= self.pE_Imi*self.I - self.Icr= self.pE_Icr*self.I - self.Ise = self.pE_Ise*self.I - - self.I_d = self.I_d0/(self.Ias_det*self.pE_Ias + self.Imi_det*self.pE_Imi + self.Ise_det*self.pE_Ise + self.Icr_det*self.pE_Icr ) - self.Ias_d = self.pE_Ias*self.I_d - self.Imi_d = self.pE_Imi*self.I_d - self.Icr_d = self.pE_Icr*self.I_d - self.Ise_d = self.pE_Ise*self.I_d - - self.I_ac = self.I_ac0/(self.Ias_det*self.pE_Ias + self.Imi_det*self.pE_Imi + self.Ise_det*self.pE_Ise + self.Icr_det*self.pE_Icr ) - self.Ias_ac = self.pE_Ias*self.I_ac - self.Imi_ac = self.pE_Imi*self.I_ac - self.Icr_ac = self.pE_Icr*self.I_ac - self.Ise_ac = self.pE_Ise*self.I_ac - - # Exposed - if not self.Einit: - self.E = self.mu*self.I - self.E_d=self.mu*(self.I_d) - self.E_ac=self.mu*(self.I_ac) - # Hospitalizados - if self.pE_Ise+self.pE_Icr > 0: - self.Hse = self.H0*self.pE_Ise/(self.pE_Ise+self.pE_Icr) - self.Hout = self.H0*self.pE_Icr/(self.pE_Ise+self.pE_Icr) - else: - self.Hse = self.H0*0.5 - self.Hout = self.H0*0.5 - - - # Valores globales - self.N = self.SeroPrevFactor*self.population - self.S = self.N-self.H0-self.V-self.D-self.E-(self.Ias+self.Icr+self.Ise+self.Imi) - self.R - #self.I = self.I - - #constructor of SEIR class elements, it's initialized when a parameter - #miminization is performed to adjust the best setting of the actual infected - - """ - def calculateindicators(self): - self.R_ef - self.SHFR - # Peak - self.peak - self.peakindex - self.peak_t - self.peak_date - # Saturation dates - self.Hsat_t - self.Hsat_date - self.VMIsat_t - self.VMIsat_date - - # SeroPrevalence Calculation - - # Errors (if real data) - - # Active infected - print('wip') - - def resume(self): - print("Resumen de resultados:") - qtype = "" - for i in range(self.numescenarios): - if self.inputarray[i][-1]==0: - qtype = "Cuarentena total" - if self.inputarray[i][-1]>0: - qtype ="Cuarentena Dinámica" - - print("Escenario "+str(i)) - print("Tipo de Cuarentena: "+qtype+'\nmov_rem: '+str(self.inputarray[i][2])+'\nmov_max: '+str(self.inputarray[i][2])+ - "\nInicio cuarentena: "+(self.initdate+timedelta(days=self.inputarray[i][4])).strftime('%Y/%m/%d')+"\nFin cuarentena: "+(self.initdate+timedelta(days=self.inputarray[i][5])).strftime('%Y/%m/%d')) - print("Peak infetados \n"+"Peak value: "+str(self.peak[i])+"\nPeak date: "+str(self.peak_date[i])) - print("Fallecidos totales:"+str(max(self.B[i]))) - print("Fecha de colapso hospitalario \n"+"Camas: "+self.H_colapsedate[i]+"\nVentiladores: "+self.V_colapsedate[i]) - print("\n") - """ - - - def integr(self,t0,T,h,E0init=False): - #integrator function that star form t0 and finish with T with h as - #timestep. If there aren't inital values in [t0,T] function doesn't - #start. Or it's start if class object is initialze. - print('Import odeint') - from scikits.odes.odeint import odeint - - - if(not isinstance(self.S, np.ndarray)): - #pass if object is initalized - if(E0init): - E0=self.mu*(self.I) - E_d0=self.mu*(self.I_d) - E_ac0=self.mu*(self.I_ac) - else: - E0 = self.E - E_d0 = self.mu*(self.I_d) - E_ac0 = self.mu*(self.I_ac) - - S0=self.S - - E0=self.E - E_d0=self.E_d - E_ac0=self.E_ac - - Ias0=self.Ias - Imi0=self.Imi - Ise0=self.Ise - Icr0=self.Icr - - Ias_d0=self.Ias_d - Imi_d0=self.Imi_d - Ise_d0=self.Ise_d - Icr_d0=self.Icr_d - - Ias_ac0=self.Ias_ac - Imi_ac0=self.Imi_ac - Ise_ac0=self.Ise_ac - Icr_ac0=self.Icr_ac - - Hse0=self.Hse - Hout0=self.Hout - V0=self.V - - Hse_d0= self.Hse_d - Hout_d0= self.Hout_d - V_d0= self.V_d - - Hse_ac0= self.Hse_ac - Hout_ac0= self.Hout_ac - V_ac0= self.V_ac - - R0=self.R - R_d0=self.R_d - - D0=self.D - B0=self.B - - Ise_D_d0 = self.Ise_D_d - Icr_D_d0 = self.Icr_D_d - Hse_D_d0 = self.Hse_D_d - V_D_d0 = self.V_D_d - - Ise_D_ac0 = self.Ise_D_ac - Icr_D_ac0 = self.Icr_D_ac - Hse_D_ac0 = self.Hse_D_ac - V_D_ac0 = self.V_D_ac - - V_need0=self.V - Hse_need0=self.Hse - Hout_need0= self.Hout - - self.t=np.arange(t0,T+h,h) - - elif((min(self.t)<=t0) & (t0<=max(self.t))): - #Condition over exiting time in already initialized object - - #Search fot initial time - idx=np.searchsorted(self.t,t0) - - #set initial condition - - E0 = self.E - E_d0 = self.E_d - E_ac0 ==self.E_ac - - S0=self.S[idx] - Ias0=self.Ias[idx] - Imi0=self.Imi[idx] - Ise0=self.Ise[idx] - Icr0=self.Icr[idx] - - Ias_d0=self.Ias_d[idx] - Imi_d0=self.Imi_d[idx] - Ise_d0=self.Ise_d[idx] - Icr_d0=self.Icr_d[idx] - - Ias_ac0=self.Ias_ac[idx] - Imi_ac0=self.Imi_ac[idx] - Ise_ac0=self.Ise_ac[idx] - Icr_ac0=self.Icr_ac[idx] - - Hse0=self.Hse[idx] - Hout0=self.Hout[idx] - V0=self.V[idx] - - Hse_d0=self.Hse_d[idx] - Hout_d0=self.Hout_d[idx] - V_d0=self.V_d[idx] - - Hse_ac0=self.Hse_ac[idx] - Hout_ac0=self.Hout_ac[idx] - V_ac0=self.V_ac[idx] - - R0=self.R[idx] - R_d0=self.R_d[idx] - - D0=self.D[idx] - B0=self.B[idx] - - Ise_D_d0 = self.Ise_D_d[idx] - Icr_D_d0 = self.Icr_D_d[idx] - Hse_D_d0 = self.Hse_D_d[idx] - V_D_d0 = self.V_D_d[idx] - - Ise_D_ac0 = self.Ise_D_ac[idx] - Icr_D_ac0 = self.Icr_D_ac[idx] - Hse_D_ac0 = self.Hse_D_ac[idx] - V_D_ac0 = self.V_D_ac[idx] - - V_need0=self.V[idx] - Hse_need0 = self.Hse[idx] - Hout_need0 = self.Hout[idx] - - #set time grid - self.t=np.arange(self.t[idx],T+h,h) - - else: - return() - - - def model_SEIR_graph(t,y,ydot): - - ydot[0]=self.dS(t,y[0],y[1],y[2],y[3],y[4],y[5],y[19],y[20]) - - ydot[1]=self.dE(t,y[0],y[1],y[2],y[3],y[4],y[5]) - ydot[2]=self.dE_d(t,y[0],y[1],y[2],y[4],y[5],y[6],y[7]) - ydot[3]=self.dE_ac(t,y[0],y[1],y[4],y[5],y[6],y[7]) - - ydot[4]=self.dIas(t,y[1],y[4]) - ydot[5]=self.dImi(t,y[1],y[5]) - ydot[6]=self.dIse(t,y[1],y[6],y[16],y[17]) - ydot[7]=self.dIcr(t,y[1],y[7],y[18]) - - ydot[8]=self.dIas_d(t,y[1],y[8]) - ydot[9]=self.dImi_d(t,y[1],y[9]) - ydot[10]=self.dIse_d(t,y[1],y[10]) - ydot[11]=self.dIcr_d(t,y[1],y[11]) - - ydot[12]=self.dIas_ac(t,y[1]) - ydot[13]=self.dImi_ac(t,y[1]) - ydot[14]=self.dIse_ac(t,y[1]) - ydot[15]=self.dIcr_ac(t,y[1]) - - ydot[16]=self.dHse(t,y[6],y[16],y[17],y[18]) - ydot[17]=self.dHout(t,y[17],y[18]) - ydot[18]=self.dV(t,y[7],y[16],y[18]) - - ydot[19]=self.dHse_d(t,y[6],y[16],y[17],y[19]) - ydot[20]=self.dHout_d(t,y[18],y[20]) - ydot[21]=self.dV_d(t,y[7],y[16],y[18],y[21]) - - ydot[22]=self.dHse_ac(t,y[6],y[16],y[17]) - ydot[23]=self.dHout_ac(t,y[18]) - ydot[24]=self.dV_ac(t,y[7],y[16],y[18]) - - ydot[25]=self.dR(t,y[4],y[5],y[16],y[17],y[25]) - ydot[26]=self.dR_d(t,y[4],y[5],y[16],y[17],y[25],y[26]) - - ydot[27]=self.dD(t,y[6],y[7],y[16],y[17],y[18],y[27]) - ydot[28]=self.dB(t,y[27]) - - ydot[29]=self.dIse_D_d(t,y[6],y[16],y[17],y[29]) - ydot[30]=self.dIcr_D_d(t,y[7],y[16],y[17],y[18],y[30]) - ydot[31]=self.dHse_D_d(t,y[16],y[18],y[31]) - ydot[32]=self.dV_D_d(t,y[18],y[32]) - - ydot[33]=self.dIse_D_ac(t,y[6],y[16],y[17]) - ydot[34]=self.dIcr_D_ac(t,y[7],y[16],y[17],y[18]) - ydot[35]=self.dHse_D_ac(t,y[16],y[18]) - ydot[36]=self.dV_D_ac(t,y[18]) - - ydot[37]=self.dV_need(t,y[7],y[38],y[37]) - ydot[38]=self.dHse_need(t,y[6],y[38],y[37]) - ydot[39]=self.dHout_need(t,y[39],y[37]) - - - - initcond = np.array([S0,E0,E_d0,E_ac0,Ias0,Imi0,Ise0,Icr0,Ias_d0,Imi_d0,Ise_d0,Icr_d0,Ias_ac0,Imi_ac0,Ise_ac0,Icr_ac0,Hse0,Hout0,V0,Hse_d0,Hout_d0,V_d0,Hse_ac0, - Hout_ac0,V_ac0,R0,R_d0,D0,B0,Ise_D_d0,Icr_D_d0,Hse_D_d0,V_D_d0,Ise_D_ac0,Icr_D_ac0,Hse_D_ac0,V_D_ac0,V_need0,Hse_need0,Hout_need0]) - - print('Solving ODE') - sol = odeint(model_SEIR_graph, self.t, initcond,method='admo') - - self.t=sol.values.t - - self.S=sol.values.y[:,0] - - self.E=sol.values.y[:,1] - self.E_d=sol.values.y[:,2] - self.E_ac=sol.values.y[:,3] - - self.Ias=sol.values.y[:,4] - self.Imi=sol.values.y[:,5] - self.Ise=sol.values.y[:,6] - self.Icr=sol.values.y[:,7] - - self.Ias_d=sol.values.y[:,8] - self.Imi_d=sol.values.y[:,9] - self.Ise_d=sol.values.y[:,10] - self.Icr_d=sol.values.y[:,11] - - self.Ias_ac=sol.values.y[:,12] - self.Imi_ac=sol.values.y[:,13] - self.Ise_ac=sol.values.y[:,14] - self.Icr_ac=sol.values.y[:,15] - - self.Hse=sol.values.y[:,16] - self.Hout=sol.values.y[:,17] - self.V=sol.values.y[:,18] - - self.Hse_d=sol.values.y[:,19] - self.Hout_d=sol.values.y[:,20] - self.V_d=sol.values.y[:,21] - - self.Hse_ac=sol.values.y[:,22] - self.Hout_ac=sol.values.y[:,23] - self.V_ac=sol.values.y[:,24] - - self.R=sol.values.y[:,25] - self.R_d=sol.values.y[:,26] - - self.D=sol.values.y[:,27] - self.B=sol.values.y[:,28] - - self.Ise_D_d=sol.values.y[:,29] - self.Icr_D_d=sol.values.y[:,30] - self.Hse_D_d=sol.values.y[:,31] - self.V_D_d=sol.values.y[:,32] - - self.Ise_D_ac=sol.values.y[:,33] - self.Icr_D_ac=sol.values.y[:,34] - self.Hse_D_ac=sol.values.y[:,35] - self.V_D_ac=sol.values.y[:,36] - - self.V_need=sol.values.y[:,37] - self.Hse_need=sol.values.y[:,38] - self.Hout_need=sol.values.y[:,39] - - self.I = self.Ias + self.Imi + self.Ise + self.Icr - self.I_d = self.Ias_d + self.Imi_d + self.Ise_d + self.Icr_d - self.I_ac = self.Ias_ac + self.Imi_ac + self.Ise_ac + self.Icr_ac - - self.H = self.Hse + self.Hout - self.H_d = self.Hse_d + self.Hout_d - self.H_ac = self.Hse_ac + self.Hout_ac - - self.H_sat = [self.h_sat(self.Hse[i],self.Hout[i],self.t[i]) for i in range(len(self.t))] - self.V_sat = [self.v_sat(self.V[i],self.t[i]) for i in range(len(self.t))] - - self.V_cap = [self.Vtot(i) for i in self.t] - self.H_cap = [self.Htot(i) for i in self.t] - - self.H_need = self.Hse_need + self.Hout_need - - #Cálculo de la fecha del Peak - self.peakindex = np.where(self.I==max(self.I))[0][0] - self.peak = max(self.I) - self.peak_t = self.t[self.peakindex] - if self.initdate: - self.peak_date = self.initdate+timedelta(days=round(self.peak_t)) - - # Detected Cases - self.I_det = self.I*(self.Ias_det*self.pE_Ias + self.Imi_det*self.pE_Imi + self.Ise_det*self.pE_Ise + self.Icr_det*self.pE_Icr ) - self.I_d_det = self.I_d*(self.Ias_det*self.pE_Ias + self.Imi_det*self.pE_Imi + self.Ise_det*self.pE_Ise + self.Icr_det*self.pE_Icr ) - self.I_ac_det = self.I_ac*(self.Ias_det*self.pE_Ias + self.Imi_det*self.pE_Imi + self.Ise_det*self.pE_Ise + self.Icr_det*self.pE_Icr ) - - - # Prevalence: - self.prevalence_total = self.I_ac/self.population - self.prevalence_susc = [self.I_ac[i]/(self.S[i]+self.E[i]+self.I[i]+self.R[i]+self.V[i]+self.H[i]+self.B[i]) for i in range(len(self.I_ac))] - self.prevalence_detected = [(self.Ias_det*self.Ias[i]+self.Imi_det*self.Imi[i]+self.Ise_det*self.Ise[i]+self.Icr_det*self.Icr[i])//(self.S[i]+self.E[i]+self.I[i]+self.R[i]+self.V[i]+self.H[i]+self.B[i]) for i in range(len(self.I_ac))] - - return(sol) - - def integr_sci(self,t0,T,h,E0init=False): - #integrator function that star form t0 and finish with T with h as - #timestep. If there aren't inital values in [t0,T] function doesn't - #start. Or it's start if class object is initialze. - - if(not isinstance(self.S, np.ndarray)): - #pass if object is initalized - if(E0init): - E0=self.mu*(self.I) - E_d0=self.mu*(self.I_d) - E_ac0=self.mu*(self.I_ac) - else: - E0 = self.E - E_d0 = self.mu*(self.I_d) - E_ac0 = self.mu*(self.I_ac) - - S0=self.S - - #E0=self.E - #E_d0=self.E_d - #E_ac0=self.E_ac - - Ias0=self.Ias - Imi0=self.Imi - Ise0=self.Ise - Icr0=self.Icr - - Ias_d0=self.Ias_d - Imi_d0=self.Imi_d - Ise_d0=self.Ise_d - Icr_d0=self.Icr_d - - Ias_ac0=self.Ias_ac - Imi_ac0=self.Imi_ac - Ise_ac0=self.Ise_ac - Icr_ac0=self.Icr_ac - - Hse0=self.Hse - Hout0=self.Hout - V0=self.V - - Hse_d0= self.Hse_d - Hout_d0= self.Hout_d - V_d0= self.V_d - - Hse_ac0= self.Hse_ac - Hout_ac0= self.Hout_ac - V_ac0= self.V_ac - - R0=self.R - R_d0=self.R_d - - D0=self.D - B0=self.B - - Ise_D_d0 = self.Ise_D_d - Icr_D_d0 = self.Icr_D_d - Hse_D_d0 = self.Hse_D_d - V_D_d0 = self.V_D_d - - Ise_D_ac0 = self.Ise_D_ac - Icr_D_ac0 = self.Icr_D_ac - Hse_D_ac0 = self.Hse_D_ac - V_D_ac0 = self.V_D_ac - - V_need0 = self.V - Hse_need0 = self.Hse - Hout_need0 = self.Hout - - self.t=np.arange(t0,T+h,h) - - elif((min(self.t)<=t0) & (t0<=max(self.t))): - #Condition over exiting time in already initialized object - - #Search fot initial time - idx=np.searchsorted(self.t,t0) - - #set initial condition - - E0 = self.E - E_d0 = self.E_d - E_ac0 ==self.E_ac - - S0=self.S[idx] - Ias0=self.Ias[idx] - Imi0=self.Imi[idx] - Ise0=self.Ise[idx] - Icr0=self.Icr[idx] - - Ias_d0=self.Ias_d[idx] - Imi_d0=self.Imi_d[idx] - Ise_d0=self.Ise_d[idx] - Icr_d0=self.Icr_d[idx] - - Ias_ac0=self.Ias_ac[idx] - Imi_ac0=self.Imi_ac[idx] - Ise_ac0=self.Ise_ac[idx] - Icr_ac0=self.Icr_ac[idx] - - Hse0=self.Hse[idx] - Hout0=self.Hout[idx] - V0=self.V[idx] - - Hse_d0=self.Hse_d[idx] - Hout_d0=self.Hout_d[idx] - V_d0=self.V_d[idx] - - Hse_ac0=self.Hse_ac[idx] - Hout_ac0=self.Hout_ac[idx] - V_ac0=self.V_ac[idx] - - R0=self.R[idx] - R_d0=self.R_d[idx] - - D0=self.D[idx] - B0=self.B[idx] - - Ise_D_d0 = self.Ise_D_d[idx] - Icr_D_d0 = self.Icr_D_d[idx] - Hse_D_d0 = self.Hse_D_d[idx] - V_D_d0 = self.V_D_d[idx] - - Ise_D_ac0 = self.Ise_D_ac[idx] - Icr_D_ac0 = self.Icr_D_ac[idx] - Hse_D_ac0 = self.Hse_D_ac[idx] - V_D_ac0 = self.V_D_ac[idx] - - V_need0=self.V[idx] - Hse_need0=self.Hse[idx] - Hout_need0= self.Hout[idx] - - #set time grid - self.t=np.arange(self.t[idx],T+h,h) - - - else: - return() - - - - def model_SEIR_graph(t,y): - ydot=np.zeros(len(y)) - ydot[0]=self.dS(t,y[0],y[1],y[4],y[5],y[6],y[7],y[25],y[27]) - - ydot[1]=self.dE(t,y[0],y[1],y[4],y[5],y[6],y[7]) - ydot[2]=self.dE_d(t,y[0],y[1],y[2],y[4],y[5],y[6],y[7]) - ydot[3]=self.dE_ac(t,y[0],y[1],y[4],y[5],y[6],y[7]) - - ydot[4]=self.dIas(t,y[1],y[4]) - ydot[5]=self.dImi(t,y[1],y[5]) - ydot[6]=self.dIse(t,y[1],y[6],y[16],y[17]) - ydot[7]=self.dIcr(t,y[1],y[7],y[18]) - - ydot[8]=self.dIas_d(t,y[1],y[8]) - ydot[9]=self.dImi_d(t,y[1],y[9]) - ydot[10]=self.dIse_d(t,y[1],y[10]) - ydot[11]=self.dIcr_d(t,y[1],y[11]) - - ydot[12]=self.dIas_ac(t,y[1]) - ydot[13]=self.dImi_ac(t,y[1]) - ydot[14]=self.dIse_ac(t,y[1]) - ydot[15]=self.dIcr_ac(t,y[1]) - - ydot[16]=self.dHse(t,y[6],y[16],y[17],y[18]) - ydot[17]=self.dHout(t,y[17],y[18]) - ydot[18]=self.dV(t,y[7],y[16],y[18]) - - ydot[19]=self.dHse_d(t,y[6],y[16],y[17],y[19]) - ydot[20]=self.dHout_d(t,y[18],y[20]) - ydot[21]=self.dV_d(t,y[7],y[16],y[18],y[21]) - - ydot[22]=self.dHse_ac(t,y[6],y[16],y[17]) - ydot[23]=self.dHout_ac(t,y[18]) - ydot[24]=self.dV_ac(t,y[7],y[16],y[18]) - - ydot[25]=self.dR(t,y[4],y[5],y[16],y[17],y[25]) - ydot[26]=self.dR_d(t,y[4],y[5],y[16],y[17],y[25],y[26]) - - ydot[27]=self.dD(t,y[6],y[7],y[16],y[17],y[18],y[27]) - ydot[28]=self.dB(t,y[27]) - - ydot[29]=self.dIse_D_d(t,y[6],y[16],y[17],y[29]) - ydot[30]=self.dIcr_D_d(t,y[7],y[16],y[17],y[18],y[30]) - ydot[31]=self.dHse_D_d(t,y[16],y[18],y[31]) - ydot[32]=self.dV_D_d(t,y[18],y[32]) - - ydot[33]=self.dIse_D_ac(t,y[6],y[16],y[17]) - ydot[34]=self.dIcr_D_ac(t,y[7],y[16],y[17],y[18]) - ydot[35]=self.dHse_D_ac(t,y[16],y[18]) - ydot[36]=self.dV_D_ac(t,y[18]) - - ydot[37]=self.dV_need(t,y[7],y[16],y[18]) - ydot[38]=self.dHse_need(t,y[6],y[38],y[37]) - ydot[39]=self.dHout_need(t,y[39],y[37]) - - return(ydot) - - initcond = np.array([S0,E0,E_d0,E_ac0,Ias0,Imi0,Ise0,Icr0,Ias_d0,Imi_d0,Ise_d0,Icr_d0,Ias_ac0,Imi_ac0,Ise_ac0,Icr_ac0,Hse0,Hout0,V0,Hse_d0,Hout_d0,V_d0,Hse_ac0, - Hout_ac0,V_ac0,R0,R_d0,D0,B0,Ise_D_d0,Icr_D_d0,Hse_D_d0,V_D_d0,Ise_D_ac0,Icr_D_ac0,Hse_D_ac0,V_D_ac0,V_need0,Hse_need0,Hout_need0]) - - - sol = solve_ivp(model_SEIR_graph,(t0,T), initcond,method='LSODA',t_eval=list(range(t0,T))) - - self.t=sol.t - - self.S=sol.y[0,:] - self.E=sol.y[1,:] - self.E_d=sol.y[2,:] - self.E_ac=sol.y[3,:] - self.Ias=sol.y[4,:] - self.Imi=sol.y[5,:] - self.Ise=sol.y[6,:] - self.Icr=sol.y[7,:] - self.Ias_d=sol.y[8,:] - self.Imi_d=sol.y[9,:] - self.Ise_d=sol.y[10,:] - self.Icr_d=sol.y[11,:] - self.Ias_ac=sol.y[12,:] - self.Imi_ac=sol.y[13,:] - self.Ise_ac=sol.y[14,:] - self.Icr_ac=sol.y[15,:] - self.Hse=sol.y[16,:] - self.Hout=sol.y[17,:] - self.V=sol.y[18,:] - self.Hse_d=sol.y[19,:] - self.Hout_d=sol.y[20,:] - self.V_d=sol.y[21,:] - self.Hse_ac=sol.y[22,:] - self.Hout_ac=sol.y[23,:] - self.V_ac=sol.y[24,:] - self.R=sol.y[25,:] - self.R_d=sol.y[26,:] - self.D=sol.y[27,:] - self.B=sol.y[28,:] - self.Ise_D_d=sol.y[29,:] - self.Icr_D_d=sol.y[30,:] - self.Hse_D_d=sol.y[31,:] - self.V_D_d=sol.y[32,:] - self.Ise_D_ac=sol.y[33,:] - self.Icr_D_ac=sol.y[34,:] - self.Hse_D_ac=sol.y[35,:] - self.V_D_ac=sol.y[36,:] - - self.V_need=sol.y[37,:] - self.Hse_need=sol.y[37,:] - self.Hout_need=sol.y[37,:] - - - self.I = self.Ias + self.Imi + self.Ise + self.Icr - self.I_d = self.Ias_d + self.Imi_d + self.Ise_d + self.Icr_d - self.I_ac = self.Ias_ac + self.Imi_ac + self.Ise_ac + self.Icr_ac - - self.H = self.Hse + self.Hout - self.H_d = self.Hse_d + self.Hout_d - self.H_ac = self.Hse_ac + self.Hout_ac - - self.H_sat = [self.h_sat(self.Hse[i],self.Hout[i],self.t[i]) for i in range(len(self.t))] - self.V_sat = [self.v_sat(self.V[i],self.t[i]) for i in range(len(self.t))] - - self.V_cap = [self.Vtot(i) for i in self.t] - self.H_cap = [self.Htot(i) for i in self.t] - - self.H_need = self.Hse_need + self.Hout_need - - #Cálculo de la fecha del Peak - self.peakindex = np.where(self.I==max(self.I))[0][0] - self.peak = max(self.I) - self.peak_t = self.t[self.peakindex] - if self.initdate: - self.dates = [self.initdate+timedelta(int(self.t[i])) for i in range(len(self.t))] - self.peak_date = self.initdate+timedelta(days=round(self.peak_t)) - - # Detected Cases - self.I_det = self.I*(self.Ias_det*self.pE_Ias + self.Imi_det*self.pE_Imi + self.pE_Ise + self.pE_Icr ) - self.I_d_det = self.I_d*(self.Ias_det*self.pE_Ias + self.Imi_det*self.pE_Imi + self.pE_Ise + self.pE_Icr ) - self.I_ac_det = self.I_ac*(self.Ias_det*self.pE_Ias + self.Imi_det*self.pE_Imi + self.pE_Ise + self.pE_Icr ) - - # Prevalence: - self.prevalence_total = self.I_ac/self.population - self.prevalence_susc = [self.I_ac[i]/(self.S[i]+self.E[i]+self.I[i]+self.R[i]+self.V[i]+self.H[i]+self.B[i]) for i in range(len(self.I_ac))] - self.prevalence_detected = [(self.Ias_det*self.Ias[i]+self.Imi_det*self.Imi[i]+self.Ise_det*self.Ise[i]+self.Icr_det*self.Icr[i])//(self.S[i]+self.E[i]+self.I[i]+self.R[i]+self.V[i]+self.H[i]+self.B[i]) for i in range(len(self.I_ac))] - - return(sol) - - - - - - diff --git a/deprecated/src/SEIRHVD/example.py b/deprecated/src/SEIRHVD/example.py deleted file mode 100644 index f995b57..0000000 --- a/deprecated/src/SEIRHVD/example.py +++ /dev/null @@ -1,32 +0,0 @@ -from SEIRHVD_local import SEIRHVD_local -import numpy as np -from datetime import datetime -import matplotlib.pyplot as plt -tstate = '' -# Fecha Inicial -initdate = datetime(2020,5,15) -# Parametros del modelo -beta = 0.2 # Tasa de contagio -mu = 0.6 # Razon E0/I0 -ScaleFactor = 1 # Factor de Escala: Numero de infectados por sobre los reportados -SeroPrevFactor = 1 # Sero Prevalence Factor. Permite ajustar la cantidad de gente que entra en la dinamica -expinfection = 1 # Proporcion en la que contagian los expuestos -tsim = 500 # Tiempo de simulacion -# Creación del objeto de simulación -simulation = SEIRHVD_local(beta = beta,mu = mu,ScaleFactor=ScaleFactor,SeroPrevFactor=SeroPrevFactor,expinfection=expinfection,initdate = initdate, tsim = tsim,tstate=tstate) -quarantines = [[500.0, 0.85, 0.7, 0.0, 0.0, 500.0, 0.0]] -simulation.inputarray = np.array(quarantines) -simulation.addquarantine() -# Valores iniciales -I_act0 = 100 -dead = 0 -population = 10000 -H0 = 1 -V0 = 1 -# Capacidades hospitalarias -Htot = 1000 -Vtot = 1000 -simulation.initialvalues(I_act0,dead,population,H0,V0,Htot,Vtot,R=0,D=0,H_cr = 0) -# Simular -simulation.simulate() -simulation.plotinfectadosactivos() \ No newline at end of file diff --git a/deprecated/src/SEIRHVD/readme.md b/deprecated/src/SEIRHVD/readme.md deleted file mode 100644 index fcec369..0000000 --- a/deprecated/src/SEIRHVD/readme.md +++ /dev/null @@ -1,239 +0,0 @@ -# Plataforma de simulación de modelos compartimentales - -asdfasd - -# Instalación - -Github - -Instalación de librerías - -python - -vpn - - - -# Modelo SEIRHVD - - - -## Parámetros Generales - - -## Parámetros del Modelo -### Región Por CUT -tstate = '13' -#### Fecha Inicial -initdate = datetime(2020,5,15) - -### Parametros EPI -beta: tasa de contagio = 0.117 -mu: Razon E0/I0 -ScaleFactor: Factor de Escala, Numero de infectados por sobre los reportados -SeroPrevFactor: Factor de Seroprevalencia. Permite ajustar la cantidad de gente que entra en la dinamica -expinfection: Proporcion en la que contagian los expuestos -tsim: Tiempo de simulacion - -## Creación de Escenarios - -inputarray = np.array([tsim,max_mov,rem_mov,qp,iqt,fqt,movfunct]) - -* tsim: Tiempo de simulación -* max_mov: Movilidad máxima durante tiempo sin cuarentena -* rem_mov: Movilidad remanente durante tiempo de cuarentena -* qp: Periodo de Cuarentena para cuarentenas alternantes - qp días con cuarentena, luego qp días sin cuarentena -* iqt: Día de inicio de cuarentena (desde el inicio de la simulación) -* fqt: Día de fin de cuarentena (desde el inicio de la simulación) -* movfunct: Función de movilidad - * 0: Cuarentena total durante el período comprendido entre iqt y fqt - * 1: Cuarentena alternante tipo onda Cuadrada con período qp - * 2: Cuarnetena tipo diente de cierra con período qp - - - - - - -# Glosario de Variables: - # initial params - initdate = None - tsim = None - May15 = None - tstate = None - - # Parameters - beta = None - mu = None - ScaleFactor = None - SeroPrevFactor = None - expinfection = None - - # Quarantine Scenarios - inputarray = None - numescenarios = None - - # Data - # Sochimi - sochimi = None - Hr = None - Vr = None - Vr_tot = None - Hr_tot = None - sochimi_dates = None - sochimi_tr = None - # Infected minsal - Ir = None - Ir_dates = None - tr = None - # Death minsal - Br = None - Br_dates = None - Br_tr = None - # Death excess - ED_RM = None - ED_RM_dates = None - ED_tr = None - ED_RM_ac = None - # Death deis - - - # Sim and Auxvar: - sims = None - Vcmodel = None - Hcmodel = None - sims = None - Vmax = None - Hmax = None - T = None - S = None - H_sum = None - H_bed = None - H_vent = None - Iac = None - I = None - I_act = None - I_as = None - I_mi = None - I_se = None - I_cr = None - I_sum = None - E = None - E_as = None - E_sy = None - B = None - D = None - R = None - V = None - t = None - dt = None - idx = None - H_crin = None - H_in = None - H_out = None - H_sum = None - H_tot = None - CH = None - CV = None - ACH = None - ACV = None - peakindex = None - peak = None - peak_t = None - peak_date = None - population = None - infectedsusc = None - infectedpop = None - err_bed = None - err_vent = None - err_Iactives = None - H_colapsedate = None - V_colapsedate = None - - -# Funciones de ploteo - -## Función Standard - -simulation.pĺotvariable(enddate = datetime(2020,7,30),days=0, reales= True,ylim = 0,norm=1,scalefactor = False) - - - -## Lista de funciones: - -### plotactivos() - - - -# Creación de Tablas - - - - - -## Parámetros de ajuste - -## Santiago - -### Ajuste por ventiladores - -beta = 0.117 #0.25#0.19 0.135 -mu = 0.6 #2.6 0.6 -ScaleFactor = 1.9 #4.8 -SeroPrevFactor = 0.5 # Sero Prevalence Factor. Permite ajustar la cantidad de gente que entra en la dinamica -expinfection = 1 # Proporcion en la que contagian los expuestos - - - -### Ajuste por Muertos minciencia (SEIRHVD Class 2) - -beta = 0.117 #0.25#0.19 0.135 -mu = 0.15 #2.6 0.6 -ScaleFactor = 2.25 #4.8 -SeroPrevFactor = 0.5 # Sero Prevalence Factor. Permite ajustar la cantidad de gente que entra en la dinamica -expinfection = 1 # Proporcion en la que contagian los expuestos - - - -### Ajuste por Muertos minciencia para adelantar peak(SEIRHVD Class 2) - -beta = 0.115 #0.25#0.19 0.135 -mu = 0.15 #2.6 0.6 -ScaleFactor = 4 #4.8 -SeroPrevFactor = 0.3 # Sero Prevalence Factor. Permite ajustar la cantidad de gente que entra en la dinamica -expinfection = 1 # Proporcion en la que contagian los expuestos - - - -### Ajuste por exceso de Muertos (SEIRHVD Class 2) - -beta = 0.14 #0.25#0.19 0.135 -mu = 0.01 #2.6 0.6 -ScaleFactor = 2.0 #4.8 -SeroPrevFactor = 0.5 # Sero Prevalence Factor. Permite ajustar la cantidad de gente que entra en la dinamica -expinfection = 1 # Proporcion en la que contagian los expuestos - - - -beta = 0.119 #0.25#0.19 0.135 -mu = 0.7#2.6 0.6 -ScaleFactor = 2.5 #4.8 -SeroPrevFactor = 0.5 # Sero Prevalence Factor. Permite ajustar la cantidad de gente que entra en la dinamica -expinfection = 1 # Proporcion en la que contagian los expuestos - - -### Ajuste por datos de Camas - -#### Optimos fit de camas 13-04 - -beta = 0.117 -mu = 0.6 -fI = 1.9 -SeroPrevFactor = 0.5 - -## Atacama - - - - -# \ No newline at end of file diff --git a/deprecated/src/SEIRHVDStar/README.md b/deprecated/src/SEIRHVDStar/README.md deleted file mode 100644 index f14a695..0000000 --- a/deprecated/src/SEIRHVDStar/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# SEIRHVD - Metapopulation - -hopefully soon.. \ No newline at end of file diff --git a/deprecated/src/SEIRStar/Fixed_mobility_and_variable_entropy_optimization..ipynb b/deprecated/src/SEIRStar/Fixed_mobility_and_variable_entropy_optimization..ipynb deleted file mode 100644 index 4ce7ffd..0000000 --- a/deprecated/src/SEIRStar/Fixed_mobility_and_variable_entropy_optimization..ipynb +++ /dev/null @@ -1,606 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## The one-sector system \n", - "\n", - "For our optimation analysis, we are going to consider a particular case of the SEIR* model which models the spread of covid-19 in a number $n$ of sectors. So if we fix $n=1$ we obtain the following one-sector system. \n", - "\n", - "\\begin{eqnarray*}\n", - "\\frac{dS}{dt} &=& - \\beta\\, K_{s}\\, S \\,(\\alpha(t) \\, p) \\, \\frac{I}{N} \\, (\\epsilon \\, K_{s} + (1-\\epsilon)\\, K_{i}) \\, ,\\\\\n", - "\\frac{dE}{dt} &=& - \\beta \\, K_{s} \\, S \\, (\\alpha(t) \\, p) \\, \\frac{I}{N} \\, (\\epsilon \\, K_{s} + (1-\\epsilon)\\, K_{i}) - \\sigma \\, E \\, ,\\\\\n", - "\\frac{dI}{dt} & = & \\sigma E - \\gamma \\, I \\, ,\\\\\n", - "\\frac{dR}{dt} & = & \\gamma I \\, ,\n", - "\\end{eqnarray*}\n", - "\n", - "where the parameters $\\beta$, $\\sigma$, $\\gamma$, $K_{s}$, $\\alpha$, $p$, $\\epsilon$, $K_{i}$ are defined as:\n", - "\n", - "\\begin{eqnarray*}\n", - "\\beta &:=& \\text{Intrinsic rate infection}.\\\\\n", - "\\sigma^{-1} &:=& \\text{Expected incubation period}.\\\\\n", - "\\gamma^{-1} &:=& \\text{Expected recovery time}.\\\\\n", - "p &:=& \\text{Proportion of inhabitants that stays at their own sector before pandemic*}. (p=1)\\\\\n", - "\\alpha &:=& \\text{Regular variations of inhabitants proportion*}. (\\alpha = 1)\\\\\n", - "K_{s} &:=& \\text{Average risk reduction of suceptible inhabitants due to safety measures}.\\\\\n", - "K_{i} &:=& \\text{Average risk reduction of infected inhabitants due to either self-seclusion or hospitalization}.\\\\\n", - "\\epsilon &:=& \\text{Proportion of infected asymptomatic inhabitants}.\n", - "\\end{eqnarray*}\n", - "\n", - "\n", - "\n", - "$\\underline{NOTA:}$ Note that if the parameter $\\epsilon$, $K_{s}$, $K_{i}$, $p$, $\\alpha$ are equal to one then the previous system of equations reduces to the classical system of equations of the SEIR model.\n", - "\n", - "$*$ In the case one-sector SEIR* model $\\alpha =1$ and $p=1$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Class SEIR and solve_ivp.\n", - "\n", - "solve_ivp is a method of sub.package of integration scipy.integrate which is used to solve systems of ordinary differential equations given an initial value." - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "metadata": {}, - "outputs": [], - "source": [ - "# -*- coding: utf-8 -*-\n", - "\"\"\"\n", - "Created on Mon Aug 24 10:55:47 2020\n", - "\n", - "@author: abarr\n", - "\"\"\"\n", - "\n", - "import numpy as np\n", - "from scipy.integrate import solve_ivp\n", - "from scipy.special import expit\n", - "from joblib import Parallel, delayed\n", - "from scipy import signal\n", - "import pandas as pd \n", - "from numpy import linalg as LA \n", - "import multiprocessing\n", - "import matplotlib.pyplot as plt\n", - "from sklearn.metrics import mean_squared_error\n", - "\n", - "class SEIR_:\n", - " \n", - " def __init__(self, P, alpha, S0, E0, I0, R0, beta, sigma, gamma, mu, epsilon, Ks, Ki):\n", - " \n", - " self.S=S0\n", - " self.E=E0\n", - " self.I=I0\n", - " self.R=R0\n", - " self.N=(S0+E0+I0+R0).astype(\"float64\")\n", - " self.P=P\n", - " \n", - " self.population=population\n", - " self.tsim=tsim\n", - " \n", - " self.alpha=alpha\n", - " \n", - " self.beta=beta\n", - " self.gamma=gamma\n", - " self.sigma=sigma\n", - " self.mu=mu\n", - " self.epsilon=epsilon\n", - " self.Ks=Ks\n", - " self.Ki=Ki\n", - " \n", - " self.dSdt = lambda t,S,I: -self.beta*Ks*np.diag(np.reciprocal(self.N_hat(P, self.N, alpha, t))*S).dot(self.P_hat(P, alpha, t)).dot(self.I_hat(P, I, epsilon, Ks, Ki, alpha, t))\n", - " self.dEdt = lambda t,S,I,E: self.beta*Ks*np.diag(np.reciprocal(self.N_hat(P, self.N, alpha, t))*S).dot(self.P_hat(P, alpha, t)).dot(self.I_hat(P, I, epsilon, Ks, Ki, alpha, t)) - self.sigma*E;\n", - " self.dIdt = lambda t,E,I: self.sigma*E - self.gamma*I;\n", - " self.dRdt = lambda t,I: self.gamma*I;\n", - " \n", - " def P_hat(self, P, alpha, t):\n", - " return(alpha(t)*P)\n", - "\n", - " def I_hat(self, P, I, epsilon, Ks, Ki, alpha, t):\n", - " return (epsilon*Ks+(1-epsilon)*Ki) * self.P_hat(P, alpha, t).T.dot(I)\n", - "\n", - " def N_hat(self, P, N, alpha, t):\n", - " return(self.P_hat(P, alpha, t).T.dot(N)) # dim(N)=34\n", - " \n", - " \n", - " \n", - " def integr_sci(self, t0, T, h, E0init=False):\n", - " \n", - " self.t=np.arange(t0,T+h,h)\n", - " \n", - " def model_SEIR_graph(t,y):\n", - " \n", - " ydot=np.zeros(len(y))\n", - " \n", - " ydot[0]=self.dSdt(t,y[0],y[2])\n", - " ydot[1]=self.dEdt(t,y[0],y[2],y[1])\n", - " ydot[2]=self.dIdt(t,y[1],y[2])\n", - " ydot[3]=self.dRdt(t,y[2])\n", - " \n", - " return(ydot)\n", - " \n", - " initcond = (S0,E0,I0,R0)\n", - " \n", - " sol = solve_ivp(model_SEIR_graph,(t0,T), initcond, method='LSODA', t_eval=self.t)\n", - " \n", - " return(sol)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Only one Testing. " - ] - }, - { - "cell_type": "code", - "execution_count": 94, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "\n", - "def alpha(t):\n", - " return(np.ones(1))\n", - "\n", - "S0 = np.array(1000)\n", - "E0 = np.array(0)\n", - "I0 = np.array(100)\n", - "R0 = np.array(0)\n", - "\n", - "N=S0+E0+I0+R0\n", - "\n", - "#fixing parameters values\n", - "mu=0\n", - "beta=0.380\n", - "sigma=1/5\n", - "gamma=1/14\n", - "\n", - "epsilon=0.3\n", - "Ks=0.9\n", - "Ki=0.1\n", - "\n", - "Par_r=[Ks,Ki]\n", - "\n", - "P=1\n", - "tsim=160\n", - "\n", - "test_ = SEIR_(P, alpha, S0, E0, I0, R0, beta, sigma, gamma, mu, epsilon, Ks, Ki)\n", - "\n", - "t0=0\n", - "h=1\n", - "sol=test_.integr_sci(t0,tsim,h,E0init=False)\n", - "S,E,I,R=sol.y\n", - "t=sol.t\n", - "t=np.arange(t0,tsim+h,h)\n", - "plt.rcParams[\"figure.figsize\"] = 14, 4\n", - "plt.plot(t,I)\n", - "#plt.plot(test_s.I[0])\n", - "plt.xlabel('Days')\n", - "plt.ylabel('infectious')\n", - "plt.title('Simulation')\n", - "#plt.legend(bbox_to_anchor=(0.5,-0.2), loc=\"upper center\", fancybox=True, shadow=True, ncol=5)\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 100.000000\n", - "1 94.048525\n", - "2 90.058743\n", - "3 87.525139\n", - "4 86.072426\n", - " ... \n", - "155 9.839170\n", - "156 9.538931\n", - "157 9.247497\n", - "158 8.964632\n", - "159 8.690106\n", - "Name: node 0, Length: 160, dtype: float64\n" - ] - } - ], - "source": [ - "# Import data\n", - "\n", - "path = \"C:\\\\Users\\\\abarr\\\\Documents\\\\GitHub\\\\covid19geomodeller\\\\Examples\\\\One-sector optimization\\\\Datos\\\\\"\n", - "dat_syn = pd.read_csv(path+\"infected_active.csv\")['node 0']\n", - "\n", - "print(dat_syn)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Fixed mobility and variable entropy.\n", - "\n", - "* Optimized parameters: $K_s$, $K_i$.\n", - "* The synthetic data of active infected were obtained with the following values of the parameters: $\\mu=0$, $\\beta=0.380$, $\\sigma=1/5$, $\\gamma=1/14$, $\\epsilon=0.3$, $K_s=0.9$, $K_i=0.1$, $p=1$, $\\alpha=1$, and the following initial conditions $S(t_{0})= 1000$, $E(t_{0})=0$, $I(t_{0})=100$, $R(t_{0})=0$. \n", - "* Simulation time is 160 days.\n", - "* Objective function: $f=\\Delta_{t}+\\Delta_{I}+\\Delta_{s}$.\n", - " * $\\Delta_{I}=|I_s(t_p^s)-I_d(t_p^d)|$ where $I_d$ and $I_s$ are data and simulated time-series of infected people respectively. \n", - " \n", - " * The time interval $\\Delta_{t}=|t_p^s-t_p^d|$ between the data infection peak time $t_p^d$ and the simulated infection peak time $t_p^s$.\n", - " \n", - " * The difference $\\Delta_{s}=\\left|\\displaystyle\\int_{t=0}^{t_{max}} I_s(t)dt-\\sum_{t=0}^{t_{max}}I_d(t) \\right|$ where $t_{max}$ is the last available day with data.\n", - "\n", - "* Optimization method: PSO.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 113, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "from pathlib import Path\n", - "sys.path.insert(1, '../src/SEIR/')\n", - "sys.path.insert(1, '../src/utils/')\n", - "\n", - "from datetime import datetime\n", - "import numpy as np\n", - "from numpy import linalg as LA\n", - "import pygmo as pg\n", - "import pandas as pd\n", - "from time import time\n", - "\n", - "import numpy as np\n", - "from scipy.integrate import simps\n", - "from numpy import trapz\n", - "\n", - "class SEIRoptimization:\n", - " def __init__(self,P,S0,E0,I0,R0,mu,beta,sigma,gamma,epsilon,Ir,alpha,bounds): \n", - " \n", - " self.Ir=Ir\n", - " self.alpha=alpha\n", - " self.bounds=bounds\n", - " self.P=P\n", - " self.S0=S0\n", - " self.E0=E0\n", - " self.I0=I0\n", - " self.R0=R0\n", - " self.mu=mu\n", - " self.beta=beta\n", - " self.sigma=sigma\n", - " self.gamma=gamma\n", - " self.epsilon=epsilon\n", - " \n", - " def fitness(self,x):\n", - " test_ = SEIR_(P=self.P, alpha=self.alpha, S0=self.S0, E0=self.E0, I0=self.I0, R0=self.R0, beta=self.beta, sigma=self.sigma, gamma=self.gamma, mu=self.mu, epsilon=self.epsilon, Ks=x[0], Ki=x[1])\n", - " sol=test_.integr_sci(0,tsim,1,E0init=False)\n", - " \n", - " Data_=pd.DataFrame(sol.y[2])\n", - " Data_.index=sol.t\n", - " Data_.columns=['infecciosos']\n", - " x=Data_[Data_.infecciosos==max(Data_['infecciosos'])]\n", - " vec_s=[x.index[0], x['infecciosos'].values[0]]\n", - " \n", - " Dat_=pd.DataFrame(Ir)\n", - " Dat_.columns=['Infec_reales']\n", - " y=Dat_[Dat_.Infec_reales==max(Dat_['Infec_reales'])]\n", - " vec_r=[y.index[0], y['Infec_reales'].values[0]]\n", - " # 0*vec_s[0]-vec_r[0]) + 0*np.abs(vec_s[1]-vec_r[1])\n", - " res=np.abs(vec_s[0]-vec_r[0]) + np.abs(vec_s[1]-vec_r[1]) + np.abs(trapz(self.Ir,dx=1)-trapz(sol.y[2], dx=1))\n", - " \n", - " return [res]\n", - " \n", - " def get_bounds(self):\n", - " return(self.bounds)\n", - " \n", - " def set_bounds(self,bounds):\n", - " self.bounds = bounds\n", - " return(self.bounds)" - ] - }, - { - "cell_type": "code", - "execution_count": 114, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Optimization takes 45.522338 seconds\n", - "Fitness Value\n", - "[0.08823227]\n", - "Optimal arguments\n", - "[1. 0.00838556]\n" - ] - } - ], - "source": [ - "# parameters to optimize\n", - "# Ks, Ki\n", - "lb=[0.0, 0.0]\n", - "ub=[1, 1]\n", - "\n", - "bounds = [lb,ub]\n", - "Ir=dat_syn.values\n", - "\n", - "##########\n", - "S0 = np.array(1000)\n", - "E0 = np.array(0)\n", - "I0 = np.array(100)\n", - "R0 = np.array(0)\n", - "\n", - "N=S0+E0+I0+R0\n", - "\n", - "mu=0\n", - "beta=0.380\n", - "sigma=1/5\n", - "gamma=1/14\n", - "\n", - "epsilon=0.3\n", - "P=1\n", - "##########\n", - "#pygmo optimization object\n", - "opti=SEIRoptimization(P,S0,E0,I0,R0,mu,beta,sigma,gamma,epsilon,Ir,alpha,bounds) \n", - "algo = pg.algorithm(pg.pso(gen = 50))\n", - "pop = pg.population(opti,80)\n", - "\n", - "## Muestra quien gano\n", - "t0 = time()\n", - "pop = algo.evolve(pop)\n", - "t1 = time()\n", - "print('Optimization takes %f seconds' %(t1-t0))\n", - "print('Fitness Value')\n", - "print(pop.champion_f)\n", - "print('Optimal arguments')\n", - "print(pop.champion_x)\n", - "\n", - "## Guarda al ganador \n", - "Par_opt=pop.champion_x\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Solving the one-sector system with the winning parameters." - ] - }, - { - "cell_type": "code", - "execution_count": 115, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "\n", - "def alpha(t):\n", - " return(np.ones(1))\n", - "\n", - "S0 = np.array(1000)\n", - "E0 = np.array(0)\n", - "I0 = np.array(100)\n", - "R0 = np.array(0)\n", - "\n", - "N=S0+E0+I0+R0\n", - "\n", - "#fixing parameters values\n", - "mu=0\n", - "beta=0.380\n", - "sigma=1/5\n", - "gamma=1/14\n", - "\n", - "epsilon=0.3\n", - "Ks=Par_opt[0]\n", - "Ki=Par_opt[1]\n", - "\n", - "P=1\n", - "tsim=159\n", - "population=N\n", - "test_ = SEIR_(P, alpha, S0, E0, I0, R0, beta, sigma, gamma, mu, epsilon, Ks, Ki)\n", - "t0=0\n", - "h=1\n", - "sol=test_.integr_sci(t0,tsim,h,E0init=False)\n", - "S,E,I,R=sol.y\n", - "t=sol.t\n", - "\n", - "#######\n", - "mse = mean_squared_error(Ir,I)\n", - "######\n", - "\n", - "Data_=pd.DataFrame(I)\n", - "Data_.index=sol.t\n", - "Data_.columns=['infecciosos']\n", - "x=Data_[Data_.infecciosos==max(Data_['infecciosos'])]\n", - "vec_s=[x.index[0], x['infecciosos'].values[0]]\n", - "\n", - "Dat_=pd.DataFrame(Ir)\n", - "Dat_.columns=['Infec_reales']\n", - "y=Dat_[Dat_.Infec_reales==max(Dat_['Infec_reales'])]\n", - "vec_r=[y.index[0], y['Infec_reales'].values[0]]\n", - "\n", - "delta_t=np.abs(vec_s[0]-vec_r[0])\n", - "delta_I=np.abs(vec_s[1]-vec_r[1])\n", - "delta_s=np.abs(trapz(Ir,dx=1)-trapz(I,dx=1))\n", - "\n", - "delta_ks=np.abs(Par_opt[0]-Par_r[0])\n", - "delta_ki=np.abs(Par_opt[1]-Par_r[1])\n", - "\n", - "plt.rc('text', usetex=True)\n", - "plt.rcParams[\"figure.figsize\"] = 14, 4\n", - "plt.plot(t,I, label='Optimal solution')\n", - "plt.plot(t,Ir, label='Synthetic data')\n", - "#plt.plot(Datos_activos_interp[comunas[12]].values , label=comunas[12])\n", - "#plt.plot(t,test.I[num_test], label='Infected')\n", - "#plt.plot(test.R[num_test], label='Removed') \n", - "plt.xlabel('Days',size=15)\n", - "plt.ylabel('infectious',size=15)\n", - "plt.title('Optimized parameters: $K_s$, $K_i$. ' + 'mse: ' + str(\"{:.5f}\".format(mse)),size=20)\n", - "plt.legend(bbox_to_anchor=(0.5,-0.2), loc=\"upper center\", fancybox=True, shadow=True, ncol=5)\n", - "plt.text(135, 110, 'Fitness value: ' + str(pop.champion_f) , {'color': 'b','fontsize': 12},\n", - " ha='center', va='bottom') \n", - "plt.text(135, 100, r'$\\bigtriangleup_{t}$: ' + str(delta_t), {'color': 'b','fontsize': 12})\n", - "plt.text(135, 90, r'$\\bigtriangleup_{I}$: ' + str(\"{:.5f}\".format(delta_I)), {'color': 'b','fontsize': 12})\n", - "plt.text(135, 80, r'$\\bigtriangleup_{s}$: ' + str(\"{:.5f}\".format(delta_s)), {'color': 'b','fontsize': 12})\n", - "plt.text(135, 70, r'$\\bigtriangleup_{ks}$: ' + str(\"{:.5f}\".format(delta_ks)), {'color': 'b','fontsize': 12})\n", - "plt.text(135, 60, r'$\\bigtriangleup_{ki}$: ' + str(\"{:.5f}\".format(delta_ki)), {'color': 'b','fontsize': 12})\n", - "\n", - "plt.text(0, 20, r'Original parameters: [Ks,Ki]: ' + str([Par_r[0],Par_r[1]]), {'color': 'b','fontsize': 12})\n", - "plt.text(0, 10, r'Optimal parameters: [Ks,Ki]: ' + str([str(\"{:.5f}\".format(Par_opt[0])),'{:.5f}'.format(Par_opt[1])]), {'color': 'b','fontsize': 12})\n", - "\n", - "plt.show()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 116, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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KWVqO8eiBQNa2H4hRFJLTcAuwoDWfwOF6s44H4BLdXdB67+BZAA5Uso4k2l3Y4Dr7wsdlQGspwxgPcV6yr3rKYB1VWsMsPO+kAlTk1w0ZaR6AOYXkrU23xW0uo1CiGQp5Rz1uav1j29t+0vVCwiTofSLdsXuLtb8HxjpoOyUXElr22/atWE2XP/gtDnusC90VKynWE+xnmI9BbCuao3d94VMmFQmFwcmqdM5AGAcgcPSfFfS2meglqcLIfKFEPnaRdo+rPgNFKhl4Ti3udclWPl/oDOZ71I3yWtt+wFkCiFS1PnTXW37jdSDrUTTs5LutC90VKynWE+xnmI9BbCuAjq+nuKNa4mIiIiIiCxgCxMREREREZEFTJiIiIiIiIgsYMJERERERERkARMmIiIiIiIiC5gwERERERERWcCEicjBCCGS1SFxC4UQs8zmZQghyoQQ6VrFR0RE7ot1FLkjL60DIKKzSSmzhBCpADJM750ghNBBuXt5mGbBERGRW2MdRe6I92EickBCCAkgTkpZpE7rASSoN2MjIiLSDOsocjdsYSJyMEKIBAAGk4ooAThz52oiIiLNsI4id8RrmIgcTxKAPAAQQqQAmCGlLNA2JCIiIgCso8gNMWEicjwjAGQLIZIBxAFI1jgeIiIiI9ZR5HaYMBE5niQAEVLKLCllGgC9scuDOSFERseGRkREbs7qOorIVXDQByIHol44WyilFCZliwBASjlNs8CIiMjtsY4id8VBH4gcSwIA877gswHkmxYYRyQCeKEtERF1GKvqKODMMONJAAwA8qSUhnaOjajdsEsekWOZAvViWiP1Ytoi9eJaI11HBkVERATr6ygAeBZADoBSAOEdEx5R+2DCROQAhBA69Y7p06H0B08ymZcEpbJJVy+yNVZQM9i6RERE7c3WOkq1AMBcAKnGIciJnBWvYSJyUmq/8dkczpWIiByJmkTppJRZQoh0dXAIIqfFFiYi51UEdnMgIiLHkwelm14CgGytgyFqK7YwERERERERWcAWJiIiIiIiIguYMBEREREREVnAhImIiIiIiMgCJkxEREREREQWMGEiIiIiIiKygAkTERERERGRBf8PwSBZvLv24sIAAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "### mse plot versus variable entropy\n", - "h=0.01\n", - "vec_ks=np.arange(0,1+h,h)\n", - "vec_ki=np.arange(0,1+h,h)\n", - "#vec_ki=np.flip(vec_ki)\n", - "\n", - "#### inicial conditions\n", - "def alpha(t):\n", - " return(np.ones(1))\n", - "\n", - "S0 = np.array(1000)\n", - "E0 = np.array(0)\n", - "I0 = np.array(100)\n", - "R0 = np.array(0)\n", - "\n", - "N=S0+E0+I0+R0\n", - "\n", - "#fixing parameters values\n", - "mu=0\n", - "beta=0.380\n", - "sigma=1/5\n", - "gamma=1/14\n", - "\n", - "epsilon=0.3\n", - "P=1\n", - "tsim=159\n", - "population=N\n", - "t0=0\n", - "h=1\n", - "ecm_ks=pd.DataFrame(columns=['mse'])\n", - "for i in range(len(vec_ki)):\n", - " Ks=Par_opt[0]\n", - " Ki=vec_ki[i]\n", - " test_ = SEIR_(P, alpha, S0, E0, I0, R0, beta, sigma, gamma, mu, epsilon, Ks, Ki)\n", - " sol=test_.integr_sci(t0,tsim,h,E0init=False)\n", - " S,E,I,R=sol.y\n", - " mse = mean_squared_error(Ir,I)\n", - " ecm_ks.loc[i]=mse\n", - "\n", - "ecm_ki=pd.DataFrame(columns=['mse'])\n", - "for i in range(len(vec_ki)):\n", - " Ks=vec_ks[i]\n", - " Ki=Par_opt[1]\n", - " test_ = SEIR_(P, alpha, S0, E0, I0, R0, beta, sigma, gamma, mu, epsilon, Ks, Ki)\n", - " sol=test_.integr_sci(t0,tsim,h,E0init=False)\n", - " S,E,I,R=sol.y\n", - " mse = mean_squared_error(Ir,I)\n", - " ecm_ki.loc[i]=mse\n", - " \n", - "\n", - "# Plot\n", - "plt.rcParams[\"figure.figsize\"] = 14, 4\n", - "\n", - "# Mobility matrix\n", - "plt.subplot(1,2,1)\n", - "plt.plot(vec_ki,ecm_ks['mse'].values)\n", - "plt.title(\"mean squared error vs $K_i$\", size=20)\n", - "plt.xlabel(\"$K_i$\", size=15)\n", - "plt.ylabel(\"mse\", size=15)\n", - "plt.text(0.6, 100, r'Fixed parameter: $K_s$: ' + str(\"{:.5f}\".format(Par_opt[0])), {'color': 'b','fontsize': 10})\n", - "\n", - "# Destination\n", - "plt.subplot(1,2,2)\n", - "plt.plot(vec_ks,ecm_ki['mse'].values)\n", - "plt.title(\"mean squared error vs $K_s$\", size=20)\n", - "plt.xlabel(\"$K_s$\", size=15)\n", - "plt.ylabel(\"mse\", size=15)\n", - "plt.text(0.05, 100, r'Fixed parameter: $K_i$: ' + str(\"{:.5f}\".format(Par_opt[1])), {'color': 'b','fontsize': 10})\n", - "plt.show()\n" - ] - }, - { - "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.8.5" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/deprecated/src/SEIRStar/SEIR_star_QA.ipynb b/deprecated/src/SEIRStar/SEIR_star_QA.ipynb deleted file mode 100644 index d120a3f..0000000 --- a/deprecated/src/SEIRStar/SEIR_star_QA.ipynb +++ /dev/null @@ -1,1555 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "from class_SEIR import SEIR\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import importlib\n", - "import sys\n", - "from scipy.integrate import odeint" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "def plot_all_states(S, E, I, R, dim):\n", - " \"\"\"\n", - " dim: dimension of the mobility matrix\n", - " \n", - " \"\"\"\n", - " plt.subplot(2,2,1)\n", - " #Plot all Susceptible\n", - " for i in range(dim):\n", - " plt.plot(S[i])\n", - "\n", - " plt.title(\"Susceptible\")\n", - " plt.ylabel(\"Person\")\n", - "\n", - " plt.subplot(2,2,2)\n", - " #Plot all Exposed\n", - " for i in range(dim):\n", - " plt.plot(E[i])\n", - "\n", - " plt.title(\"Exposed\") \n", - "\n", - " plt.subplot(2,2,3)\n", - " #Plot all Infected\n", - " for i in range(dim):\n", - " plt.plot(I[i])\n", - "\n", - " plt.title(\"Infected\")\n", - " plt.ylabel(\"Person\")\n", - " plt.xlabel(\"Time\") \n", - "\n", - " plt.subplot(2,2,4)\n", - " #Plot all Removed\n", - " for i in range(dim):\n", - " plt.plot(R[i])\n", - "\n", - " plt.title(\"Removed\")\n", - " plt.xlabel(\"Time\")\n", - "\n", - " plt.show()\n", - "\n", - "def plot_comparison(dim_system, test_syn, I_single, E_single, I0_sum, E0_sum):\n", - " plt.rcParams[\"figure.figsize\"] = 14, 10\n", - "\n", - " plt.subplot(2,2,1)\n", - " for i in range(dim_system):\n", - " plt.plot(t,test_syn.I[i][:-1], label='Infected nodes {}'.format(i))\n", - "\n", - " plt.xlabel('Days')\n", - " plt.ylabel('Population')\n", - " plt.title(\"Infected, SEIR* model, {} nodes\".format(dim_system))\n", - " plt.legend()\n", - "\n", - " plt.subplot(2,2,2)\n", - " for i in range(dim_system):\n", - " plt.plot(t,test_syn.E[i][:-1], label='Exposed nodes {}'.format(i))\n", - "\n", - " plt.xlabel('Days')\n", - " plt.ylabel('Population')\n", - " plt.title(\"Exposed, SEIR* model, {} nodes\".format(dim_system))\n", - " plt.legend()\n", - "\n", - " plt.subplot(2,2,3)\n", - " plt.plot(t, I_single, label='Infected single')\n", - " plt.plot(t, I0_sum[:-1], label='Infected sum {} nodes'.format(dim_system))\n", - " plt.xlabel('Days')\n", - " plt.ylabel('Population')\n", - " plt.title(\"Infected, SEIR/SEIR* comparison\")\n", - " plt.legend()\n", - "\n", - " plt.subplot(2,2,4)\n", - " plt.plot(t, E_single, label='Exposed single')\n", - " plt.plot(t, E0_sum[:-1], label='Exposed sum {} nodes'.format(dim_system))\n", - " plt.xlabel('Days')\n", - " plt.ylabel('Population')\n", - " plt.title(\"Exposed, SEIR/SEIR* comparison\")\n", - " plt.legend()\n", - "\n", - " plt.show()\n", - " \n", - "#SEIR model function\n", - "def model_SEIR(y, t):\n", - " S0 = y[0]\n", - " E0 = y[1]\n", - " I0 = y[2]\n", - " R0 = y[3]\n", - " N = S0+E0+I0+R0\n", - " dSdt = -beta * I0 * S0 /N\n", - " dEdt = beta * I0 * S0 /N - sigma * E0 \n", - " dIdt = sigma * E0 - (gamma * I0)\n", - " dRdt = gamma * I0 \n", - " return [dSdt, dEdt, dIdt, dRdt]\n", - "\n", - "def mobility_matrix(dim_system, random_modulate=False, num_connected_nodes=None, diffusion=False, diff_value=None,\n", - " diagonal=False, symmetric=False, centralized=False, central_node=None, node_increment=None):\n", - " \"\"\" \n", - " dim_system: Integer \n", - " Dimension of the mobility matrix\n", - " random_modulate: Bool\n", - " matrix to set the number of connected nodes\n", - " num_connected_nodes: Integer\n", - " Number of connected nodes in modulated matrix\n", - " diffusion: Float\n", - " Diffusion of the connected nodes. 0 sum over rows\n", - "\n", - " def alpha_syn(t):\n", - " return(np.ones([dim_system, dim_system])) #mobility in node\n", - " \n", - " return(P_syn)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## SEIR* model\n", - "\n", - "We have that\n", - "\n", - "$$\\beta \\hat{S}_i\\sum_{j=1}^n\\frac{{\\hat P}_{ij}}{\\hat{N}_j}\\hat{I}_j=\n", - "\\beta k_SS_i\\sum_{j=1}^n\\frac{P_{ij}\\alpha_{ij}(t)}{(\\sum_{k=1}^nP_{kj}\\alpha_{kj}(t)N_k)}\\sum_{l=1}^nP_{lj}\\alpha_{lj}(t)I_l(\\epsilon\\kappa_S+(1-\\epsilon)\\kappa_I).$$\n", - "\n", - "so the SEIR* system became \n", - "\n", - "\\begin{equation}\n", - " \\begin{split}\n", - "\\frac{dS_i}{dt} &= -\\beta \\hat{S}_i \\sum_{j=1}^n\\frac{\\hat{P}_{ij}}{{\\hat{N}_j}}\\hat{I}_j\\\\\n", - "\\frac{dE_i}{dt} &= \\beta \\hat{S}_i \\sum_{j=1}^n\\frac{\\hat{ P}_{ij}}{{\\hat{N}_j}}\\hat{I}_j - \\sigma E_i \\\\\n", - "\\frac{dI_i}{dt} &= \\sigma E_i - \\gamma I_i\\\\\n", - "\\frac{dR_i}{dt} &= \\gamma I_i\\\\\n", - "\\label{SEIR*}\n", - "\\end{split}\n", - "\\end{equation}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Synthetic data\n", - "\n", - "We create data to run the Quality Assessment. We do this by creating a synthetic mobility matrix, all nodes with 500 initial Susceptible and 50 Infected in node 0." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Random connectivity matrix\n", - "\n", - "A random connectivity matrix $P_{i,j}$ is created. This to be used in the example." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAScAAAD8CAYAAAA11GIZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAART0lEQVR4nO3df4xlZX3H8feHYWFFQaNLU2BXl6Rb44a0SzNZbPhDRewuaOAf04DR1oZ0/5EWK9ZA2qClf9WmapoQ26lusGqlFk07IWu3qBBqo7iDbDcuK3ZDWxmXZOWHijWw7Mynf9wLuYxz7z2XPWfOc+d8XslJ7p1z5rlfJvDhOc957vPINhERpTmt7QIiIlaTcIqIIiWcIqJICaeIKFLCKSKKlHCKiCIlnCLilEnaK+m4pO8OOS9Jfy3pqKRDkn5jXJsJp4iow+3A7hHnrwC29Y89wCfHNZhwiohTZvs+4MkRl1wN/L17vgW8StJ5o9o8vc4Cn7fp1TPeumVDE03X7vuHzmq7hIiJPcP/ccLP6lTa2PWWl/uJJ5cqXfvAoWcPA88M/GjO9twEH3cB8OjA+8X+zx4b9guNhNPWLRv49v4tTTRdu13n72i7hIiJ3e+vnXIbTzy5xLf3v7bStTPn/dcztmdP4eNWC9KR351rJJwionwGllleq49bBAZ7LJuBY6N+IWNOER1lzHNeqnTUYB74nf5TuzcCP7E99JYO0nOK6LS6ek6SvgC8GdgkaRH4MLABwPbfAPuAK4GjwM+B3xvXZsIpoqOMWappySTb1445b+B9k7SZcIrosOXRY9KtSjhFdJSBpYRTRJQoPaeIKI6B5wpepjvhFNFRxrmti4gCGZbKzaaEU0RX9WaIlyvhFNFZYmnVr7yVIeEU0VG9AfGEU0QUpjfPKeEUEQVaTs8pIkqTnlNEFMmIpYJXTapUmaTdkh7u75xwU9NFRcTaWLYqHW0Y23OSNAPcBryN3mp2ByTN236o6eIiojlGnPBM22UMVaXntBM4avsR2yeAO+jtpBARU6w3CfO0SkcbqnzqsF0TXkTSHkkLkhZ+9EQty3pGRMOW+hMxxx1tqBJOlXZNsD1ne9b27LmvKberGBE9tljyaZWONlR5WjfxrgkRMR2Wp3wqwQFgm6QLgR8C1wDvarSqiGhcb0C83NlEYyuzfVLS9cB+YAbYa/tw45VFRKOeHxAvVaXYtL2P3tYuEbGOLOXrKxFRmtJniCecIjpsuaUncVUknCI6qvfF34RTRBTGiOcK/vpKwimio2xam2BZRcIporM09ZMwI2IdMuk5RUShMiAeEcUx7S0kV0XCKaKjeltDlRsB5VYWEQ3LppoRUSCTGeIRUaiSe07lxmZENMoWyz6t0jHOuB2aJL1W0j2SHpR0SNKV49pMzymio3oD4qf+9ZWKOzT9KfBF25+UtJ3eEkxbR7WbcIroLNU1CfOFHZoAJD2/Q9NgOBk4p//6lVRY6ruRcPr+obPYdf6OJpqu3f5jB9suYSLT8neN8vUGxCuPOW2StDDwfs72XP/1ajs0XbLi9z8C/JukPwBeDlw+7gPTc4rosAlmiD9ue3bIuSo7NF0L3G77ryT9JvBZSRfZXh72gQmniI6qcYZ4lR2argN2A9j+pqSNwCbg+LBG87QuosNq2vH3hR2aJJ1Bb4em+RXX/AB4K4CkNwAbgR+NajQ9p4iOsuG55VPvnwzboUnSrcCC7XngRuDvJP0RvVu+99r+hc15ByWcIjqqd1tXz83Tajs02b5l4PVDwKWTtJlwiuiwkmeIJ5wiOmrCqQRrLuEU0Vn13dY1IeEU0WFZQzwiitN7WpetoSKiMFmmNyKKldu6iChOntZFRLHytC4iimOLkwmniChRbusiojiljzmN7dNJ2ivpuKTvrkVBEbF2lq1KRxuq3HDeTn+RqIhYP56f51RqOI29rbN9n6StzZcSEWst85wiojg2nKxhsbmm1BZOkvYAewA2clZdzUZEg0oeEK8tnPrbxMwBnKNXj1x+MyLal+/WRUSxXHA4VZlK8AXgm8DrJS1Kuq75siJiLSyjSkcbqjytu3YtComItWV3ZMwpIqaNWOrC07qImD4ljzklnCI6qvTv1iWcIrrKvXGnUiWcIjosX1+JiOI4A+IRUarc1kVEkfK0LiKKYyecIqJQmUoQEUXKmFNEFMeI5Tyti4gSFdxxqrTBQUSsR/0B8SrHOJJ2S3pY0lFJNw255rclPSTpsKR/GNdmek4RXVZD10nSDHAb8DZgETggad72QwPXbANuBi61/ZSkXxrXbnpOER1WU89pJ3DU9iO2TwB3AFevuOb3gdtsP9X7XB8f12jne067zt/RdgkT2X/sYNslTGTa/r5dYmB5ufJUgk2SFgbez/X3DQC4AHh04NwicMmK3/9VAEn/AcwAH7H9r6M+sPPhFNFZBqrPc3rc9uyQc6s1svKG8XRgG/BmYDPw75Iusv3jYR+Y27qIDrOrHWMsAlsG3m8Gjq1yzb/Yfs72fwMP0wuroRJOEV3misdoB4Btki6UdAZwDTC/4pp/Bt4CIGkTvdu8R0Y1mtu6iM6qNk1gHNsnJV0P7Kc3nrTX9mFJtwILtuf7535L0kPAEvDHtp8Y1W7CKaLLapqFaXsfsG/Fz24ZeG3gA/2jkoRTRFcZXP1p3ZpLOEV0WsIpIkpU8JfrEk4RXZZwiojiTDYJc80lnCI6LIvNRUSZ8rQuIkqk9JwiojjVvprSmoRTRGcpA+IRUaj0nCKiSMttFzBcwimiqwqf5zR2PSdJWyTdI+lIf9eEG9aisIhonlztaEOVntNJ4Ebb35F0NvCApLsHd1aIiClV8JjT2J6T7cdsf6f/+mngCL0FzSMiGjPRmJOkrcDFwP2rnNsD7AHYyFk1lBYRTVsXkzAlvQL4EvB+2z9deb6/TcwcwDl6dcH/yBEB9PeGKndAvFI4SdpAL5g+b/vLzZYUEWum4G7E2HCSJODTwBHbH2u+pIhYKyXf1lXZGupS4D3AZZIO9o8rG64rItZCPVtDNWJsz8n2Nyh5oeGIeOkK7jllhnhER7U5wbKKhFNEl03707qIWJ/Sc4qIMiWcIqI4GXOKiGIlnCKiRCp4sbkqkzAjItZcek4RXZbbuogoTgbEI6JYCaeIKFLCKSJKI/K0LiJKVHHnlSrjUpJ2S3pY0lFJN4247p2SLGl2XJsJp4guq2E9J0kzwG3AFcB24FpJ21e57mzgD1llD4LVJJwiuqyexeZ2AkdtP2L7BHAHcPUq1/058FHgmSqlZcxpyuw6f0fbJUxk/7GDbZdQ2bT9beswwVSCTZIWBt7P9Tc1gd5WcY8OnFsELnnR50gXA1ts3yXpg1U+MOEU0WXVw+lx28PGiVZbFOqFliWdBnwceO8kpSWcIrrKtT2tWwS2DLzfDBwbeH82cBFwb2+/FH4ZmJd0le3B3tiLJJwiuqyeeU4HgG2SLgR+CFwDvOuFj7B/Amx6/r2ke4EPjgomyIB4RKfVMZXA9kngemA/cAT4ou3Dkm6VdNVLrS09p4guq2mGuO19wL4VP7tlyLVvrtJmwimiq1rck66KhFNER4msShARhUo4RUSZEk4RUaSEU0QUJythRkSxEk4RUaKSF5tLOEV0WG7rIqI8mYQZEcVKOEVEaaZ+hrikjcB9wJn96++0/eGmC4uI5mm53HSq0nN6FrjM9s8kbQC+Iekrtr/VcG0R0aRpH3OybeBn/bcb+kfB/0gRUVXJt3WVFpuTNCPpIHAcuNt2pa1dIqJw9ey+0ohK4WR7yfYOemsD75R00cprJO2RtCBp4TmerbvOiGhAXZtqNmGiZXpt/xi4F9i9yrk527O2ZzdwZk3lRUSjprnnJOlcSa/qv34ZcDnwvaYLi4iG9XdfqXK0ocrTuvOAz/S3HD6N3uLldzVbVkQ0bernOdk+BFy8BrVExFpzuemUGeIRHTbVPaeIWKemfRJmRKxfWc8pIoqUcIqI8pgMiEdEmTIgHhFlSjhFRGmmfhJmRKxT9tQvNhcR61W52ZRwiuiy3NZFRHkM5LYuIopUbjZNtthcRKwvda2EKWm3pIclHZV00yrnPyDpIUmHJH1N0uvGtZlwiugwLbvSMbKN3lpvtwFXANuBayVtX3HZg8Cs7V8D7gQ+Oq62hFNEV1Vdond8z2kncNT2I7ZPAHcAV7/oo+x7bP+8//Zb9PYjGCljTtGoXefvaLuEyvYfO9h2CZXt3PXz8ReN0ZuEWXnQaZOkhYH3c7bn+q8vAB4dOLcIXDKireuAr4z7wIRTRJdVX5XgcduzQ85plZ+tmnqS3g3MAm8a94EJp4gOm6DnNMoisGXg/Wbg2C98lnQ58CfAm2yP3T8uY04RXVXfmNMBYJukCyWdAVwDzA9eIOli4G+Bq2wfr1Jeek4RnVXPd+tsn5R0PbAfmAH22j4s6VZgwfY88JfAK4B/kgTwA9tXjWo34RTRZTUtNmd7H7Bvxc9uGXh9+aRtJpwiuspZpjciSpVleiOiSOVmU8Iposu0XO59XcIpoqvMJJMw11zCKaKjhOuahNmIhFNElyWcIqJICaeIKE7GnCKiVHlaFxEFcm7rIqJAJuEUEYUq966u+npOkmYkPSjpriYLioi1I7vS0YZJek43AEeAcxqqJSLWWsG3dZV6TpI2A28HPtVsORGxZmxYWq52tKBqz+kTwIeAs4ddIGkPsAdgI2edemUR0bxp7jlJegdw3PYDo66zPWd71vbsBs6srcCIaJBd7WhBlZ7TpcBVkq4ENgLnSPqc7Xc3W1pENMpADWuIN2Vsz8n2zbY3295Kb1eFryeYItYDg5erHS3IPKeIrjKtDXZXMVE42b4XuLeRSiJi7RU8IJ6eU0SXJZwiojz54m9ElMhAlkyJiCKl5xQR5fH6eVoXEeuIwS3NYaoi4RTRZQXPEE84RXRZxpwiojh2ntZFRKHSc4qI8hgvLbVdxFAJp4iuKnzJlIRTRJcVPJWg8u4rEbG+GPCyKx3jSNot6WFJRyXdtMr5MyX9Y//8/ZK2jmsz4RTRVa5nsTlJM8BtwBXAduBaSdtXXHYd8JTtXwE+DvzFuPISThEd5qWlSscYO4Gjth+xfQK4A7h6xTVXA5/pv74TeKskjWq0kTGnp3nq8a/6zv+tudlNwOM1t9mkaap3mmqFhuqdOa/uFoHm/ravO9UGnuap/V/1nZsqXr5R0sLA+znbc/3XFwCPDpxbBC5Z8fsvXGP7pKSfAK9hxN+mkXCyfW7dbUpasD1bd7tNmaZ6p6lWmK56S67V9u6amlqtB7RyoKrKNS+S27qIOFWLwJaB95uBY8OukXQ68ErgyVGNJpwi4lQdALZJulDSGfR2aZpfcc088Lv91++kt4vTyJ7TNM1zmht/SVGmqd5pqhWmq95pqvUl6Y8hXQ/sB2aAvbYPS7oVWLA9D3wa+Kyko/R6TNeMa1djwisiohW5rYuIIiWcIqJIUxFO46bGl0TSXknHJX237VrGkbRF0j2Sjkg6LOmGtmsaRtJGSd+W9J/9Wv+s7ZqqkDQj6UFJd7Vdy7QpPpwqTo0vye1AXfNHmnYSuNH2G4A3Au8r+G/7LHCZ7V8HdgC7Jb2x5ZqquAE40nYR06j4cKLa1Phi2L6PMfM3SmH7Mdvf6b9+mt5/RBe0W9Xq3POz/tsN/aPopzmSNgNvBz7Vdi3TaBrCabWp8UX+BzTN+t8Svxi4v91KhuvfIh0EjgN32y621r5PAB8Cyl2XpGDTEE4TT3uPyUh6BfAl4P22f9p2PcPYXrK9g94M5J2SLmq7pmEkvQM4bvuBtmuZVtMQTlWmxsdLJGkDvWD6vO0vt11PFbZ/DNxL2WN7lwJXSfofekMRl0n6XLslTZdpCKcqU+PjJegvWfFp4Ijtj7VdzyiSzpX0qv7rlwGXA99rt6rhbN9se7PtrfT+nf267Xe3XNZUKT6cbJ8Enp8afwT4ou3D7VY1nKQvAN8EXi9pUdJ1bdc0wqXAe+j9X/1g/7iy7aKGOA+4R9Ihev/Dutt2Hs+vY/n6SkQUqfieU0R0U8IpIoqUcIqIIiWcIqJICaeIKFLCKSKKlHCKiCL9P7muhaXdd0nJAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "dim_system = 5\n", - "\n", - "# alpha should have the same dimension than P_syn\n", - "# Strategy functions\n", - "def alpha_syn(t):return(np.ones([dim_system, dim_system])) #mobility in node\n", - "\n", - "#random symetric matrix\n", - "#P_syn = np.random.rand(5,5) # 5x5 matrix\n", - "#P_syn = (P_syn + P_syn.T)/2\n", - "\n", - "# disconnected matrix, only diagonal values, ie only mobility in nodes\n", - "P_syn = np.diag(np.repeat(1,dim_system))\n", - "\n", - "# two connected nodes matrix\n", - "#P_syn = np.diag(np.repeat(0.5,5))\n", - "#P_syn[0][2] = 0.5\n", - "#P_syn[2][0] = 0.5\n", - "\n", - "plt.imshow(P_syn)\n", - "plt.colorbar()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### States of the synthetic system" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[550. 500. 500. 500. 500.]\n" - ] - } - ], - "source": [ - "#initial conditions\n", - "t = np.linspace(0, 400, 4000) # time grid, (from, to, number_of_step)\n", - "\n", - "#define initial states vector\n", - "S0 = np.full(dim_system,500) #10 dim array with 500 persons per square\n", - "E0 = np.zeros(dim_system)\n", - "I0 = np.zeros(dim_system)\n", - "R0 = np.zeros(dim_system)\n", - "\n", - "I0[0] = 50 #50 initial infected persons in node 0\n", - "\n", - "N = S0+E0+I0+R0\n", - "\n", - "# variables\n", - "beta = 0.2\n", - "sigma = 0.1\n", - "gamma = 0.1\n", - "mu = 1\n", - "#epsilon = 0.3 #from literature\n", - "epsilon = 1.0\n", - "ks = 1.0\n", - "ki = 1\n", - "\n", - "#Init variables\n", - "tr=np.arange(401) #Days\n", - "h=0.1\n", - "\n", - "print(N)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Run synthetic system" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Scikit couldn't be imported. Using RK4 instead\n", - "[550. 500. 500. 500. 500.]\n" - ] - } - ], - "source": [ - "importlib.reload(sys.modules[\"class_SEIR\"]) # to load class when it changes on disk\n", - "from class_SEIR import SEIR\n", - "\n", - "test_syn = SEIR(P_syn,alpha_syn,S0, E0, I0, R0, \n", - " beta, sigma, gamma, mu, epsilon, ks, ki)\n", - "\n", - "test_syn.integr(min(tr),max(tr),0.1, False)\n", - "\n", - "print(N)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Quality assessment" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1 Constant number of population N\n", - "\n", - "Prove that total population remains constant during simulation. A straight line shows that N is constant in time." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "sim_time = 4000\n", - "\n", - "N_total = []\n", - "for i in range(sim_time):\n", - " N_total.append(np.sum(test_syn.S[:,i]) + np.sum(test_syn.E[:,i]) + np.sum(test_syn.I[:,i]) +np.sum(test_syn.R[:,i]))\n", - "\n", - "plt.plot(N_total)\n", - "plt.ylabel(\"N\", size=25)\n", - "plt.xlabel(\"Time\", size=25)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2 General states of the system\n", - "\n", - "Behavior of the sum of all the states of the system. We expect to observe a soft behavior." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "sim_time = 4000\n", - "\n", - "S_total = []\n", - "E_total = []\n", - "I_total = []\n", - "R_total = []\n", - "for i in range(sim_time):\n", - " S_total.append(np.sum(test_syn.S[:,i]))\n", - " E_total.append(np.sum(test_syn.E[:,i]))\n", - " I_total.append(np.sum(test_syn.I[:,i]))\n", - " R_total.append(np.sum(test_syn.R[:,i]))\n", - " \n", - "plt.plot(t,S_total, label=\"Susceptible\")\n", - "plt.plot(t,E_total, label=\"Exposed\")\n", - "plt.plot(t,I_total, label=\"Infected\")\n", - "plt.plot(t,R_total, label=\"Removed\")\n", - "plt.legend()\n", - "plt.ylabel(\"N\", size=25)\n", - "plt.xlabel(\"Time [Days]\", size=25)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3 All states of the system\n", - "\n", - "We expect to see a soft behavior in all the curves. In this assessment some mistake will be easily identify." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAEWCAYAAAB42tAoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3dd3wc9Zn48c+zqy5ZVneTbVluYGOKMW44xPTg0C4JOXKQOJALvwTSjuQIXJK75C6VNJI7QoAklITQITgJCRCD6biBcTfuvclVxar7/P6Y75q1LEsraXdnd/W8X699aXZmduax9R09+y3zHVFVjDHGmBMJ+B2AMcaY5GaJwhhjTKcsURhjjOmUJQpjjDGdskRhjDGmU5YojDHGdMoShemUiAwTkToRCbr380TkX0+wb5WIqIhkJDZKY2JPRD4tIq/5HUcysESRICIyQ0TeEJFDIrJfRF4XkbP8jqs9EdkkIheE36vqFlUtUNU2P+MyqcuVqSPuC0f49X9+x2WiZ9/8EkBECoG/AJ8HHgOygA8ATX7GZUwCXaaq//A7CNMzVqNIjDEAqvqwqrap6hFVfV5Vl4rIt0XkD+Ed2zffuOrvBhGpFZGNInJNxL6fFZFVbttKEZno1g8WkSdFZK/7zJciPvNtEXlCRB51n3tbRE5z234PDAP+7L713XKC5qSRIrLA1Y6eEZGSjv7RItJfRH4rIjtFZLuIfDfchGWMiNwlIk9EvP+RiMwVz0wR2SYi/yEiNa5WEln2+4vIg66MbxaRb4pIwG0bJSIvu/JZIyKPRnzuJBF5wdXq14jIxyO2lYrIHBE5LCILgJEJ+q9IepYoEuM9oE1EHhCRS0SkOJoPiUg+8EvgElXtB0wHlrhtVwHfBj4FFAKXA/vcxfJn4F1gCHA+8BURuTji0FcAjwMlwB+BP4lIpqp+EtiC9+2vQFVvP0FonwKuBwYDrS7Gjjzgto8CzgAuAjrs3zB90leBU92XoQ8AnwFm6/vzCg0EyvDK8WzgHhEZ67b9L9AfqAY+iFcmr3Pb/gd4HigGKt2+4evpBbwyXwF8AviViIx3n7sTaAQG4ZXv6+Pwb05NqmqvBLyAk4H7gW14fzznAAPw/tj/IWK/KkDxmgXzgYPAR4Hcdsd7DvhyB+eZAmxpt+424D63/G3grYhtAWAn8AH3fhNwQUfxuPfzgB9GbB8HNAPBdrEPwGtay43Y9xPAS37/LuyV2JcrU3WuLIdfn3XbJgP7gc3AJyI+M9NdJ/kR6x4DvuXKWhMwLmLb/wPmueUHgXuAynZx/DPwart1dwP/5Y7ZApwUse37wGt+//8lw8tqFAmiqqtU9dOqWgmcgvdt/I4uPlOPV7g/B+wUkb+KyElu81BgfQcfGw4MFpGD4RfwH3h/uMO2RpwjhJe8Bnfjn7M1YnkzkIn3za99HJku7nAcd+N9kzN9z5WqWhTxuhdAVRcAGwDBSwSRDrhrIGwzXjktw+vn29xu2xC3fIs73gIRWSEi4ZrBcGBKu2vjGryaSzneF5z2ZdtgTU++UNXVeLWLU4B6IC9i88B2+z6nqhfiVYdXA/e6TVvpuA11K7Cx3UXZT1VnRewzNLzgmqoqgR3hU0bxTxgasTwM75tYTQdxNAFlEXEUqup4jHFE5CYgG6/83dJuc7FrLgob5varwStzw9tt2w6gqrtU9bOqOhivpvErERmFVyZfbndtFKjq54G9eDWY9mXbYIkiIVwH2ldFpNK9H4rXDPMWXp/DOeLdr9Afr5ko/LkBInK5u1ia8Krv4WGqvwG+JiJnus6/USIyHFgAHBaRr4tIrogEReQUOXYo7pki8hHXQf0Vd+y33LbdeO2+nblWRMaJSB7w38AT2m74rKruxGsn/qmIFIpIQERGisgHu/WfZ9KWiIwBvgtcC3wSuEVETm+323dEJMv1YVwKPO7K2mPA90Sknyv3NwN/cMe9KnytAQfwvvy04Y08HCMinxSRTPc6S0ROdsd8Cvi2iOSJyDi8fhGDJYpEqcXrO5gvIvV4f5SXA19V1ReAR4GlwGK8whwWwOvw24HXjvtB4EYAVX0c+B5ex1wt8CegxBX4y4DTgY14375+g9fxF/YMXpPWAbwL9COq2uK2/QD4pquaf+0E/57f49WIdgE5wJdOsN+n8JoIVrpzPYFXMzJ9T3gkXfj1NN4f9h+p6ruquhavifT3IpLtPrMLr9zsAB4CPudq4wBfxKuNbwBew7sOfue2nYV3rdXh9QV+WVU3qmot3oCKq90xdwE/wqvRAHwBKHDr7wfui8P/Q0oS12lj+ggR+TYwSlWv9TsWY05ERGbiDfKo7GpfE39WozDGGNMpSxTGGGM6ZU1PxhhjOmU1CmOMMZ1K6UkBy8rKtKqqyu8wTJpavHhxjaqW+3FuK9smnrpbtlM6UVRVVbFo0SK/wzBpSkR8uzPXyraJp+6WbWt6MsYY06m0TRTWSW+MMbGR0k1PJ/LbT91BW4ZN02KiM+vfhlI5IekeNtgrL63Zw0+fX4MgfPWiMcwca3Mxmp5Ly0QRytlNoKmezGDaVphMDOX0O8XvEGLqzfX7+NcHFjG81Jtr8l8fWMSD109m+qj2E/waE520TBR67b/yvWdXs/ibF1BakN31B4xJE82tIb7+5FKGl+TxzE1nA3DFna/z708s5R83f5DcLHvAoOm+tPzKfcpgb/67FTsO+xyJMYn1+OKtbNnfwLcuHUe/nEz65WTyvSsnsP3gER5ZuMXv8EyKSstEMd4liuU7DvkciTGJo6o8+MZmThlSyMyx7w+RnzaylMlVJdzzygZa20I+RmhSVVomiv55mQwtyWXZNksUpu9YsvUga3bX8onJwxCRY7ZdP6OKnYcaeXVt++dLGdO1tEwUAJOGl7Bw0wEbJmv6jDnv7iArI8Blpx3/VNvzThpASX4Wjy/e2sEnjelc2iaKs6pKqKlrYmNNfdc7G5PiVJV/rNrN2SNLKczJPG57VkaAy08bzD9W7qGuqdWHCE0qS9tEMXlECQALNu73ORJj4m/tnjq27j/C+ScPOOE+l5wykOa2EK+8tzeBkZl0kLaJYmR5PqX5WZYoTJ/w4uo9AJx/8olvrDtzeDEl+Vk8v2JXosIyaSJtE4WIMHlECfMtUZg+4K0N+xhVUcCg/rkn3CcjGOD8kyqYu3oPza02+slEL20TBXjDArcfPMKWfQ1+h2JM3LSFlMWbDnBWVUmX+55/cgW1ja0s2XowAZGZdJHWieJsN2XBa+tsSKBJX6t2Hqa2qZUpI7pOFNNGlhEQuyZM96R1oqguy2dQ/xxet4vCpLGFm7zm1bOiSBT9czM5tbKI19Zah7aJXlonChHh7FFlvL6+hraQ3U9h0tM7Ww4yqH8OQ4pO3D8RacaoMt7ddojDjS1xjsyki7ROFOBdFAcbWlhp8z6ZNLVix6Gj09ZE4+xRZbSFlPkbbKCHiU7aJ4rpo0oBa5M16amhuZUNNfWMH1wY9WcmDi8iJzNgTbImammfKCr65XDSwH52UZi0tGpnLapwypDoaxTZGUEmDiu2e4xM1NI+UYBX1V6waT+NLW1+h2JMTK10MyR3p0YB3hQ3q3Ydtn4KE5U+kShmjCqjuTXEok0H/A7FmJhaufMwxXmZDOqf063PTR5Rgios3mzXhOla3BOFiARF5B0R+Yt7P0JE5ovIWhF5VESy3Pps936d214VqxgmjyghIyDWT2HSzvo99YyqKDhuWvGunDGsiIyAsGiTNT+ZriWiRvFlYFXE+x8BP1fV0cAB4DNu/WeAA6o6Cvi52y8m8rMzmDis2PopTNrZUFNPdVlBtz+Xl5XB+CH9WbjRahSma3FNFCJSCXwY+I17L8B5wBNulweAK93yFe49bvv50t2vSZ2YMbqM5TsOcaC+OVaHNMZXhxtbqKlroro8v0efn1xVzJJtB2lqtb4707l41yjuAG4BwjOQlQIHVTU8If42YIhbHgJsBXDbD7n9jyEiN4jIIhFZtHdv9HeXnj2qDFV4c8O+Hv1DjEk2G/Z6z1qpLu9+jQK8Du3m1hBL7UmQpgtxSxQicimwR1UXR67uYFeNYtv7K1TvUdVJqjqpvLy8g4907LTK/hRkZ1g/hUkbG/bWATCirGc1ikluEsGF1k9huhDPGsXZwOUisgl4BK/J6Q6gSEQy3D6VwA63vA0YCuC29wdiVoIzggGmVpfymj0z2MRZtAM4emtjTT3BgDCsJK9Hny/Jz2JURQEL7X4K04W4JQpVvU1VK1W1CrgaeFFVrwFeAj7mdpsNPOOW57j3uO0vaowfeD1jVClb9jfYtOMm3qIdwNEr2w8cYWBhDlkZPb+Mz6oqYdHmA4RsLjTTCT/uo/g6cLOIrMPrg/itW/9boNStvxm4NdYnnjHaa6p6fb3VKkx8dHMAR69sP3iEwUXdu3+ivbOqiqltbOW9PbWxCMmkqYQkClWdp6qXuuUNqjpZVUep6lWq2uTWN7r3o9z2DbGOY2R5PgMLc6yfwsRTdwZwHKO7AzV2HmpkcJQzxp7IWUf7KWyYrDmxPnFndlh42vE31tVYVdvEXA8GcBy7shsDNUIhZeehI50++jQalcW5DCzMsX4K06k+lSgAZowu5UBDCyt32rTjJua6O4Cjx2rqmmhpU4b0sulJRJhUVWx3aJtO9blEYY9HNfHSgwEcPbbjUCNAr5uewGt+2nGoke0Hj/T6WCY99blEUdEvh7EDbNpxk1AnGsDRYzvcH/XeNj0BTKoqBrBahTmhqBKFiHzEjQE/JCKHRaRWRFK27ebsUWUs2GjTjpv4iWYAR2/srfUOUVGY3dtDcdLAQgqyM+zGO3NC0dYobgcuV9X+qlqoqv1UtXsT4CeRGaNLaWoN2RTLJmXtq2siIFCc1/t794IBYeLwYpuG35xQtIlit6qu6nq31DBlRKlNO25SWk19MyX5WQQDsZk386zhxazZXcuhBnuQkTleRte7ALBIRB4F/gQcrTar6lNxiSrObNpxk+r21TVRmt/7Zqews8IPMtqyn/NOGhCz45r0EG2NohBoAC4CLnOvS+MVVCKcPaqMZdtt2nGTmvbVNVNaEJMpowA4rbKIzKDYjXemQ1HVKFT1ungHkmgzRpfy8394047PmjDI73CM6ZZ99c2cMqR/zI6XmxXklCH9beST6VC0o54qReRpEdkjIrtF5Ek3p03KOrWyyKYdNymrpq6J0vzY1SjAu5/i3a2HbDSgOU60TU/34c3uOhhvnpo/u3UpK9NNO279FCbVNLW2UdvYSlkMm54AJg0vprktxPLt9iAjc6xoE0W5qt6nqq3udT8Q/VODktSMUaVs3tfA1v027bhJHftdv1pJDDuzAc4c7t14Z/0Upr1oE0WNiFzrHsgSFJFrgZR/puiM0Tadh0k9B90Q1uK8zJget7Qgm5Hl+XbjnTlOtInieuDjwC73+phbl9JGlhcwoDDbEoVJKYePeImiMDe2iQJg8ogSFm3ab7Mrm2NElShUdYuqXq6q5e51papujndw8SYizBhVbtOOm5RS2+g92qJfTrS3QUVv0vASDje2snZPXcyPbVJXtKOebheRQhHJFJG5IlLjmp9Snk07blLN4UZXo8iJfY3i/QcZWfOTeV+0TU8XqephvJvstgFjgH+PW1QJdPZI66cwqSXc9BSPGsXQklwq+mWzwB5kZCJEmyjCX11mAQ+ratqUoorCHMYMKLBhsiZlvN/0FPsahYgwfWQpb6y35ljzvmgTxRwRWQ1MAuaKSDnQGL+wEmvGqHKbdtykjMONLeRmBsnKiM/jZGaMLqemrpnVu2rjcnyTerosaSISwLvBbhowSVVb8OZ9uiLOsSVMeNrxt23acZMCDh9pjUuzU9iMo0+B3Bu3c5jU0mWiUNUQ8FNVPaCqbW5dvaruint0CTLZTTv+qjU/mRRwuLElLkNjwwb2z2FURQGvrrXrwXiirbs+LyIfFZHYTH6fZAqyMzhjWBGv2YVhUkBtYyuFcaxRgFersOZYExZtorgZeBxoTodHoXZk5tgKlm0/xO7DadP1YtLU4caWuHRkR/rA6DJ7CqQ5Ktob7vqpakBVM9PhUagduXCc97CWF1bu9jkSYzpX19hKQZxrFFOqXXOs1bIN0d9wJ26up2+590NFZHJ8Q0us0RUFDC/Ns0Rhkl5Dcxt5mcG4nqPAPQVy3po9cT2PSQ3RNj39Cm/U07+493XAnXGJyCciwoUnD+DN9fuoa2r1OxxjTqihuZW8rPgmCoDzT65g9a5ath2w2ZX7umgTxRRVvQl374SqHgBiOxl+Erhw3ACa20K88p4NCzTd52raL4nIKhFZISJfdutLROQFEVnrfhb35jxHWtrIzYpv0xO83xw7d5XVKvq6aBNFi4gEAQVwN9yF4haVT84cXkxRXqY1P5meagW+qqonA1OBm0RkHHArMFdVRwNz3fseaWkL0dKmCalRVJcXUF2ezz9W2fXQ10WbKH4JPA1UiMj3gNeA78ctKp9kBAOcd1IFL67eQ3Nr2uVBE2equlNV33bLtcAqvCdCXgE84HZ7ALiyp+doaPaGqyYiUYBXq3hrw76jExGavinaUU8PAbcAPwB2Aleq6uPxDMwvs04ZxKEjLXZXqukVEakCzgDmAwNUdSd4yQSoOMFnbhCRRSKyaO/ejsvfkaOJIv5NTwAXnjyAljbl5TV2PfRlnSYKEckRka+IyP8BHwTuVtX/U9VViQkv8c4ZU07/3EzmLNnhdygmRYlIAfAk8BU363JUVPUeVZ2kqpPKyzt+0nBDszfQIlE1ijOGFVNWkMXflu9MyPlMcuqqRvEA3kSAy4BLgJ/EPSKfZWUEmDVhIM+v3H3025sx0RKRTLwk8ZCqPuVW7xaRQW77IKDHvcPhpqfcBCWKYECYNWEQc1ftodaan/qsrhLFOFW9VlXvxnv86TkJiMl3l502mIbmNuvEM93iprj5LbBKVX8WsWkOMNstzwae6ek5jrQkto8C4IrTB9PUGrJBHn1YV4ni6FcIVe0zNxdMGVHKgMJsnrHmJ9M9ZwOfBM4TkSXuNQv4IXChiKwFLnTveyTRndkAE4cVU1mca9dDH9ZVj9hpEXM6CZDr3gugnU3jISJDgQeBgXhDae9R1V+ISAnwKFAFbAI+rqoH3LexX+A9HKkB+HR4BEmiBQPC5acN5r7XN7G3tonyftl+hGFSjKq+hndtdOT8WJzjiOujyM1MTGc2eDejXnbaYO55ZQM1dU2UFdj10Nd0WqNQ1aCb2yk8v1NGN+Z66u6Y8kuA0e51A3BXL/5dvfbPZw2jNaQ8sXibn2EYcww/ahQAV54+hLaQ8qd3tif0vCY5xOcRWfRoTPkVwIPqeQsoCncA+mFURQGTR5TwyMIt9khIkzT8ShRjB/bjzOHFPDR/C6p2PfQ1cUsUkaIcUz4E2BrxsW1unW/+ZfIwNu9r4I31+/wMw5ijjiR41FOka6YMY2NNPW/a9dDnxD1RdGNMeUdtu8d9dYnmpqRY+dApAynKy+T3b22K63mMiVZ41FNunGeP7cisCYMoysvkD/M3J/zcxl9xTRTdHFO+DRga8fFK4LhhFtHclBQrOZlBrpkyjOdX7mb93rq4nsuYaDS1tpEREDKCCWkMOEZOZpCrzqzkuRW7bUbZPiZupa0HY8rnAJ9yz76YChwKN1H56dPTR5AZDPCbVzf4HYoxNLeGyMpIfJIIu+7sEQQE7n3Froe+JJ4lrrtjyp8FNgDrgHuBG+MYW9TK+2Vz1ZmVPLl4O3vsManGZ02tIbJ9TBSDi3K58vQhPLJwKzV1Tb7FYRIrnqOeXlNVUdVTVfV093pWVfep6vmqOtr93O/2V1W9SVVHquoEVV0Ur9i664ZzqmlT5c6X1vkdiunj/K5RAHxu5kia20Lca7XsPsPfEpcihpfm889nDeWh+VvYVFPvdzimD/NqFInvyI40sryAK04bzP2vb2L7wSO+xmISwxJFlL5y/mgygwF+/Pwav0MxfVgy1CgAvnbxWBT4yXN2PfQF/pe4FFFRmMNnz6nmr0t38sb6Gr/DMX1UU2ubr30UYZXFeXxmxgiefmc7b2854Hc4Js78L3Ep5MaZIxlemsd/PLWMxhabgtwkXlOS1CjAux4G98/hlieW0tRq10M6S44SlyJyMoP84J8msGlfAz974T2/wzF9kN+jniL1y8nkex+ZwLo9dfxy7lq/wzFxlBwlLoVMH1XGNVOGcc8rG3hxtc3PbxLL66PwtzM70rljK/jYmZXcNW89r661x6WmK0sUPfCtS8cxblAhNz/2Llv32x2qJnGSqUYR9t9XjGd0RT++9PA7NgoqTSVXiUsROZlBfnXNRFRh9u8WsM9uPDIJ0tzaljR9FGF5WRncde1EWtuU2b9bwP76Zr9DMjGWXCUuhVSV5fPb2ZPYfvAI192/kIMNdnGY+EvGGgVAdXkB986exJb9DXz6vgUcarDna6eT5CtxKWRSVQm/vvZMVu+q5apfv8nOQ1btNvGVrIkCYGp1KXddM5HVO2u56u432GHNUGkjOUtcCjn3pAoeuG4yOw81ctn/vs7r6+weCxM/zUlwZ3Znzj95APdffxY7DzZyxZ12PaQLSxQxMG1kKU/dOJ2ivEyu/e18vvfXldQ3tfodlklDTUnYR9He9JFlPPH56RTmZBy9HursekhpyV3iUsiYAf2Y84Wzufqsodz76kbO/+nLPLZwK82tIb9DM2lCVV2NIvkv27ED+/HnL87gE5OHce+rGznvJ/N4ZMEWuzEvRSV/iUsheVkZ/OAjp/Lk56dTUZjNLU8uZeaPX+KueevZdcimKDe90xpSQgpZPjy0qCfysjL4/j9N4OkbpzO4KJdbn1rGObe/xJ0vrbP+ixST4XcA6ejM4cU8c9PZvPzeXn41bz0/+vtqfvzcaqZWlzJzbDnnjCln7IB+eM92MiY64dppsjc9tXfGsGKevnE6r66t4e5X1vPj59bwk+fXcFZVCeedVMGMUWWMG1RIIGDXQ7KyRBEnIsLMsRXMHFvBxpp6nnp7G8+t2MX3n13N959dTWFOBqcM6c+EIf0ZPaAfw0ryGF6aR3lBtl0waUhEPgT8AggCv1HVH3bxkeM0uUSRCk1P7YkI54zxviRt3lfPM0t28NelO/nh31YDUJiTwbjBhYwf3J+TBnrXQ2VJHgMLcwja9eA7SxQJMKIsn69eNJavXjSWnYeO8OraGt7depBl2w9x3+ubaG57vx8jKyNAWX4WpQXZlORnUVqQRf/cTPKyguRlZZCXFSQ/K4PcrCA5mUEygkJmIOD9DArBQICMgJAZ9NZlBARBCFdeRCAg3vvwegFo915EELx9Ed7fL0ESWdvKywzGNTmLSBC4E++JjtuAhSIyR1VXduc4DQ1HqGitIfPwTg5s1XiEmhCFwCfHBPnkmEr21zfz9rYDrNh+mPV7d/L3Dev4c0S/XjAolOZlUZiXQf+cbApzgxTmZJKfFSQrM0hORpDczACZGQFyMwNkZQQJihAICBnh60Hw3geEgAQIBlw5d2X8aJl35xTefxNZDI/dX47uHHnNJJOs7BzKBw+NybEsUSTYoP65fHzSUD4+yfsFtrSF2H7gCJv3N7BlXz3bDhyhpq6ZffVN7K9vZt2eOg4faaGhpY22UOr+cUhmC79xAeX9suN5isnAOlXdACAijwBXAN1KFJtee47ZdUM5+Ewjf3xmU+yj9FE5mZRTxFSKjt94qOPPKG0coQ3r7ehYTsMKPvPgF2NyLEsUPssMBqgqy6eqLB8oP+F+qkpTa4gjzW3UN7dypLmNIy1ttIaU1jaltS1ES0hpC4VoaXPrQiFa2xR1n1cABcXrFFW37P0ENLzv+/urQkgTm6ASfDrys+N+X8IQYGvE+23AlPY7icgNwA0Aw4YNO+4gA0eNZu3zj5MZDJJhzTHHlF11hVsjCk94qaPy1H7d8Z9KfVmVsSvXlihShIiQk+k1NxXnZ/kdjumejv6qH/cXSVXvAe4BmDRp0nHbR004g1F3nRH76IzpQur1ihmTerYBkY3FlcAOn2IxptssURgTfwuB0SIyQkSygKuBOT7HZEzURBPdIBxDIrIX2HyCzWVAskw0kyyxJEsckDyxdBbHcFU9ccdRN4jILOAOvOGxv1PV73WxfyqU7WSJA5InlmSJA2JYtlM6UXRGRBap6iS/44DkiSVZ4oDkiSVZ4uiOZIk5WeKA5IklWeKA2MZiTU/GGGM6ZYnCGGNMp9I5UdzjdwARkiWWZIkDkieWZImjO5Il5mSJA5InlmSJA2IYS9r2UaQ7ERkAPA6cAdyjql/1KY6ZwB9UtdKP8xuTKCLybWCUql7rdyyJls41ipQkIptE5IIodr0Bb0RDYW+ShIjcLyLf7ennjTkRV5aPiEidiOxyZa3A77hM91miSF3DgZVqVUKT3C5T1QLgdLza720+x2N6QlXT6gV8CFgDrANujdM5fgfsAZZHrCsBXgDWup/Fbr0Av3TxLAUmRnxmttt/LTDbrdsEXAB8GngN+AlwANgIXOL2uR9oAZqBVrzx9ivwbuJaD+wHdrnlF4BiYAbwBtDkPrsV+G7EcRqBOhfLl4Engb3uvF+KiDnXnf8A3qR2/45353EOsAB418XyHbf/CGC+O+6jQJZbn+3er3PbqyLOcZtbvwa4uIe/oyDwDvAXP+Po42W7xZWNcNm+HfhrxP/7T4AtwG7g10Cu2zYT2OmO2+qO8xtgllvXglebDpftbLx7VOrc/nuBKe5Yq4Cf8f51dp377ES3fSredXHQld2ZEf+GEcDLQC3e1IQ1br8+V7Z9LfhxKORBvD+O1UCW+8WPi8N5zgEmtruYbg9fvMCtwI/c8izgb+6imgrMj7j4NrifxW65mGMTRQvwWffv+jzetA/hfqX73cURLvBfB44A5wI/dQXjYRfLr1xh/xHwd6AU+KTb5368CzYcSwleMvm++z+sdtsuduf5IfCq228osBzvj4EABW6fTHfsqcBjwNVu/a+Bz7vlG4Ffu+WrgUfd8jj3e8t2F8B6INiD39HNwB8jLiZf4ujjZXsLcKVbHg8sA37h9rkD74tNCdAP+DPwA7dtJt4f/LtcWfqCe/8X4Od4f/gbXVw/Auu485UAACAASURBVP4bWA3MxZtZcymw3R3rB3hlP3yd7QTec9uGAPvcvyOANw38PqDcbX/TnSsbuNgd56G+WLZ9/cMeh0I+DXgu4v1twG1xOldVu4tpDTDILQ8C1rjlu4FPtN8P+ARwd8T6u926TbyfKNZFbM/Dm0huoHt/P/DdiO2rgNddYV8DnIaXaCrxvmE9fYJYHg1vc+umuAsicr/bgPvc8gbgQxHbbgC2tfu/yQPedseqATLa/36A54BpbjnD7Sftf2eR+3Xjd1OJ90fjPLw/LuJHHH29bLuyXIdXY1X3Oyly/7/1wMh2/76Nbnkm3peeoHvfz33+ixHnWIxXO1iD94fu2XAseH/UW9x+X3Hnz3Pb1gKPu+WvA79v929/Dq82NAwvOeVHbPsj3pevPle2062PoqPpnIck6NwDVHUngPtZ0UVM0cS6K7ygqg1u8USdgVV4heRxYAxelbkN7wLrh3cxdXTOPLc9vH64W/c7ETkoIgeB/wAGuO2D2x3j6DQTIhIUkSV4TRcvuHMeVNXWDv6NR2Nx2w/h1XRi8Tu8A7gFCD8Bp9SnOGIpVcv2lcD/4NUOTsKbVqIcr4wtjihjf+fYefb3qWqbWw6f76WIWI7gJYMKvDKZF3HOzXg1sCF4fyD3AJeJSB5eAljn9hsOXBWOwcUxAy/BDAYOqGo9HH341PnAx+iDZTvdEkVU0zkn2IliilmsbiSJAN9U1SLgkKoWqWqOqm53xx0Z5Tm34rXDftMdo0hV+6nqLLd9J8fOhHr0wQmq2qaqp+N965kMnNzJ+eLy/yIilwJ7VHVx5OpExxEHyRYPdO//bj3vN3PW4P2hHx9Rxvqr1+l97Am8sv2Ye1t3gjh24CWKsGF4zafhWJbi1XKuwEsa4fmPtuLVKIoiXvnqPaZ2J1AsIvnglW3gH8BT9MGynW6Jws/pnHeLyCAA93NPFzHFJFYRycTreP47cJGIDHexjBeRK1wsO/Cas7KA4SJSKiLhP+ib8Tqow7EswPu2cqaI5Lpawikicpbb/hhwm4gUi0glXnPAMVT1IDAPrx23SETCzz2J/Dce/fe77f3xOuF7+/9yNnC5iGwCHsGrot/hQxyxlg5l+w68ptFTgXuBn4tIhTvuEBG5OPKkEWX74Y5iwWvG2uO2DwPGiUgZ8J9AQ0Qs+4CL8Pr5tvD+/9sf8GoaF7tyniMiM0WkUlU3A4uA74hIlojMAC7Dq8XMo6+V7Xi0cfr1wqtmbsDroAl3+I2P07mqOLYd98cc2+F3u1v+MMd2+C1w60vwRhQVu9dGt24TEaOe2p1T8W74AddHATzoCksAr5NrDV6b7D68Dulb8Tr9PuC2teJ9k/pvvKQwGq+TsQ34q4tlC94FugtvdNNbwAXuvHnunAc5dtRTOVDk9snF6/C+FK8pLLKj7Ua3fBPHdrQ95pbHc2xH2wZ62ImM19Yd7vDzLY4+XLbDndkbgRK37S5XtnJc+dwAHMbrY/tSxO9tW0TZzsAr+1XhWPBGBD7iynYOXsd4I15N4DFgYbtYXsYr+1vCsbjtU9y2/Xh9eX8Fhrlt1a4c1+E1e/0fXlLqc2Xbl0If5wtqFvAeXlX3G3E6x8OuQIaH/30Gr+1vLl5n2dyIC0OAO108y4BJEce5Hq+9dB1wXQ/imOEuoKXAEvea5VMsp+IN2VuKNxLqP936aryEtM4V6Gy3Pse9X+e2V0cc6xsuxjW4IcE9/D1FXky+xWFl28p2qpdtm8LDGGNMp9Ktj8IYY0yMWaIwxhjTKUsUxhhjOpXR9S7Jq6ysTKuqqvwOw6SpxYsX12iMnpndXVa2TTx1t2yndKKoqqpi0aJFfodh0pSIbO56r/iwsm3iqbtl25qejDHGdCqlaxSxdqihhRU7DjF2YD9KC7L9DscY04HWthAtbUpza4jmNvdqDdHSFiKkSigEiqKK99791PByyPupEds609nWrm4v6PLmg0520F7O0FKSn83pQ4t6dYwwSxTOvDV7+OLD71Db2EpuZpDbP3Yql5022O+wjElrh460sLGmnl2HGtlb28juw03sqW3kYEMLdU2t1Da2Hv1Z39RKU2sbIbv1Kyrnji3nvusmx+RYliiA9Xvr+NwfFlNdVsDNF47h7lfW85VHl1BZnMsZw4r9Ds+YlKeqbDtwhHe2HuTtzQdYueMwG2rqqKlrPma/gEBZQTYl+VkUZGdQVpBFVVk+BdkZFGQHyc4IkpURIDMYICvDvYJCVkaAjECAYEAICIgIAfGWAyKI+xleJ+FtAUEA6WiavGOceIeuPtvVoaWTA3QZVif65cTuz3ufTxSqyjefXk5WMMD9151FRWEOk6tL+NDPX+GWJ5by96+cQzDQm1+XMX1TKKQs3LSf51fuZu6q3Wza582Un5MZYPzg/px3UgUjywsYUZbP4KJcKgqzKc3PtustCfX5RLFw0wHe3LCP/7psHBWFOQAU5mTyrUvH8fmH3mbOu9v5pzMqfY7SmNRxsKGZhxds5ZGFW9i8r4GsYIBpI0v59PQqJlWVMHZgPzKDNo4mlfT5RHH3y+spyc/i6rOGHbP+4vEDOWlgP3710nquPH1Ip9VDYwwcbmzhN69s4L7XN1Hb1MrkESV85YLRXDRuIPnZff5PTUrr07+9XYcaeXHNHr5w7ihys4LHbAsEhOvOruLrTy5j0eYDnFVV4lOUxiQ3VeVvy3fx7Tkr2FPbxCWnDORL54/m5EGFfodmYqRP1//mvLsdVfjIxI6bli47bTAF2Rn8cf6WBEdmTGqob2rlS48s4caH3qa8XzbP3HQ2d117piWJNJOWNYo7X1pHQITPzxzZ6X5Pvb2dM4YVMaIsv8PteVkZXHbaIJ5ZsoPGljZyMoMd7mdMX7Rhbx03/H4xG/bW8bWLxvC5D44kw/oe0lJa/lZfW1vDi6t3d7rPxpp6Vu+q5You7pX48ITBNDS3MW/Nnk73M32Le3TmOyLyF/d+hIjMF5G1IvKoiGS59dnu/Tq3vcrPuGNl+fZDXPXrN9lf38wf/nUKXzhvtCWJNJaWv9n87AxqG1s73ee1tXsBmDm2otP9plaXUJKfxV+X7YpZfCYtfBnv8Z1hPwJ+rqqj8R4f+xm3/jPAAVUdBfzc7ZfSlm47yCfueYvsjABPfG4a00eW+R2SibO0TBT9cjKob+48Uby6toahJbkML83rdL+MYICLxw9g7qrdNLa0xTJMk6JEpBLvedG/ce8F70H3T7hdHsB7VjTAFe49bvv5ksJD6DbW1PPp+xbSPy+Txz8/neryAr9DMgmQlokiPztIXSc1ita2EG+u38eMUeVRDXu94OQBNDS3sXDT/liGaVLXHcAtQMi9LwUOqmq40G0DhrjlIcBWALf9kNv/OCJyg4gsEpFFe/fujVfsPXagvplP/W4+AA9eP5khRbk+R2QSJS0TRUF2JvVNJ/72/+62g9Q2tfKB0dFVmaeNLCUrGGDemuS7eE1iicilwB5VXRy5uoNdNYptx65UvUdVJ6nqpPJyXx6DcUKhkPJvjy1h96Emfjt7ktUk+pg0TRRBmttCNLV2nCxeXVuDCEwf2eEXu+PkZWUwpbrEOrQNwNnA5SKyCXgEr8npDqBIRMKjCCuBHW55GzAUwG3vD6Rc1fSul9czb81evnXpyTb/WR+UponCu15PVKt4dW0Np1YWUZSXFfUxZ46tYP3eerbub4hJjCY1qeptqlqpqlXA1cCLqnoN8BLwMbfbbOAZtzzHvcdtf1G7mps6yazYcYifvfAel546iGunDvc7HOODtEwU+UcTxfH9FIcbW1iy9SAfGNW9kRozx3pNAfPes+Yn06GvAzeLyDq8PojfuvW/BUrd+puBW32Kr0da2kLc8sRSivOy+O6Vp9hUNn1UWt5wF65RdDRE9q31+2gLKTOi7J8Iqy7LZ0hRLq+vreGT9q3KAKo6D5jnljcAx03+r6qNwFUJDSyGfvPqRlbsOMxd10zsVg3cpJe0rFEUuHnYOxoi++raGvKygkzsZjuriDBtZClvbdxHyJ6cYvqAPbWN/O+La7lw3AAumTDI73CMj9IzUbgaRUdDZF9bV8PU6lKyMrr/T59WXcrBhhZW76rtdYzGJLufPf8eLW0hvjHrZL9DMT5Ly0RRku9VkffXH/v0rK37G9hYU8+MbvZPhE1zo6Te3LCvdwEak+RW7jjMo4u28qlpVVSdYC4003ekdaLYV990zPrX1tUARH3/RHuDi7w7ud9cb4nCpLefvbCGwpxMvnjeKL9DMUnAt0QR7aRqPVGQnUFWRoB97WoUr62tYWBhDqMqen6z0LTqUuZv9DrEjUlHK3Yc4h+r9vCZGSOsA9sA/tYoop1UrdtEhLL8LPZFPLi9LaS8vr6GGaPLejXEb9rIUmobW1mx41CPj2FMMrvzpXX0y85g9vQqv0MxScKXRNHNSdV6pLQgm3117zc9Ld9+iIMNLT1udgqbVu36Kaz5yaShtbtr+dvyXcyeXkX/3Ey/wzFJwq8aRXcmVeuR0oKsY5qeXn5vLyLwgdG9m0OnojCHkeX51qFt0tK9r24gJyPI9TNG+B2KSSIJTxQ9mFSt/eejmmFzcFHuMdNtzFuzh1Mri452dPfGtJGlLNp0gNa2UNc7G5Mi9tc386clO/jIxCExuU5M+vCjRtHdSdWOEe0Mm1WleRxoaOFQQwsHG5pZsvUgHxwTmxk5p1aXUtfUyoodh2NyPGOSwcMLttDcGuLT1jdh2kl4oujBpGo9MrzUG/u9eX89c1ftIaRw7tjYJIopI7x+ires+cmkida2EH94azMzRpUxekA/v8MxSSaZ7qM40aRqPTLaDYFdvv0wc97dQWVxLqcPLep9lEB5v2xGVRRYP4VJG8+v3M3OQ4020sl0yNdJAaOZVK2nRpTlU9Evmwff3MR7u2u56dxRMZ35cmp1CU+/vZ3WtpA9VN6kvD/O38KQolzOO6nzZ8ibvilt/8KJCB8+dRCrd9WSlxX7MeFTq0upb25jufVTmBS3/eARXl9fw1WTKgkGbBpxc7y0nGY87GsXjaWsIJtpI0spK8iO6bEj+yli1aRljB+eXLwNVfjoxEq/QzFJqlc1ChH5iJty45CIHBaRWhFJmq/Y+dkZ3HTuqG5PKR6NcD+FdWibVBYKKY8v3sr0kaUMLcnzOxyTpHrb9HQ7cLmq9lfVQlXtp6qFsQgsFUytLmHhxv12P4VJWfM37mfr/iN8fNJQv0MxSay3iWK3qq7qerf0NK26zPopTEp7fPFW+mVncPH4gX6HYpJYb/soFonIo8CfgKMTK6nqU708bkqYUl0CePM+WT+FSTWNLW38ffkuLj9tMLlZQb/DMUmstzWKQqABuAi4zL0u7W1QqaKsIJvR1k9hUtS8NXtpaG7j0lMH+x2KSXK9qlGo6nWxCiRVTa0u5am3t9HSFiLT7qcwKeTZZTspzstkqqsZG3MivR31VCkiT4vIHhHZLSJPuinE+4yj91Nst+dTmNTR2NLG3FW7uXj8QLth1HSptyXkPmAOMBhvWvA/u3V9Rrif4q0N+32OxJjovbq2hvrmNi6ZMMjvUEwK6G2iKFfV+1S11b3uB2Iz816KsH4Kk4qeXbaT/rmZTB9Z6ncoJgX0NlHUiMi17vnXQRG5FuhzfzGnVpeyaNN+Wux+CpMCmlrb+MfK3Vw0boD1q5mo9LaUXA98HNjlXh9z6/oU66cwqeS1tTXUNrUy61RrdjLR6e2opy3A5TGKJWUdvZ9iwz7OiMN0IcbE0rPLdlGYk8HZI3v3/HjTd/R21NPtIlIoIpkiMldEalzzU59SVpDNmAEF1qFtkl5za4gXVu7iwnEDycqwZicTnd6WlItU9TDeTXbbgDHAv/c6qhRk/RQmFby+vobDja3MmmBTdpjo9TZRZLqfs4CHVbXPfqWeWl1KQ3Mby6yfwiSxZ5fupF92BjNGW7OTiV5vE8UcEVkNTALmikg50Nj7sFLPlBFeP8Ub62p8jsSYjrW0hXh+5W4uGDeA7Ayb28lEr8eJQkQCeDfYTQMmqWoL3rxPV8QotpRSWpDNhCH9mbdmr9+hmDgTkaEi8pKIrBKRFSLyZbe+RERecM9oeUFEit16EZFfisg6EVkqIhP9iPuN9fs4dKSFS06xZifTPT1OFKoaAn6qqgdUtc2tq1fVXTGLLsXMHFvO21sOcKihxe9QTHy1Al9V1ZOBqcBNIjIOuBWYq6qjgbnuPcAlwGj3ugG4K/Ehw9+W7SQ/K8g5Y/rUPbEmBnrb9PS8iHxUROxBu8DMsRWEFF5Za7WKdKaqO1X1bbdcC6zCm8LmCuABt9sDwJVu+QrgQfW8BRSJSEJvYmhpC/Hcil2cf/IAcjKt2cl0T28Txc3A40BzMj4KNdFOH1pEUV4mL63Z43coJkFEpAo4A5gPDFDVneAlE6DC7TYE2BrxsW1uXftj3SAii0Rk0d69sf2yMX/Dfg40tDDL5nYyPdCrROEefRpQ1cy++CjU9oIB4YNjynl5zV5CIfU7HBNnIlIAPAl8xQ0TP+GuHaw7roCo6j2qOklVJ5WXx7Z56NnlO8nLCjJzrDU7me7r7Q134uZ6+pZ7P1REJscmtNR07tgK9tU3s3yHDZNNZyKSiZckHop4ouPucJOS+xmuWm4DIh9KXQnsSFSsrW0hnlu+i3NPqrBmJ9MjvW16+hXeqKd/ce/rgDs7+0B3R4ykmnPGlCMCc1dZ81O6cn1yvwVWqerPIjbNAWa75dnAMxHrP+W+WE0FDoWbqBJhwab97Ktv5sPW7GR6qLeJYoqq3oS7d0JVDwBZXXymuyNGUkpJfhaThhfz3Io+O/irLzgb+CRwnogsca9ZwA+BC0VkLXChew/wLLABWAfcC9yYyGCfXbaTnMyANTuZHuvVpIBAi4gEce2t7oa7TuewcN+kwh1+tSISOWJkptvtAWAe8PVexueLD50yiP/5y0o21tQzoizf73BMjKnqa3Tc7wBwfgf7K3BTXIM6gbaQ8vfluznvpArysnp7uZu+qrc1il8CTwMVIvI94DXg+9F+OMoRI+0/E7eRIbHyIXdD09+WJ6x1wZgOLdy0n5q6Ji45xZqdTM/1dtTTQ8AtwA/waglXqurj0Xy2GyNG2p8zbiNDYmVIUS6nDy3ib8us+cn462/LdpKdEeC8kzr83mVMVHpUFxWRHOBzwChgGXC3qrZ24/MnHDGiqjvbjRhJSZecMpAf/G01W/c3MLQkz+9wTB/UFlKeXb6LmWPLyc+2ZifTcz2tUTyANxHgMrzpCX4S7Qd7MGIkJYWr+n9dZs1Pxh8LN+1nb20Tl5462O9QTIrraaIYp6rXqurdeI8/Pacbn+3uiJGUNKw0j4nDinjq7W14fZnGJNaz1uxkYqSn9dGjs96pamt3pnrq7oiRVPbRMyv5xtPLWb79MBMq+/sdjulD2kLKs8t2cd5JFdbsZHqtpzWK09zcTodFpBY41eZ6Ot6lpw4mKyPAE4u3dr2zMTG0YKM32unDp9poJ9N7PUoUqhp0czuF53fKsLmejtc/N5OLxg3gmXd30NTa5nc4pg/567Id5GRas5OJDXu6epx97MxKDja08NyK3X6HYvqI1rYQf1++i/NPGmA32ZmYsEQRZ+eMLmd4aR4PvLHJ71BMH+E1OzVbs5OJGUsUcRYICLOnVbF48wGWbjvodzimD/jTku3kZwU5d6w1O5nYsESRAB+bVEl+VpD7rVZh4qyxpY1nl+3ikgmDyM2yKcVNbFiiSIDCnEw+dmYlf353BzsOHvE7HJPGnl+5m7qmVj4y8bgH6BnTY5YoEuSz51QD8Kt563yOxKSzp97exuD+OUwdUep3KCaNWKJIkMriPK6aNJRHF261WoWJiz21jbzy3l7+aeIQAoHob4I1piuWKBLoxpkjAfjfF61WYWJvzpIdhBT+6YxKv0MxacYSRQJVFudxzZThPLpwCyvsmdomhlSVRxZu5fShRYyqKPA7HJNmLFEk2L9dMIaivCy+M2elTRZoYmb+xv2s21PHNVOG+R2KSUOWKBKsf14m/37xWBZs2s9Tb2/3OxyTJv7w1mYKczJsSnETF5YofPDxSUOZNLyYb/95hXVsm17bW9vEcyt28bEzh9q9EyYuLFH4IBgQfvrx02gLKV97/F3aQtYEZXrusUVbaWlTrplqzU4mPixR+GR4aT7/ddk43li/j58+v8bvcEyKam4N8eCbmzh7VCkjy60T28SHJQoffXzSUD4xeRi/mreeP71j/RWm+/60ZDu7Dzfx/84Z6XcoJo3ZHMQ+EhG+c/l4Nuyt42uPv0t+dgYXjhvgd1gmRYRCyj2vbODkQYV8YHSZ3+GYNGY1Cp9lZQS4d/Ykxg/pz40PLebvy3f5HZJJES+u3sO6PXV87oPVdOdxxMZ0lyWKJFCYk8mD109m/OD+fP6hxdzzynq7x8J06e5X1jOkKJdZE+y5Eya+LFEkif65mTxyw1RmTRjE959dzQ2/X0xNXZPfYZkktXjzfhZuOsC/fmAEmUG7jE18WQlLIjmZQf736jP4xqyTeXnNXi7++Ss8vGCLDZ81x7lr3gaK8jL5+KShfodi+gBLFEkmEBA+e041f/7iDKrK8rntqWVc8otXeOrtbTS3hvwOzySB93bX8o9Vu/n09Crys208iok/SxRJauzAfjzxuWncdc1EQgo3P/YuM370It9/dhVLtx20Pow+7Ncvryc3M8jsaVV+h2L6iKT6OiIiHwJ+AQSB36jqD30OyVciwiUTBnHx+IG8snYvD765md+9tpF7XtngPZxmZClTq0s5Y2gRI8ryybC26qQVq7K961Ajc5bs4JPThlOcnxXTGI05kaRJFCISBO4ELgS2AQtFZI6qrvQ3Mv8FAsLMsRXMHFvBwYZmnluxi5ff28u8NXuPTiyYlRFgdEUBI8sLGFyUy5CiHIYU51JekENRXib98zLpl51hwyh9EMuy/fiirbSGlE9Pr4pxlMacWNIkCmAysE5VNwCIyCPAFUC3L6Y53/lvjhxoiXF4yeWDwDkKbSGlNaS0hkK07lHaQt7rIHCwg88FAoIA4XwhCCIg3hv309unvRPlmK5ST89yU+IS2iVf/wwDh8f1zuaYlO1da5cTfPj33BoQ3vqft3grDoGa9FFQkc2H/+ObMTlWMiWKIcDWiPfbgCntdxKRG4AbAIYN63gStL0bBtKYOyoOISa5gPfqqgFK3avbetotkuTdKXu2b4t3oohJ2V6xZBmacTFtQE1jfAI16aN+zYqYHSuZEkVHXyGP+xOjqvcA9wBMmjSpwz9BH/nuBbS22D0I8RTuSw//Ao7+dBu03X7vf7CjY2iH+2qCMsygqrh/qYhJ2f7ApVdQefJaCrIzyQpaE6LpXEZu7L78JFOi2AZEDgqvBHb05EDFQ6tjEpAxMRKTsp2Vm8fYU06LWVDGRCuZhsksBEaLyAgRyQKuBub4HJMxsWBl26S0pKlRqGqriHwBeA5vCOHvVDV2jWzG+MTKtkl1kso3bonIXmDzCTaXATUJDKczyRJLssQByRNLZ3EMV9XyRAYTliJlO1nigOSJJVnigBiW7ZROFJ0RkUWqOsnvOCB5YkmWOCB5YkmWOLojWWJOljggeWJJljggtrEkUx+FMcaYJGSJwhhjTKfSOVHc43cAEZIllmSJA5InlmSJozuSJeZkiQOSJ5ZkiQNiGEva9lEYY4yJjXSuURhjjIkBSxTGGGM6lXaJQkQ+JCJrRGSdiNwap3P8TkT2iMjyiHUlIvKCiKx1P4vdehGRX7p4lorIxIjPzHb7rxWR2T2IY6iIvCQiq0RkhYh82cdYckRkgYi862L5jls/QkTmu+M+6u5MRkSy3ft1bntVxLFuc+vXiMjF3Y3FHSMoIu+IyF/8jCOWrGxb2XbHSHzZVtW0eeHd9boeqAaygHeBcXE4zznARGB5xLrbgVvd8q3Aj9zyLOBveBPDTQXmu/UlwAb3s9gtF3czjkHARLfcD3gPGOdTLAIUuOVMYL47x2PA1W79r4HPu+UbgV+75auBR93yOPd7ywZGuN9nsAe/o5uBPwJ/ce99icPKtpXtdCjbvhT6eL2AacBzEe9vA26L07mq2l1Ma4BBEYV8jVu+G/hE+/2ATwB3R6w/Zr8exvQM3sNxfI0FyAPexptKuwbIaP/7wZvOYppbznD7SfvfWeR+3Th/JTAXOA/4iztuwuOwsm1lO13Kdro1PXU07/+QBJ17gKruBHA/K7qIKaaxumrlGXjfdnyJxVWJlwB7gBfwvqkcVNXWDo579Jxu+yGgNEax3AHcAoTc+1Kf4oglK9tWtsGnsp1uiSKqef8T7EQxxSxWESkAngS+oqqH/YpFVdtU9XS8bz2TgZM7OW5cYhGRS4E9qro4cnWi44iDZIsHrGyf6LhpV7bTLVHE7JkWPbBbRAYBuJ97uogpJrGKSCbehfSQqj7lZyxhqnoQmIfXjlskIuFZiiOPe/Scbnt/YH8MYjkbuFxENgGP4FXR7/Ahjlizsu1jLGF9tmzHo43TrxdeO9wGvA6acIff+Didq4pj23F/zLGdbLe75Q9zbCfbAre+BNiI18FW7JZLuhmDAA8Cd7Rb70cs5UCRW84FXgUuBR7n2I62G93yTRzb0faYWx7PsR1tG+hhJzIwk/c7/HyLw8q2le1UL9u+FPp4vvBGP7yH14b4jTid42FgJ9CCl50/g9f2NxdY636WRBT4O108y4BJEce5HljnXtf1II4ZeFXGpcAS95rlUyynAu+4WJYD/+nWVwML3HEfB7Ld+hz3fp3bXh1xrG+4GNcAl/Ti9xR5MfkWh5VtK9upXrZtCg9jjDGdSrc+CmOMMTFmicIYY0ynLFEYY4zplCUKY4wxnbJEYYwxplMZXe9ikpWIhIcKAgwE2oC97n2Dqk73JTBjesHKdfKx4bFpQkS+DdSp6k/8jsWYWLFynRys6SlNiUid+zlTL8U8RQAAAP1JREFURF4WkcdE5D0R+aGIXOPm118mIiPdfuUi8qSILHSvs/39FxhzPCvX/rBE0TecBnwZmAB8EhijqpOB3wBfdPv8Avi5qp4FfNRtMyaZWblOEOuj6BsWqpuaWUTWA8+79cuAc93yBcA4kaMTSxaKSD9VrU1opMZEz8p1glii6BuaIpZDEe9DvF8GAngPLzmSyMCM6QUr1wliTU8m7HngC+E3InK6j7EYEytWrmPAEoUJ+xIwyT2YfiXwOb8DMiYGrFzHgA2PNcYY0ymrURhjjOmUJQpjjDGdskRhjDGmU5YojDHGdMoShTHGmE5ZojDGGNMpSxTGGGM69f8BvLjhs9tysn8AAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plot_all_states(test_syn.S, test_syn.E, test_syn.I, test_syn.R, dim_system)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 4 Sensibility to parameters" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Scikit couldn't be imported. Using RK4 instead\n", - "beta = 0.0\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Scikit couldn't be imported. Using RK4 instead\n", - "beta = 0.3333333333333333\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Scikit couldn't be imported. Using RK4 instead\n", - "beta = 0.6666666666666666\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Scikit couldn't be imported. Using RK4 instead\n", - "beta = 1.0\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Scikit couldn't be imported. Using RK4 instead\n", - "beta = 1.3333333333333333\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Scikit couldn't be imported. Using RK4 instead\n", - "beta = 1.6666666666666665\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Scikit couldn't be imported. Using RK4 instead\n", - "beta = 2.0\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Scikit couldn't be imported. Using RK4 instead\n", - "beta = 2.333333333333333\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Scikit couldn't be imported. Using RK4 instead\n", - "beta = 2.6666666666666665\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Scikit couldn't be imported. Using RK4 instead\n", - "beta = 3.0\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "#change beta from 0 to 3.\n", - "for beta in np.linspace(0,3,10):\n", - " test_QA = SEIR(P_syn,alpha_syn, S0,E0,I0,R0,beta, sigma, gamma, mu, epsilon, ks, ki)\n", - " test_QA.integr(min(tr),max(tr),0.1,True)\n", - " \n", - " print(\"beta = {}\".format(beta))\n", - " plot_all_states(test_QA.S, test_QA.E, test_QA.I, test_QA.R, dim_system)\n", - "\n", - "#reset system" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 5 Same dimension of parameters\n", - "\n", - "The dimension of the mobility matrix $P$ should have the same dimension than $\\alpha(t)$ and ..." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "compatible variables (P_syn and alpha_syn)\n" - ] - } - ], - "source": [ - "if np.shape(P_syn)==np.shape(alpha_syn(0)):\n", - " print(\"compatible variables (P_syn and alpha_syn)\")\n", - "else:\n", - " print(\"dimension error in variables\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 6 Running only one disconnected node\n", - "\n", - "We should see dynamics only in one node, the other should keep their states constant. Infected are shown." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAD5CAYAAAA9SqL2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3deXxV9Zn48c9DEhI2QxKCIgETFJVVJBFwtOLK4lipdcMqUhEpLf5+bZ2xxXF+Ks60VTttVaQqFihaBRmZKrVuIDKKIksUkaWQAFEuokDYl0AIz++P8w3ehHOz3i03z/vFfd1zvud7znlu7vfynPV7RFUxxhhjqmsR6wCMMcbEJ0sQxhhjfFmCMMYY48sShDHGGF+WIIwxxviyBGGMMcZXcqwDaIgOHTpobm5urMMwCaqwsHCnqmYDiMgw4AkgCfiTqj4SXFdEUoHngXygFLhZVUtEJBdYB6x3VT9W1fE1rdfatYmkwsLCfcASVR1W13maZILIzc1lxYoVsQ7DJCgR+cK9JwFTgKuAALBcROap6tqg6ncCu1X1LBEZCTwK3OymbVTVfnVdr7VrE0kiUlSf5AB2iIm9h8uZs2IL0xdvpnj7gViHY+LLAKBYVTep6lFgNjCiWp0RwEw3/ApwhYhIFGM0JmKa5B5EuCzZWMqElz5h18GjAIjA3ZedxT1XnY39xg3QGdgSNB4ABoaqo6rHRGQvkOWm5YnIp8A+4N9V9YPqKxCRccA4gK5du4Y3emMaqdkmiM8Dexnz5+V0zmjFtNEFnJaexu/e2cDkhcUIcM+Qc2Idook9v62E6n3ThKqzDeiqqqUikg+8KiK9VHVflYqqU4GpAAUFBdbvjYkrUU0QIlIC7AcqgGOqWiAimcDLQC5QAtykqrsjGUdZeQV3z/qEzDYteemugXRslwbAb2/oSwuBJxcWk5+byeCzsyMZRlSVl5cTCAQoKyuLdShxIy0tjZycHFJSUkJVCQBdgsZzgK9C1AmISDKQDuxSr5OzIwCqWigiG4GzATvJEEbWrk9Wh3ZdZ7HYg7hMVXcGjU8E3lXVR0Rkohv/ZSQDePLdIr4oPcRLY79NDgAiwn98rzeFX+zm3/7nc975+SW0SU2MnaxAIEC7du3Izc21w2eAqlJaWkogECAvLy9UteVAdxHJA7YCI4EfVKszDxgNLAFuABaqqopINl6iqBCRbkB3YFMkPktzZu26qjq26zqLh5PUwSf5ZgLfa8hCSg8c4b/eXs+ar/bWWO+bfWX8afFmrju/M/90VoeTpqcmJ/HI9X3Zuucw0xdvbkgocamsrIysrCz7ETkiQlZWVo1bnqp6DLgbeBvvktU5qrpGRB4WkWtdtWlAlogUA/fgbeAAXAKsEpHP8E5ej1fVXRH6OM2Wteuq6tKu6yPam8cKvCMiCjzrjr+eqqrbAFR1m4h09JuxtpN5ZceO89R7xeRktKLX6ekhA3h60UYqjis/v/LskHUuyM1kSM9Tmfr+Jm4bdAYZbVrW4yPGL/sRVVWXv4eqvgG8Ua3sgaDhMuBGn/nmAnMbH6WpjbXrqsL594j2HsRFqtofGA5MEJFL6jqjqk5V1QJVLcjOPvncQJb7T7zUXZHkZ/v+Ml5a9iXX9+9M16zWNa7vX4eew4Gjx5iWQHsRxhhTH1FNEKr6lXvfDvwV7zrzb0SkE4B7396QZaelJNG6ZdKJS1b9zF62haPHjjN+8Jm1Lu/sU9sxpOep/GXpFxw6eqwhIZkwKikpoXfv3vWa56233uKcc87hrLPO4pFHHql9BmOirCHtesyYMXTs2LHe8zVE1BKEiLQRkXaVw8AQYDXfnuTDvb/W0HVktmkZMkEcqzjOS0u/5DvdO9Atu22dlnfXd7qx51A5cwsDDQ3JxEhFRQUTJkzgzTffZO3atcyaNYu1a9fWPqMxce6HP/whb731VlTWFc09iFOBxe6k3TLg76r6FvAIcJWIFOF1adDgTb3MNi1DHmJasG47X+8rY9SgM+q8vPwzMjivS3umLd7M8eN2iXpjlJSU0KNHD+666y569erFkCFDOHz4MAArV65k0KBB9O3bl+uuu47du72rnAsLCznvvPO48MILmTJlyollVVRUcO+993LBBRfQt29fnn322ZPWt2zZMs466yy6detGy5YtGTlyJK+91uBtD2N8RbtdA1xyySVkZmZG/sMRxZPUqroJOM+nvBS4IhzryGzTktID/gniLx9/wenpaVx+ru85cF8iwpiLcvnp7JV8tLGUi7uffNVTUzTpb2tY+9W+2ivWQ8/TT+HB7/aqsU5RURGzZs3iueee46abbmLu3Lncdttt3H777UyePJnBgwfzwAMPMGnSJB5//HHuuOOOE+X33nvvieVMmzaN9PR0li9fzpEjR7jooosYMmRIlcv6tm7dSpcu397CkJOTw9KlS8P6mU18aQ7tOtri4TLXsAl1iGnjjgMsLt7JrYPOIDmpfh95aK/TaN86hVnLvgxXmM1WXl4e/fp5fdfl5+dTUlLC3r172bNnD4MHDwZg9OjRvP/++yeVjxo16sRy3nnnHZ5//nn69evHwIEDKS0tpaioqMq6vPvUqrKrXUwkRLNdR1ti3AXmnHpKGtv3l1FxXElq8e1/Bi8t/ZLkFsJNBV1qmNtfWkoS3z8/hxc+LmHngSN0aJsazpBjorYtokhJTf32b5eUlHRiV9yPqob8D11VmTx5MkOHDg05f05ODlu2fNuNUiAQ4PTTT29A1KapaA7tOtoSag+iS0ZryiuUr/d9e5NIWXkFcz8JMLT3aWS3a9h/7rcM6EJ5hdrJ6ghIT08nIyODDz7w+rF74YUXGDx4MO3btyc9PZ3FixcD8OKLL56YZ+jQoTz99NOUl5cDsGHDBg4ePFhluRdccAFFRUVs3ryZo0ePMnv2bK699lqMiYZItetoS6g9iK6Z3r0NX5YeonP7VgC8uXobew6Vc+uAhveU2f3UdhSckcHs5VsYd0k3O1QRZjNnzmT8+PEcOnSIbt26MWPGDABmzJjBmDFjaN26dZWtqrFjx1JSUkL//v1RVbKzs3n11VerLDM5OZmnnnqKoUOHUlFRwZgxY+jVKzZbmKZ5ikS7BrjllltYtGgRO3fuJCcnh0mTJnHnnXdG5kOoapN75efnq5+SnQf0jF++ri8v+/JE2Q1Pf6iX/vY9PX78uO88dfXKii16xi9f1yUbdzZqObGydu3aWIcQl/z+LsAKjaN2bUKzdu0vXO06oQ4xdW7filYpSaz72ruSYfXWvSwv2c0tA7o0eqv/6j6daJeazJzlW2qvbIwxCSChEkRyUgv65KTz6Zd7AK/fpXapyYxsxOGlSq1aJnFtv9P5++fb2Hu4vNHLM8aYeJdQCQJgUF4mqwJ7eH3VV/z9822M/qdcTklrfL/oADdf0IUjx44z77PqjwRoGtTn0s/mzP4eicG+x6rC+fdIuARxfX4OIsLdL31KTkYrfnxp7f0u1VWfzun06HQKLy9vevdEpKWlUVpaaj8mR12/+WlpabVXNnHL2nVV4W7XCXUVE8AZWW344639+d8NO/jRJd3C+sAfEeHmghwe+tta1ny1t8ZuxeNNTk4OgUCAHTt2xDqUuFH55C3TdFm7Plk423XCJQjw7n4e2uu0iCz7e+d35tdv/oM5y7cwaUTTSRApKSkxvWXfmEiwdh1ZCXeIKdLat27JsF6n8ddPt1JWXhHrcIwxJmIsQTTAyAu6sK/sGG+v+TrWoRhjTMRYgmiAQd2y6JLZitnL7J4IY0zisgTRAC1aCDcXdGHJplK+KI1tXynGGBMpliAa6Ib8LrQQmLPC9iISmYgME5H1IlIsIhN9pqeKyMtu+lIRyQ2adp8rXy8i8dNFpzF1ZAmigU5LT2Pw2dm8UhjgWMXxWIdjIkBEkoApwHCgJ3CLiPSsVu1OYLeqngX8AXjUzdsTGAn0AoYBf3TLM6bJSMjLXKPl5gu6Mv4vhbxftIPLzz011uGY8BsAFKv3NEREZDYwAgh+uPUI4CE3/ArwlHgdf40AZqvqEWCziBS75S2pbxCffrmb1Vv3NvhDmOblO92zye3QJizLilqCEJEuwPPAacBxYKqqPiEiDwF3AZV3uvybqr4Rrbga44oeHenQtiWzl22xBJGYOgPBxxADwMBQdVT1mIjsBbJc+cfV5u1cfQUiMg4YB9C1q3+fYe+u285T7xU37BOYZmfKD/o3vQQBHAP+RVU/EZF2QKGIzHfT/qCq/xXFWMIiJakF1/fPYdrizWzfX0bHdtZtQ4Lx6wK4ep8OoerUZV5UdSowFaCgoMC3v4gfX3omP7wot8ZAjanUNoy9R0QtQajqNmCbG94vIuvw2aJqam66oAvPvr+J2cu28H+v6B7rcEx4BYDg59TmANV7aqysExCRZCAd2FXHeeukTWpyWLuMMaauYnKS2l3pcT6w1BXdLSKrRGS6iGSEmGeciKwQkRXx1O/KmdltueycbJ5fUmJ3Viee5UB3EckTkZZ4J53nVaszDxjthm8AFrqHs8wDRrqrnPKA7sCyKMVtTFhEPUGISFtgLvAzVd0HPA2cCfTD28P4nd98qjpVVQtUtSA7Oztq8dbFXZd0Y+eBo7z66dZYh2LCSFWPAXcDbwPrgDmqukZEHhaRygdcTwOy3Enoe4CJbt41wBy8E9pvARNU1bYgTJMS1f1WEUnBSw4vqur/AKjqN0HTnwNej2ZM4XBhtyx6dz6F5z7YxE0FXWjRwp5ZnSjcBRNvVCt7IGi4DLgxxLy/An4V0QCNiaCo7UG4S/+mAetU9fdB5Z2Cql0HrI5WTOEiItz1nW5s3HGQhf/YHutwjDEmLKJ5iOkiYBRwuYisdK+rgcdE5HMRWQVcBvw8ijGFzdV9OpGT0YonFxbZw0uMMQkhmlcxLcb/0r8mcc9DbVKSWvDTK7pz7yurmL/2G4ZE6HkUxhgTLdbVRhhdd35nunVow+/nb+D4cduLMMY0bZYgwig5qQU/vbI7//h6P/M+a9Al78YYEzcsQYTZd/ueTu/Op/CbN9dx8MixWIdjjDENZgkizFq0ECZd25tv9h1h8kLrP8cY03RZgoiA/DMyuDE/h2mLN1G8fX+swzHGmAaxBBEhvxx+Lm1Tk/n5y59Rbs+LMMY0QZYgIqRD21R+fV0fPt+61w41GWOaJEsQETS8Tye+f35nprxXzEfFO2MdjjHG1IsliAh7+Hu96dahDT956RO27DoU63CMMabOLEFEWNvUZJ67vYDjx5U7Zy5n98GjsQ7JGGPqxBJEFOR2aMMzo/IpKT3E7dOXsfdweaxDMsaYWlmCiJJ/OrMDz96Wzz++3sdtf1rK9v1lsQ7JGGNqZAkiii47tyPPjsqnePsBrpvyEeu27Yt1SMYYE5IliCi7/NxTmfOjCymvOM6IKR/y5w83W/fgxpi4ZAkiBvrkpPPGT7/DxWd14KG/reWmZ5eweuveWIdljDFVWIKIkQ5tU5k2uoBHr+/Dph0H+e5Ti/k/sz61RGGMiRtRfSa1qUpEuPmCrgzr3YmnF23kLx9/wd8++4oLcjO47vwc/rlPJ9Jbp8Q6TGNMMxUXexAiMkxE1otIsYhMjHU80ZbeKoWJw8/lo/su577h57Lr4FH+7a+f0/8/53PD0x/xh/kb+GjjTrs8NopEJFNE5otIkXvPCFFvtKtTJCKjg8oXuTZd+XjdjtGL3pjwkFifIBWRJGADcBUQAJYDt6jq2lDzFBQU6IoVK6IUYfSpKqu37uPN1dtYXLyTz7fupfJr6prZmnNOa0fXzNZ0zWxNl8xWnHpKGpltWpLZpiWpyUmxDT4BiEghsBDYpaqPuI2WDFX9ZbV6mcAKoABQoBDIV9XdIrII+FdVrXNDTfR2bWJLRApVtaA+88TDIaYBQLGqbgIQkdnACCBkgkh0IkKfnHT65KTzC2D3waN8FtjDmq/2searvRR9c4APinZQVn5yL7FtU5PJaJNCm5bJtGqZROuWSbRKccMpSbRMbkFykpDcQkhOauG9t/DKklq48haCiCDiHiIugnhviHuseOW0E2UnxoPqVqsfTzq2S+PCM7NqqjICuNQNzwQWAb+sVmcoMF9VdwGIyHxgGDArnLEaEyvxkCA6A1uCxgPAwOqVRGQcMA6ga9eu0YksTmS0acml53Tk0nO+PUqhquw4cIQtuw6zY/8Rdh08yq6DR9h1sJzdh45y8MgxDpdXcOhoBbsOHubw0WMcOlpBecVxjh1XjlUoFceV8uPHaY5X2Q4+O7u2BHGqqm4DUNVtIQ4R+bXdzkHjM0SkApgL/Kf67K4353Zt4l88JAi/bcuTfkiqOhWYCt6ueKSDinciQsd2aXRsl9boZR13iaLiuFLuEoeqooAqKIr7B0Fl6spU9USSqT4NNz0cwvmlt0pJ4sorr+Trr7/2m9y+joupqe3eqqpbRaQdXoIYBTx/UmVr1yaOxUOCCABdgsZzgK9iFEuz1KKFkNqi+Z27WLBggW+5iOwBKkSkk9t76ARs96ka4NvDUOC13UUAqrrVve8XkZfwDqWelCCMiWfxcJI6Ge8k9RXAVryT1D9Q1TU1zLMD+CLE5A5APDx8IV7igPiJJV7igJpjOQP4M1AadJI6U1V/EVzJnaQuBPq7ok+AfGAf0F5Vd4pICt45iQWq+kxNATWRdg3xE0u8xAFNI5buwBJVHVbXBcV8D0JVj4nI3cDbQBIwvabk4ObJDjVNRFbU90x9JMRLHBA/scRLHFB7LCKSBcwRkTuBL4EbXXkBMF5Vx6rqLhH5D7yNGoCHXVkb4G2XHJKABcBztcXUFNo1xE8s8RIHJG4sMU8QAKr6BvBGrOMwppKqluLt1VYvXwGMDRqfDkyvVucg3p6EMU1aXNwoZ4wxJv4kYoKYGusAnHiJA+InlniJA+IrlrqIp3jjJZZ4iQMSNJaYn6Q2xhgTnxJxD8IYY0wYWIIwxhjjK2ESRDR6hBWR6SKyXURWB5X59vopniddPKtEpH/QPL49gNYjji4i8p6IrBORNSLy0xjGkiYiy0TkMxfLJFeeJyJL3XJfFpGWrjzVjRe76blBy7rPla8XkaH1jcUtI0lEPhWR12MZRzhFum3HS7t2y4iLth1v7dotJ/pt2+smoWm/8K413wh0A1oCnwE9I7CeS/BuilodVPYYMNENTwQedcNXA2/idccwCFjqyjOBTe49ww1n1DOOTkB/N9wO70bDnjGKRYC2bjgFWOrWMQcY6cqfAX7shn8CPOOGRwIvu+Ge7ntLBfLc95nUgO/oHuAl4HU3HpM4mlLbjpd2HU9tO97adazadkwafbhfwIXA20Hj9wH3RWhdudV+SOuBTkGNe70bfhav2/Iq9YBbgGeDyqvUa2BMr+F1lx7TWIDWeHcTD8S7kzO5+veDd0PkhW442dWT6t9ZcL16rD8HeBe4HHjdLTfqcTTFth2P7Tpe2nas23Us23aiHGKqrVfNSKrS6ydQ2etnqJjCGqvbfTwfbwsnJrG4Xd+VeP0VzcfbMtmjqsd8lntinW76XiArTLE8DvwCqOwHPStGcYRTrOKJabuG2LftOGrXEKO2nSgJok49wkZZqJjCFquItMXrKfRnqrovVrGoaoWq9sPbyhkA9KhhuRGJRUSuAbaramFwcbTjiICmEk9Y44yHth0P7Rpi27bDch+EiAwDnsA7XvonVX2k2vRUvJ4s84FS4GZVLXFbCOvwdgsBPlbV8bWtr0OHDpqbm9vouI3xU1hYeEhV24DXrw2QDZQT4bZt7dpEUmFh4RHgS1U9G0BE3gYeUtUloeZpdF9M4j0ydApBjwwVkXla9ZGhdwK7VfUsERkJPArc7KZtdFm6znJzc7FHM5pIcVfGpOJtOZ6Ht+X4JRFu29auTSSJSDFeN/apwOl4vbsuq2mecBxiOvHIUFU9ClQ+MjTYCLzHNgK8AlwhEm8PoTTmhF14j7xdCKxS1WJr2yYBlOFd+bQWeAuYoKoVNc0QjgRRlxMfoU6aAOS5a3v/V0S+E2olIjJORFaIyIodO3aEIWxjQvpaVc8E/gX4NKg87G3b2rWJJlX9laqeqarnqOqbtdUPR4Koy4mPUHW2AV1V9XzcNb4icorfSlR1qqoWqGpBdnbIbvONCaeIt21r1yaeheN5EHV5ZGhlnYB4T5BLB3apd4b8CICqForIRuBswA7Ehll5eTmBQICysrJYhxI30tLSyMnJISUlJVQVa9txztr1yerQrussHAliOdBdRPLwHhk6EvhBtTrzgNHAEuAGYKGqqohk4/2YKkSkG95Jk01hiMlUEwgEaNeuHbm5udghcu8G0dLSUgKBAHl5eaGqWduOc9auq6pju66zRh9icsddKx8Zug6Yo6prRORhEbnWVZsGZLmz6Pfg3SoP3i3+q0TkM7wTfONVdVdjYzInKysrIysry35EjoiQlZVV45ante34Z+26qrq06/oIyyNH1eeRoar6QNBwGe6ZvtXqzMW7GcZEgf2IqqrL38Padvyzdl1VOP8eiXIntTHGmDCzBGGahJKSEnr37l3n+lu2bOGyyy6jR48e9OrViyeeeCKC0RnTMPVt12VlZQwYMIDzzjuPXr168eCDD0YwujAdYjIm3iQnJ/O73/2O/v37s3//fvLz87nqqqvo2bNnrEMzpsFSU1NZuHAhbdu2pby8nIsvvpjhw4czaNCgiKzP9iBMVJSUlNCjRw/uuusuevXqxZAhQzh8+DAAK1euZNCgQfTt25frrruO3bt3A1BYWMh5553HhRdeyJQpU04sq6KignvvvZcLLriAvn378uyzz560vk6dOtG/v/fsmHbt2tGjRw+2bt0ahU9qmpNot2sRoW3btoB3iW95eXlEz8HYHkQzNOlva1j7VU0dZNZfz9NP4cHv9qqxTlFREbNmzeK5557jpptuYu7cudx2223cfvvtTJ48mcGDB/PAAw8wadIkHn/8ce64444T5ffee++J5UybNo309HSWL1/OkSNHuOiiixgyZEjIy/pKSkr49NNPGThwYFg/s4kvzaVdV1RUkJ+fT3FxMRMmTIhou7Y9CBM1eXl59Ovn9V2Xn59PSUkJe/fuZc+ePQwePBiA0aNH8/77759UPmrUqBPLeeedd3j++efp168fAwcOpLS0lKKiIt91HjhwgOuvv57HH3+cU07xvUnfmEaJdrtOSkpi5cqVBAIBli1bxurVq0+qEy62B9EM1bZFFCmpqaknhpOSkk7sivtR1ZC7zqrK5MmTGTq05kfqlpeXc/3113Prrbfy/e9/v2FBmyajubTrSu3bt+fSSy/lrbfeqteJ7vqwPQgTU+np6WRkZPDBBx8A8MILLzB48GDat29Peno6ixcvBuDFF188Mc/QoUN5+umnKS8vB2DDhg0cPHiwynJVlTvvvJMePXpwzz33ROnTGOOJVLvesWMHe/bsAeDw4cMsWLCAc889N2Kfw/YgTMzNnDmT8ePHc+jQIbp168aMGTMAmDFjBmPGjKF169ZVtqrGjh1LSUkJ/fv3R1XJzs7m1VdfrbLMDz/8kBdeeIE+ffqc2P3/9a9/zdVXXx29D2aatUi0623btjF69GgqKio4fvw4N910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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "for i in range(len(P_syn)):\n", - " plt.subplot(3,2,i+1)\n", - " plt.plot(test_syn.I[i], label=\"node {}\".format(i))\n", - " plt.legend()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 7 Comparison with one node dynamics\n", - "\n", - "We run the simulation only in one node with not connectivity to others node and compare with a simple SEIR model." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[500, 0.0, 50.0, 0.0]\n", - "550.0\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Total infected people: SEIR = 454.09544876013916, SEIR* = 454.0954481807374\n", - "Percentage infected people: SEIR = 90.81908975202784, SEIR* = 90.81908963614747\n", - "Maximum number of infected SEIR = 54.66755207893756, SEIR* = 54.667533460183684\n", - "Days in wich infected are maximum SEIR = 420, SEIR* = 420\n" - ] - } - ], - "source": [ - "plt.rcParams[\"figure.figsize\"] = 14, 4\n", - "#### multi node matrix ###\n", - "\n", - "#initial conditions\n", - "t = np.linspace(0, 400., 4000) # time grid, (from, to, number_of_step)\n", - "y0 = [S0[0], E0[0], I0[0], R0[0]] \n", - "\n", - "N = (S0+E0+I0+R0)[0]\n", - "\n", - "# reset beta due to test 4\n", - "beta = 0.2\n", - "\n", - "print(y0)\n", - "print(N)\n", - "# solve the ODEs\n", - "soln = odeint(model_SEIR, y0, t) # (model, initial_conditions, time_series)\n", - "\n", - "#reshape the output of the solver to plot the states\n", - "S_single = soln[:, 0]\n", - "E_single = soln[:, 1]\n", - "I_single = soln[:, 2]\n", - "R_single = soln[:, 3]\n", - "\n", - "# plot results\n", - "plt.subplot(1,2,1)\n", - "#plt.plot(t, S_single, label='Susceptible')\n", - "#plt.plot(t, E_single, label='Exposed')\n", - "plt.plot(t,E_single, label='Exposed')\n", - "plt.plot(t,I_single, label='Infected')\n", - "#plt.plot(t, R_single, label='Removed')\n", - "plt.xlabel('Days')\n", - "plt.ylabel('Population')\n", - "plt.title('SEIR model')\n", - "plt.legend(loc=0)\n", - "\n", - "#Multi nodes system\n", - "plt.subplot(1,2,2)\n", - "#plt.plot(t, test_syn.S[0], label='Susceptible')\n", - "plt.plot(t,test_syn.E[0][:-1], label='Exposed')\n", - "plt.plot(t,test_syn.I[0][:-1], label='Infected')\n", - "#plt.plot(test_syn.R[0], label='Removed')\n", - "plt.xlabel('Days')\n", - "plt.ylabel('Population')\n", - "plt.title(\"SEIR* model, one node\")\n", - "plt.legend(loc=0)\n", - "plt.show()\n", - "\n", - "print(\"Total infected people: SEIR = {}, SEIR* = {}\".format( R_single[-1], test_syn.R[0][-1]))\n", - "print(\"Percentage infected people: SEIR = {}, SEIR* = {}\".format(R_single[-1] *100/S0[0], test_syn.R[0][-1] *100/S0[0]))\n", - "print(\"Maximum number of infected SEIR = {}, SEIR* = {}\".format( I_single.max(),test_syn.I[0].max()))\n", - "print(\"Days in wich infected are maximum SEIR = {}, SEIR* = {}\".format(I_single.argmax(),test_syn.I[0].argmax()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 8 Comparison of 2 nodes dynamics with high mobility with a SEIR system\n", - "\n", - "We start in each node with 500 susceptible and 50 infected person for the SEIR* system. For the SEIR system we start with a total of 500 susceptible and 50 infected. The total population of the SEIR* system is the double of the SEIR system.\n", - "\n", - "Importante: LA SUMA DE CADA COLUMNA O FILA DEBE SUMAR 1, PORQUE ESA ES LA PROPORCION DE PERSONAS QUE INTERACTUAN. EJ: 0.5 SE QUEDA EN EL NODO, Y OTRO 0.5 SALE DEL NODO. Al NODO PUEDE ENTRAR MAS DE 1.0 DE PERSONAS. DOCUMENTAR BIEN ESTO." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Scikit couldn't be imported. Using RK4 instead\n", - "[500, 0.0, 50.0, 0.0]\n", - "550.0\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "#### two connected nodes matrix ###\n", - "\n", - "#P_syn = np.diag(np.repeat(0.5,2))\n", - "P_syn = np.diag(np.repeat(0.0,2))\n", - "P_syn[0][1] = 1#0.5\n", - "P_syn[1][0] = 1#0.5\n", - "\n", - "def alpha_syn(t):\n", - " return(np.ones([2,2])) #mobility in node\n", - "\n", - "#initial conditions\n", - "t = np.linspace(0, 400, 4000) # time grid, (from, to, number_of_step)\n", - "\n", - "dim_system = len(P_syn)\n", - "#define initial states vector\n", - "S0 = np.full(dim_system,500) #500 persons per square\n", - "E0 = np.zeros(dim_system)\n", - "I0 = np.zeros(dim_system)\n", - "R0 = np.zeros(dim_system)\n", - "\n", - "I0[0] = 50 #50 initial infected persons in node 0\n", - "I0[1] = 50 #50 initial infected persons in node 1\n", - "\n", - "N = S0+E0+I0+R0\n", - "\n", - "test_syn = SEIR(P_syn,alpha_syn,S0, E0, I0, R0, \n", - " beta, sigma, gamma, mu, epsilon, ks, ki)\n", - "\n", - "test_syn.integr(min(tr),max(tr),0.1, False)\n", - "\n", - "#### One node system ####\n", - "\n", - "#initial conditions\n", - "t = np.linspace(0, 400., 4000) # time grid, (from, to, number_of_step)\n", - "y0 = [S0[0], E0[0], I0[0], R0[0]] \n", - "\n", - "N = (S0+E0+I0+R0)[0]\n", - "\n", - "print(y0)\n", - "print(N)\n", - "# solve the ODEs\n", - "soln = odeint(model_SEIR, y0, t) # (model, initial_conditions, time_series)\n", - "\n", - "#reshape the output of the solver to plot the states\n", - "S_single = soln[:, 0]\n", - "E_single = soln[:, 1]\n", - "I_single = soln[:, 2]\n", - "R_single = soln[:, 3]\n", - "\n", - "# Plot\n", - "plot_all_states(test_syn.S, test_syn.E, test_syn.I, test_syn.R, len(P_syn))\n", - "plt.plot(t,I_single, label='Infected single')\n", - "plt.plot(t,test_syn.I[0][:-1], label='Infected node 0')\n", - "\n", - "plt.plot(t,E_single, label='Exposed single')\n", - "plt.plot(t,test_syn.E[0][:-1], label='Exposed node 0')\n", - "\n", - "plt.title(\"A single node behaves as a simple SEIR system\")\n", - "plt.legend()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 9 Comparison of 2 nodes with a double size SEIR system\n", - "\n", - "We double the size of the SEIR system of point 8, and the system had the same behavior. The total of population is the same for SEIR and SEIR* system. The initial infected per node is the same, the mobility matrix values are 0.5." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Initial condition two node\n", - "[500 500] [0. 0.] [20. 80.] [0. 0.]\n", - "[520. 580.]\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "Initial condition one node\n", - "[1000, 0.0, 100.0, 0.0]\n", - "1100.0\n" - ] - }, - { - "data": { - "image/png": "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fdxW+RK+eJOG9G+ZtOR9q7ddmbKBSu3OsClXWrXdkoh5jEp/nuOZafQfPNqqbQsn1YV3x6xt0qRJLf/pjouLIysri2nTpp11zMaNG9m4cSPjxjXeFS0vL+fw4cMkJSVx3XXXERISAkBQUNB57ZeXl/PDDz9w/fX/nb9XU1MDwPbt21vuHN1yyy08/PDD550fExPD0qVLefjhh5k/fz7Tp09v92e6/PLLcXV1JSYmhoaGhpYX65iYGLKysto8b9myZbi4uHDzza1PdG/td+Xr60tUVBTDhg0D4LbbbuOVV15h1qxZREVFtdzZWbhwIa+/3rhE/8aNG9mwYQPLly8HoLq6muzsbC666CKWLVtGbm4uCxYskLtCPVxVRTkjqhLZG7qAgdZqM2oe4fuXkX04iUHD4qzUqhBtMKiPah4md65LL72UDz/8kAceeOCsOTMmk6nl7sTChQtZsGABJSUlFBcXM3Nm4z6Tt912W0s/FBsby80338zVV1/N1Vc33rVt63V569atLYVD85ydc/n5+eHh4cGiRYu48sorOzQ/dOLEifTv3x+A6OjolhEKMTExbN68uc3zNm/ezKpVq/j++9ZXlnRzc2u5/oQJE/j6668B+PHHH/nXvxrnvt9yyy384Q9/ANruh9vq96dPn97pPrk99p4zFNpc4DR97Nv0/AAg54zjcpueO49S6h6l1G6l1O78/PwuB6k9lsK4wi+tvmeCtliIPL2Vgz7xeHhZdxLYoItvBCD7h3VWbVcII7m7u7d8bjabqW9lcrbWmkcffbRl/HZ6ejp33XUXWmtUO3t4WSwWAgICzhr/vX///pbvt3f+sGHDSEhIICYmhkcffZQ//elPALi4uGBpev2orq5u9WcymUy4urq2XMNkMrX68wG88847fP7556xevbrNTK39rvQF3qFvqx2tNR9//HHL7yM7O5uRI0dy0003sWHDBjw9PZk3bx7ffvttm20Lx5e+ZxPuqg6vkZdarc2IixYAcPynj63WphA9hcViYf/+/Xh6elJYWNjmce31K1988QUPPPAACQkJTJgwoeW1vLXX5Y605+Liws6dO7n22mtZv359yxtwZ/ZTWmtqa2tbzjmzPzGZTGf1W231U8nJySxatIhPP/2U4ODgVo85s89rq08/92dq7edrq99vq0/uDkdZQKG1P+VWe3it9eta63itdXyf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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "#### two connected nodes matrix ###\n", - "\n", - "P_syn = np.diag(np.repeat(0.5,2))\n", - "#P_syn = np.diag(np.repeat(0.0,2))\n", - "P_syn[0][1] = 0.5#0.5\n", - "P_syn[1][0] = 0.5#0.5\n", - "\n", - "def alpha_syn(t):\n", - " return(np.ones([2,2])) #mobility in node\n", - "\n", - "#initial conditions\n", - "t = np.linspace(0, 400, 4000) # time grid, (from, to, number_of_step)\n", - "\n", - "dim_system = len(P_syn)\n", - "#define initial states vector\n", - "S0 = np.full(dim_system,500) #500 persons per square\n", - "E0 = np.zeros(dim_system)\n", - "I0 = np.zeros(dim_system)\n", - "R0 = np.zeros(dim_system)\n", - "\n", - "I0[0] = 20 #50 initial infected persons in node 0\n", - "I0[1] = 80 #50 initial infected persons in node 1\n", - "\n", - "N = S0+E0+I0+R0\n", - "\n", - "print(\"Initial condition two node\")\n", - "print(S0,E0,I0,R0)\n", - "print(N)\n", - "\n", - "test_syn = SEIR(P_syn,alpha_syn,S0, E0, I0, R0, \n", - " beta, sigma, gamma, mu, epsilon, ks, ki)\n", - "\n", - "test_syn.integr(min(tr),max(tr),0.1, False)\n", - "\n", - "# sum all states to compare with one node\n", - "S0_sum = 0\n", - "E0_sum = 0\n", - "I0_sum = 0\n", - "R0_sum = 0\n", - "\n", - "for i in range(dim_system):\n", - " S0_sum += test_syn.S[i]\n", - " E0_sum += test_syn.E[i]\n", - " I0_sum += test_syn.I[i]\n", - " R0_sum += test_syn.R[i]\n", - "\n", - "#### One node system ####\n", - "#initial conditions\n", - "t = np.linspace(0, 400., 4000) # time grid, (from, to, number_of_step)\n", - "y0 = [S0.sum(), E0.sum(), I0.sum(), R0.sum()]\n", - "N = (S0.sum()+E0.sum()+I0.sum()+R0.sum())\n", - "\n", - "print(\"Initial condition one node\")\n", - "print(y0)\n", - "print(N)\n", - "# solve the ODEs\n", - "soln = odeint(model_SEIR, y0, t) # (model, initial_conditions, time_series)\n", - "\n", - "#reshape the output of the solver to plot the states\n", - "S_single = soln[:, 0]\n", - "E_single = soln[:, 1]\n", - "I_single = soln[:, 2]\n", - "R_single = soln[:, 3]\n", - "\n", - "#plt.title(\"The sum of 2 nodes behaves as a double size SEIR system\")\n", - "#plt.title(\"Nodos 0 and 1 have the same behavior\")\n", - "\n", - "plot_comparison(dim_system, test_syn, I_single, E_single, I0_sum, E0_sum)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 10 Comparison of 2 nodes with a double size SEIR system, different initial infected per node\n", - "\n", - "The total population is the same for SEIR and SEIR* system, but the initial infected number of person per node is different. The result is the same if the mobility matrix is 0.5 in all their values. The number of infected per node must sum 100, in any combination, the main topic here is the 0.5 value of mobility matrix.\n", - "\n", - "Also, if the number of initial infected is the same, the mobility rate could have any value, while the sum of the row is 1." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Initial condition two node\n", - "S0 10000.0\n", - "I0 100.0\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "Initial condition one node\n", - "[10000.0, 0.0, 100.0, 0.0]\n", - "10100.0\n" - ] - }, - { - "data": { - "image/png": "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R3nwwQfRWlc6jGZxcTG+vr6l+8bExHDgwIHS9ZXt36NHD6KioggJCeGZZ57hz3/+8xXbODs7lx6novdQEa01b731Vmls8fHxTJok/e7qg8yH17jsXreCgTk/E9PtUboNHFPhdsrBgd4z3+Os8sf9P4+Rn5ddj1GKpqy4uJgDBw7g5ubGhQsVd2uvLK98++23zJkzh6ioKMLDwyksLERrzZdfflmaCxITE+ndu3eVjufk5MTOnTu56aabWL16dYXNvkvyrW2eqkqPFK019957b2lshw4dYsGCBZXu11hIYUhclS4uJv+bJ8lSHnS7/x9V2qdPxAS2t72TQalrObTjOztHKJqDyZMns2zZstL+NidPnuTcuXNMmDCBVatWkZqaClCanLy8vMjMzASMO2aBgYF8/vnngHFRL7mjN2LECFauXAlQYZX/qVOncHd3Z8aMGcybN4/du3dXOe6hQ4eW1jyVnKe897ZkyRIKCgoAOHz4MNnZ8uOtHsl8eI1AXm42HX55nnjHAAbeVn4TIFvePi05O+ZlOhWfIuaLV+ohQtEcvP766/Tu3ZtPP/2UBx54oPS6XVxcXFq7/69//YuRI0fi4+ODn58fW7ZsAeCTTz5hzJgxFBcXk5SUxLhx43jllVdIS0sjKyuLyZMn89Zbb5UWTqKjowEYPXp0aX7au3cvcXFxV8SVlZVFeno61157LW+88Ua1Bn8YOXIkq1atAmD//v3s2bPnim0mTJjAF198wblz5wAj1544caLK52jopDAkripq3Qr6FezhWN+5eLdsW+X9wu55mbO0wvGHP6GLi+wYoWgOJk2axJ133smwYcMICQnh5ptvJjMzk759+/Lss88yZswY+vfvzx/+8AcAbr/9dl599VUGDBjAsWPHWLFiBUuXLqV///707duXNWuMcVvefPNN3n77bQYPHkx6enq5596zZw8RERGEhYWxcOHCCttil+eNN97gtddeIyIigtOnT+Pj43PFNjNnzqRPnz4MHDiQfv368fDDD1erZknUnMyH13js/voN2nOe3PH/h5NLi8p3AMLG3US06xB6H32PjNSzdo5QNCVl+ww9/fTTHD58mA8++IC//e1vjBo1itGjR/Piiy8C4OHhwb59+wgPD2f9+vU899xzAHz00Uc8+eSThIaGEhMTw3PPPUdRUREzZswgJCSEAQMG8Pvf/x5f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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "%matplotlib inline\n", - "plt.rcParams[\"figure.figsize\"] = 14, 5\n", - "\n", - "#### two connected nodes matrix ###\n", - "P_syn = np.random.rand(2,2)\n", - "\n", - "def alpha_syn(t): return(np.ones([2,2])) #mobility in node\n", - "\n", - "full_entropy = True\n", - "if full_entropy:\n", - " P_syn[0][1] = 0.5\n", - " P_syn[1][0] = 0.5\n", - " P_syn[1][1] = 0.5\n", - " P_syn[0][0] = 0.5\n", - "else:\n", - " \n", - " # case 2,3\n", - " P_syn[0][1] = 0.0\n", - " P_syn[1][0] = 0.5 #0.25\n", - " P_syn[1][1] = 0.5 #0.75\n", - " P_syn[0][0] = 1.0\n", - " \n", - "# initial conditions\n", - "t = np.linspace(0, 400, 4000) # time grid, (from, to, number_of_step)\n", - "\n", - "dim_system = len(P_syn)\n", - "#define initial states vector\n", - "#S0 = np.full(dim_system,500) #500 persons per square\n", - "S0 = np.zeros(dim_system)\n", - "S0[0] = np.array([5000])\n", - "S0[1] = np.array([5000])\n", - "E0 = np.zeros(dim_system)\n", - "I0 = np.zeros(dim_system)\n", - "R0 = np.zeros(dim_system)\n", - "\n", - "I0[0] = 0 #initial infected persons in node 0\n", - "I0[1] = 100 #initial infected persons in node 1\n", - "\n", - "N = S0+E0+I0+R0\n", - "\n", - "print(\"Initial condition two node\")\n", - "print(\"S0 \", S0.sum())\n", - "print(\"I0 \", I0.sum())\n", - "#print(S0,E0,I0,R0)\n", - "#print(N)\n", - "\n", - "test_syn = SEIR(P_syn,alpha_syn,S0, E0, I0, R0, \n", - " beta, sigma, gamma, mu, epsilon, ks, ki)\n", - "\n", - "test_syn.integr(min(tr),max(tr),0.1, False)\n", - "\n", - "# sum all states to compare with one node\n", - "S0_sum = 0\n", - "E0_sum = 0\n", - "I0_sum = 0\n", - "R0_sum = 0\n", - "\n", - "for i in range(dim_system):\n", - " S0_sum += test_syn.S[i]\n", - " E0_sum += test_syn.E[i]\n", - " I0_sum += test_syn.I[i]\n", - " R0_sum += test_syn.R[i]\n", - "\n", - "#### One node system ####\n", - "#initial conditions\n", - "t = np.linspace(0, 400., 4000) # time grid, (from, to, number_of_step)\n", - "y0 = [S0.sum(), E0.sum(), I0.sum(), R0.sum()]\n", - "N = (S0.sum()+E0.sum()+I0.sum()+R0.sum())\n", - "\n", - "print(\"Initial condition one node\")\n", - "print(y0)\n", - "print(N)\n", - "# solve the ODEs\n", - "soln = odeint(model_SEIR, y0, t) # (model, initial_conditions, time_series)\n", - "\n", - "#reshape the output of the solver to plot the states\n", - "S_single = soln[:, 0]\n", - "E_single = soln[:, 1]\n", - "I_single = soln[:, 2]\n", - "R_single = soln[:, 3]\n", - "\n", - "#plt.title(\"The sum of 2 nodes behaves as a double size SEIR system, with different initial infected per node\")\n", - "plot_comparison(dim_system, test_syn, I_single, E_single, I0_sum, E0_sum)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 11 Check infected traveling\n", - "\n", - "We will check if infected people are traveling. All people from node 1 move to node 0, and people from 0 stay at their node. If infected travel, there will be infection in node 0. If infected don't travel, so the infected curve should decay with not increase at all." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Initial condition two node\n", - "S0 10000.0\n", - "I0 100.0\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "Initial condition one node\n", - "[10000.0, 0.0, 100.0, 0.0]\n", - "10100.0\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.rcParams[\"figure.figsize\"] = 14, 5\n", - "\n", - "dim_system = 2\n", - "\n", - "#### two connected nodes matrix ###\n", - "P_syn = np.random.rand(dim_system, dim_system)\n", - "\n", - "def alpha_syn(t):return(np.ones([dim_system,dim_system])) #mobility in node\n", - "\n", - "full_entropy = False\n", - "if full_entropy:\n", - " P_syn[0][1] = 0.5\n", - " P_syn[1][0] = 0.5\n", - " P_syn[1][1] = 0.5\n", - " P_syn[0][0] = 0.5\n", - "else:\n", - " P_syn[0][1] = 0.0\n", - " P_syn[1][0] = 1.0 \n", - " P_syn[1][1] = 0.0\n", - " P_syn[0][0] = 1.0\n", - "\n", - " \n", - "# initial conditions\n", - "t = np.linspace(0, 400, 4000) # time grid, (from, to, number_of_step)\n", - "\n", - "S0 = np.zeros(dim_system)\n", - "S0[0] = np.array([5000])\n", - "S0[1] = np.array([5000])\n", - "E0 = np.zeros(dim_system)\n", - "I0 = np.zeros(dim_system)\n", - "R0 = np.zeros(dim_system)\n", - "\n", - "I0[0] = 0 #initial infected persons in node 0\n", - "I0[1] = 100 #initial infected persons in node 1\n", - "\n", - "N = S0+E0+I0+R0\n", - "\n", - "print(\"Initial condition two node\")\n", - "print(\"S0 \", S0.sum())\n", - "print(\"I0 \", I0.sum())\n", - "#print(S0,E0,I0,R0)\n", - "#print(N)\n", - "\n", - "test_syn = SEIR(P_syn,alpha_syn,S0, E0, I0, R0, \n", - " beta, sigma, gamma, mu, epsilon, ks, ki)\n", - "\n", - "test_syn.integr(min(tr),max(tr),0.1, False)\n", - "\n", - "# sum all states to compare with one node\n", - "S0_sum = 0\n", - "E0_sum = 0\n", - "I0_sum = 0\n", - "R0_sum = 0\n", - "\n", - "for i in range(dim_system):\n", - " S0_sum += test_syn.S[i]\n", - " E0_sum += test_syn.E[i]\n", - " I0_sum += test_syn.I[i]\n", - " R0_sum += test_syn.R[i]\n", - "\n", - "#### One node system ####\n", - "#initial conditions\n", - "t = np.linspace(0, 400., 4000) # time grid, (from, to, number_of_step)\n", - "y0 = [S0.sum(), E0.sum(), I0.sum(), R0.sum()]\n", - "N = (S0.sum()+E0.sum()+I0.sum()+R0.sum())\n", - "\n", - "print(\"Initial condition one node\")\n", - "print(y0)\n", - "print(N)\n", - "# solve the ODEs\n", - "soln = odeint(model_SEIR, y0, t) # (model, initial_conditions, time_series)\n", - "\n", - "#reshape the output of the solver to plot the states\n", - "S_single = soln[:, 0]\n", - "E_single = soln[:, 1]\n", - "I_single = soln[:, 2]\n", - "R_single = soln[:, 3]\n", - "\n", - "plt.subplot(1,2,1)\n", - "extent = (0, P_syn.shape[1], P_syn.shape[0], 0)\n", - "plt.imshow(P_syn)\n", - "plt.xticks([0,1])\n", - "plt.yticks([0,1])\n", - "plt.ylim(1.5, -0.5)\n", - "plt.colorbar()\n", - "plt.xlabel('node', size=20)\n", - "plt.ylabel('node', size=20)\n", - "\n", - "plt.subplot(1,2,2)\n", - "plt.plot(t[:4000], test_syn.I[0][:4000], label='Infected node {}'.format(0))\n", - "plt.plot(t[:4000], test_syn.I[1][:4000], label='Infected node {}'.format(1))\n", - "plt.xlabel('Days', size=20)\n", - "plt.ylabel('Infected', size=20)\n", - "plt.title(\"Infected comparison\", size=20)\n", - "plt.legend()\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 12 Dividing day in 24 hours\n", - "\n", - "We check if simulate 24 hours is the same that simulate daily. To accomplish this QA we have divided the rates of the disease by 24." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Initial condition 5 nodes\n", - "S0 99999.99999999999\n", - "I0 10.0\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "Scikit couldn't be imported. Using RK4 instead\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# simulation in DAYS\n", - "\n", - "dim_system = 5\n", - "\n", - "# 5 random connected nodes\n", - "P_syn = np.random.rand(dim_system, dim_system)\n", - "\n", - "def alpha_syn(t):return(np.ones([dim_system,dim_system])) #mobility in node\n", - "\n", - "# variables\n", - "beta = 0.3\n", - "sigma = 0.1\n", - "gamma = 0.1\n", - "mu = 1\n", - "epsilon = 1.0\n", - "ks = 1.0\n", - "ki = 1\n", - "\n", - "total_susceptible = 100000\n", - "total_infected = 10\n", - "\n", - "# random Susceptible vector\n", - "S0 = np.random.rand(dim_system) # uniform random\n", - "#S0 = np.random.normal(30000, size = dim_system) # gaussian random\n", - "S0 = total_susceptible * S0/S0.sum()\n", - "\n", - "#S0 = np.random.rand(10, 10)\n", - "#S0 = block_diag(S0, S0)\n", - "\n", - "# zero values\n", - "E0 = np.zeros(dim_system)\n", - "R0 = np.zeros(dim_system)\n", - "\n", - "# random infected vector\n", - "I0 = np.random.rand(dim_system)\n", - "I0 = total_infected * I0/I0.sum()\n", - "#I0 = np.zeros(dim_system)\n", - "#I0[0] = 10\n", - "\n", - "print(\"Initial condition {} nodes\".format(dim_system))\n", - "print(\"S0 \",S0.sum())\n", - "print(\"I0 \",I0.sum())\n", - "\n", - "#N = S0+E0+I0+R0 #not necessary, is inside SEIR class\n", - "\n", - "test_syn = SEIR(P_syn,alpha_syn,S0, E0, I0, R0, \n", - " beta, sigma, gamma, mu, epsilon, ks, ki)\n", - "\n", - "#Init variables\n", - "#time=np.arange(401) #Days\n", - "time=np.linspace(0, 400., 4000)\n", - "h=0.1\n", - "\n", - "test_syn.integr(min(time),max(time),0.1, False)\n", - "\n", - "# sum all states to compare with one node\n", - "S0_sum = 0\n", - "E0_sum = 0\n", - "I0_sum = 0\n", - "R0_sum = 0\n", - "\n", - "for i in range(dim_system):\n", - " S0_sum += test_syn.S[i]\n", - " E0_sum += test_syn.E[i]\n", - " I0_sum += test_syn.I[i]\n", - " R0_sum += test_syn.R[i]\n", - "\n", - "#### simulation in HOURS ###\n", - "# variables\n", - "beta = 0.3/24\n", - "sigma = 0.1/24\n", - "gamma = 0.1/24\n", - "mu = 1\n", - "epsilon = 1.0\n", - "ks = 1.0\n", - "ki = 1\n", - "\n", - "#N = S0+E0+I0+R0 #not necessary, is inside SEIR class\n", - "\n", - "test_syn = SEIR(P_syn,alpha_syn,S0, E0, I0, R0, \n", - " beta, sigma, gamma, mu, epsilon, ks, ki)\n", - "\n", - "#Init variables\n", - "#time24=np.arange(9624) # hours 401*24\n", - "time24=np.linspace(0, 9624., 96241) # (9624/0.1)+1=96241\n", - "h=0.1\n", - "\n", - "test_syn.integr(min(time24),max(time24),0.1, False)\n", - "\n", - "# sum all states to compare with one node\n", - "S0_sum = 0\n", - "E0_sum = 0\n", - "I024_sum = 0\n", - "R0_sum = 0\n", - "\n", - "for i in range(dim_system):\n", - " S0_sum += test_syn.S[i]\n", - " E0_sum += test_syn.E[i]\n", - " I024_sum += test_syn.I[i]\n", - " R0_sum += test_syn.R[i]\n", - "\n", - "plt.plot(time24/24, I024_sum, label=\"24 hours\")\n", - "plt.plot(time, I0_sum[:-1], label=\"days\")\n", - "plt.title(\"Comparison between a 24 hours simulation and daily simulation\")\n", - "plt.legend()\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 -} diff --git a/deprecated/src/SEIRStar/SEIR_star_connectivity_and_entropy_analysis.ipynb b/deprecated/src/SEIRStar/SEIR_star_connectivity_and_entropy_analysis.ipynb deleted file mode 100644 index f6c27b5..0000000 --- a/deprecated/src/SEIRStar/SEIR_star_connectivity_and_entropy_analysis.ipynb +++ /dev/null @@ -1,2264 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from class_SEIR import SEIR\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "#import importlib\n", - "from scipy.integrate import odeint\n", - "from scipy import stats\n", - "from matplotlib.widgets import Slider, Button" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "def plot_all_states(S, E, I, R, dim):\n", - " \"\"\"\n", - " dim: dimension of the mobility matrix\n", - " \n", - " \"\"\"\n", - " plt.subplot(2,2,1)\n", - " #Plot all Susceptible\n", - " for i in range(dim):\n", - " plt.plot(S[i])\n", - "\n", - " plt.title(\"Susceptible\")\n", - " plt.ylabel(\"Person\")\n", - "\n", - " plt.subplot(2,2,2)\n", - " #Plot all Exposed\n", - " for i in range(dim):\n", - " plt.plot(E[i])\n", - "\n", - " plt.title(\"Exposed\") \n", - "\n", - " plt.subplot(2,2,3)\n", - " #Plot all Infected\n", - " for i in range(dim):\n", - " plt.plot(I[i])\n", - "\n", - " plt.title(\"Infected\")\n", - " plt.ylabel(\"Person\")\n", - " plt.xlabel(\"Time\") \n", - "\n", - " plt.subplot(2,2,4)\n", - " #Plot all Removed\n", - " for i in range(dim):\n", - " plt.plot(R[i])\n", - "\n", - " plt.title(\"Removed\")\n", - " plt.xlabel(\"Time\")\n", - "\n", - " plt.show()\n", - " \n", - "#SEIR model function\n", - "def model_SEIR(y, t):\n", - " S0 = y[0]\n", - " E0 = y[1]\n", - " I0 = y[2]\n", - " R0 = y[3]\n", - " N = S0+E0+I0+R0\n", - " dSdt = -beta * I0 * S0 /N\n", - " dEdt = beta * I0 * S0 /N - sigma * E0 \n", - " dIdt = sigma * E0 - (gamma * I0)\n", - " dRdt = gamma * I0 \n", - " return [dSdt, dEdt, dIdt, dRdt]\n", - "\n", - "def mobility_matrix(dim_system, random_modulate=False, num_connected_nodes=None, diffusion=False, diff_value=None,\n", - " diagonal=False, symmetric=False, centralized=False, central_node=None, node_increment=None):\n", - " \"\"\" \n", - " dim_system: Integer \n", - " Dimension of the mobility matrix\n", - " random_modulate: Bool\n", - " matrix to set the number of connected nodes\n", - " num_connected_nodes: Integer\n", - " Number of connected nodes in modulated matrix\n", - " diffusion: Float\n", - " Diffusion of the connected nodes. 0 sum over rows\n", - "\n", - " def alpha_syn(t):\n", - " return(np.ones([dim_system, dim_system])) #mobility in node\n", - " \n", - " return(P_syn)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## SEIR* model\n", - "\n", - "We have that\n", - "\n", - "$$\\beta \\hat{S}_i\\sum_{j=1}^n\\frac{{\\hat P}_{ij}}{\\hat{N}_j}\\hat{I}_j=\n", - "\\beta k_SS_i\\sum_{j=1}^n\\frac{P_{ij}\\alpha_{ij}(t)}{(\\sum_{k=1}^nP_{kj}\\alpha_{kj}(t)N_k)}\\sum_{l=1}^nP_{lj}\\alpha_{lj}(t)I_l(\\epsilon\\kappa_S+(1-\\epsilon)\\kappa_I).$$\n", - "\n", - "so the SEIR* system became \n", - "\n", - "\\begin{equation}\n", - " \\begin{split}\n", - "\\frac{dS_i}{dt} &= -\\beta \\hat{S}_i \\sum_{j=1}^n\\frac{\\hat{P}_{ij}}{{\\hat{N}_j}}\\hat{I}_j\\\\\n", - "\\frac{dE_i}{dt} &= \\beta \\hat{S}_i \\sum_{j=1}^n\\frac{\\hat{ P}_{ij}}{{\\hat{N}_j}}\\hat{I}_j - \\sigma E_i \\\\\n", - "\\frac{dI_i}{dt} &= \\sigma E_i - \\gamma I_i\\\\\n", - "\\frac{dR_i}{dt} &= \\gamma I_i\\\\\n", - "\\label{SEIR*}\n", - "\\end{split}\n", - "\\end{equation}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Conectivity and entropy analysis" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Increase connected nodes with random distribution between nodes" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will study how and when a metapopulation system SEIR* turns equivalent to an uninode SEIR system." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'mobility_matrix' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mdim_system\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m5\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mP_syn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmobility_matrix\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdim_system\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrandom_modulate\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnum_connected_nodes\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mimshow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mP_syn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolorbar\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mNameError\u001b[0m: name 'mobility_matrix' is not defined" - ] - } - ], - "source": [ - "plt.rcParams[\"figure.figsize\"] = 8, 4\n", - "\n", - "dim_system = 5\n", - "\n", - "P_syn = mobility_matrix(dim_system, random_modulate=True, num_connected_nodes=2)\n", - "plt.imshow(P_syn)\n", - "plt.colorbar()\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 100, - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "## Number of connected nodes ## 1\n", - "Warning: Not connected nodes\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "## Number of connected nodes ## 2\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "## Number of connected nodes ## 3\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "## Number of connected nodes ## 4\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "## Number of connected nodes ## 5\n", - "Scikit couldn't be imported. Using RK4 instead\n" - ] - } - ], - "source": [ - "def alpha_syn(t):return(np.ones([dim_system, dim_system])) #mobility in node\n", - "\n", - "# variables\n", - "beta = 0.3\n", - "sigma = 0.1\n", - "gamma = 0.1\n", - "mu = 1\n", - "epsilon = 1.0\n", - "ks = 1.0\n", - "ki = 1\n", - "\n", - "total_susceptible = 100000\n", - "total_infected = 10\n", - "\n", - "#Init variables\n", - "tr=np.arange(401) #Days\n", - "h=0.1\n", - "\n", - "### Multi node system variables ###\n", - "\n", - "# random Susceptible vector\n", - "S0 = np.random.rand(dim_system) # uniform random\n", - "#total_susceptible = S\n", - "S0 = total_susceptible * S0/S0.sum()\n", - "\n", - "# zero values\n", - "E0 = np.zeros(dim_system)\n", - "R0 = np.zeros(dim_system)\n", - "\n", - "# random infected vector\n", - "I0 = np.random.rand(dim_system)\n", - "I0 = total_infected * I0/I0.sum()\n", - "#I0 = np.zeros(dim_system)\n", - "#I0[0] = 10\n", - "\n", - "### One node system variables ###\n", - "\n", - "#initial conditions\n", - "t = np.linspace(0, 400., 4000) # time grid, (from, to, number_of_step)\n", - "y0 = [S0.sum(), E0.sum(), I0.sum(), R0.sum()]\n", - "\n", - "\n", - "norm_L2_array = np.empty(dim_system)\n", - "pearson_array = np.empty(dim_system)\n", - "norm_L2_ratio_array = np.empty(dim_system)\n", - "\n", - "I0_sum_array = np.empty((dim_system, 4001))\n", - "### iteration ###\n", - "for num_nodes in range(1, dim_system+1):\n", - " print(\"## Number of connected nodes ##\", num_nodes)\n", - " #### Multi node system ####\n", - " # Create mobility matrix\n", - " P_syn = mobility_matrix(dim_system, random_modulate=True, num_connected_nodes=num_nodes)\n", - " \n", - " test_syn = SEIR(P_syn,alpha_syn,S0, E0, I0, R0, \n", - " beta, sigma, gamma, mu, epsilon, ks, ki)\n", - "\n", - " test_syn.integr(min(tr),max(tr),0.1, False)\n", - "\n", - " # sum all states to compare with one node\n", - " S0_sum = 0\n", - " E0_sum = 0\n", - " I0_sum = 0\n", - " R0_sum = 0\n", - "\n", - " for i in range(dim_system):\n", - " S0_sum += test_syn.S[i]\n", - " E0_sum += test_syn.E[i]\n", - " I0_sum += test_syn.I[i]\n", - " R0_sum += test_syn.R[i]\n", - " \n", - " I0_sum_array[num_nodes-1] = I0_sum\n", - "\n", - " #### One node system ####\n", - " # solve the ODEs\n", - " soln = odeint(model_SEIR, y0, t) # (model, initial_conditions, time_series)\n", - "\n", - " #reshape the output of the solver to plot the states\n", - " S_single = soln[:, 0]\n", - " E_single = soln[:, 1]\n", - " I_single = soln[:, 2]\n", - " R_single = soln[:, 3]\n", - "\n", - " #### Comparison ####\n", - " # Euclidean distance between the two curves\n", - " norm_L2 = np.linalg.norm(np.array(I0_sum[:-1])-np.array(I_single))\n", - " norm_L2_array[num_nodes-1] = norm_L2\n", - " pearson_array[num_nodes-1] = stats.pearsonr(I_single, I0_sum[:-1])[0]\n", - " norm_L2_ratio_array[num_nodes-1]= norm_L2/norm_single" - ] - }, - { - "cell_type": "code", - "execution_count": 101, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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Jcua8LF7Dq956Ri7HkIwc+yLBF9exrn7nqP209TMzsjhtTUIhs7/aPI4ERGRGPIkwdD0R8l5CPmI8PH3ZnZkAtZwdNnfCTLD8Gz93wd2ADeFo9iye4Lvh8Bn9yLBlfznc1r6zcwqmJnCu5R6ugddRI7lHoIh3U8Ct5rZNwTDwk8jmByuM9AbWB2pN8w2IV0ZoDpwBsHQ9goEV/Vvdvet2V6SQLCu6tVm9h3BBG51CNZZXcr3k+P9iLuvM7P/Etx7DjkMbwfOBt41s1nAwnB/tQmunJfn+3vSRUREYo67bw/XOf9bLtu/M7O/Ab8FFob3re8jOI62IziuPput/14zG0xwT/vXZvYGwX3q54f9vyKY4yX7eywxswEEJwMWmdknwDKC42gjgivrW4A2EfvgIsWQArqI5Mndd5vZRQSzm98EXEOwBnoKsBx4AJgc4bd9PHxMA/YAawmWgZsI/M/dM4+qMcPMfgb8CfgpcC/BrPTDwrbFx3i/EQQBPdHdZ+ewPRH4K8FQvp4EV863EMwy+4K7f1zQDygiIlLEXgDuAprktNHdHzKzOQQn5vsQBOeVwO+B545etcTd3zazngTH7OsJJmb9imC29oc5KqCHr3ndzOYRzC5/McHSpvsITny/Te6T2ImUGpb7agsiIpFlZg586e7do11LduEV+8eB28J7yyO13y+Ai9zdjtVXREREREQBXUSKTBjQs6vn7jktxVJkzKwKwUiA8kBDd99/gvurxQ+Xf0MBXURERETyQ0PcRaQo/fGo51FbO9zMrgA6EszeXgf49YmG89B+fvw5RURERESOSVfQRaRUMrNRQF+Ce+lHAL8/+t52EREREZGipIAuIiIiIiIiEgO0DrqIiIiIiIhIDFBAFxEREREREYkBCugiIiIiIiIiMUABXURERERERCQGKKCLiIiIiIiIxAAFdBEREREREZEYoIAuIiIiIiIiEgMU0EVERERERERigAK6iIiIiIiISAxQQBcRERERERGJAQroIiIiIiIiIjFAAV1EREREREQkBiigi4iIiIiIiMQABXQRERERERGRGKCALiIiIiIiIhIDFNBFREREREREYoACuoiIiIiIiEgMUEAXERERERERiQEK6CIiIiIiIiIxQAFdREREREREJAYooIuIiIiIiIjEAAV0ERERERERkRiggC4iIiIiIiISAxTQRURE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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Initial condition 5 nodes\n", - "S0 99999.99999999997\n", - "I0 10.0\n", - "Initial condition single node\n", - "S0 99999.99999999997\n", - "I0 10.0\n" - ] - } - ], - "source": [ - "plt.rcParams[\"figure.figsize\"] = 14, 12\n", - "\n", - "#plot\n", - "plt.subplot(3,2,1)\n", - "for i in range(num_nodes):\n", - " plt.plot(t, I0_sum_array[i][:-1], label=\"multinode {} connected\".format(i+1))\n", - "plt.plot(t[::50], I_single[::50], \"rd\", label=\"single node\")\n", - "plt.legend()\n", - "plt.xlabel(\"Time [Days]\", size=20)\n", - "plt.ylabel(\"Infected\", size=20)\n", - "\n", - "plt.subplot(3,2,2)\n", - "plt.rcParams[\"figure.figsize\"] = 14, 5\n", - "plt.bar(np.arange(dim_system), (P_syn*S0).sum(0))\n", - "plt.xlabel(\"Node\", size=20)\n", - "plt.ylabel(\"Person per node\", size=20)\n", - "\n", - "plt.subplot(3,2,3)\n", - "plt.plot(norm_L2_array)\n", - "plt.hlines(30000, 0, dim_system-1, colors=\"red\", linestyles='dashed',)\n", - "plt.xlabel(\"Connected nodes\", size=20)\n", - "plt.ylabel(\"norm L2\", size=20)\n", - "\n", - "plt.subplot(3,2,4)\n", - "plt.plot(norm_L2_ratio_array)\n", - "plt.hlines(0.10, 0, dim_system-1, colors=\"red\", linestyles='dashed',)\n", - "plt.xlabel(\"nodes\", size=20)\n", - "plt.ylabel(\"Relative error norm L2\", size=20)\n", - "\n", - "plt.subplot(3,2,5)\n", - "plt.plot(pearson_array)\n", - "plt.xlabel(\"nodes\", size=20)\n", - "plt.ylabel(\"Pearson coef\", size=20)\n", - "\n", - "plt.tight_layout()\n", - "plt.show()\n", - "\n", - "# Create a table instead of this ugly print\n", - "print(\"Initial condition {} nodes\".format(dim_system))\n", - "print(\"S0 \",S0.sum())\n", - "print(\"I0 \",I0.sum())\n", - "\n", - "print(\"Initial condition single node\")\n", - "print(\"S0 \", S0.sum())\n", - "print(\"I0 \", I0.sum())" - ] - }, - { - "cell_type": "code", - "execution_count": 102, - "metadata": {}, - "outputs": [], - "source": [ - "# 1- A mayor numero de nodos conectados, más parecido a una simulacion de 1 nodo grande.\n", - "# Pearson correlation > 0.999 results in one node\n", - "# Relative error <10% => similar curves" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Increase node connection with diffusion" - ] - }, - { - "cell_type": "code", - "execution_count": 103, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "num connected nodes 1\n", - "diffusion in 0.0\n", - "Warning: Not connected nodes\n", - "############### num_nodes=1, diffusion=0.0 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 1\n", - "diffusion in 0.1\n", - "Warning: Not connected nodes\n", - "############### num_nodes=1, diffusion=0.1 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 1\n", - "diffusion in 0.2\n", - "Warning: Not connected nodes\n", - "############### num_nodes=1, diffusion=0.2 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 1\n", - "diffusion in 0.3\n", - "Warning: Not connected nodes\n", - "############### num_nodes=1, diffusion=0.3 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 1\n", - "diffusion in 0.4\n", - "Warning: Not connected nodes\n", - "############### num_nodes=1, diffusion=0.4 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 1\n", - "diffusion in 0.5\n", - "Warning: Not connected nodes\n", - "############### num_nodes=1, diffusion=0.5 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 1\n", - "diffusion in 0.6\n", - "Warning: Not connected nodes\n", - "############### num_nodes=1, diffusion=0.6 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 1\n", - "diffusion in 0.7\n", - "Warning: Not connected nodes\n", - "############### num_nodes=1, diffusion=0.7 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 1\n", - "diffusion in 0.8\n", - "Warning: Not connected nodes\n", - "############### num_nodes=1, diffusion=0.8 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 1\n", - "diffusion in 0.9\n", - "Warning: Not connected nodes\n", - "############### num_nodes=1, diffusion=0.9 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 1\n", - "diffusion in 1.0\n", - "Warning: Not connected nodes\n", - "############### num_nodes=1, diffusion=1.0 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "2\n", - "num connected nodes 2\n", - "diffusion in 0.0\n", - "############### num_nodes=2, diffusion=0.0 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 2\n", - "diffusion in 0.1\n", - "############### num_nodes=2, diffusion=0.1 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 2\n", - "diffusion in 0.2\n", - "############### num_nodes=2, diffusion=0.2 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 2\n", - "diffusion in 0.3\n", - "############### num_nodes=2, diffusion=0.3 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 2\n", - "diffusion in 0.4\n", - "############### num_nodes=2, diffusion=0.4 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 2\n", - "diffusion in 0.5\n", - "############### num_nodes=2, diffusion=0.5 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 2\n", - "diffusion in 0.6\n", - "############### num_nodes=2, diffusion=0.6 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 2\n", - "diffusion in 0.7\n", - "############### num_nodes=2, diffusion=0.7 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 2\n", - "diffusion in 0.8\n", - "############### num_nodes=2, diffusion=0.8 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 2\n", - "diffusion in 0.9\n", - "############### num_nodes=2, diffusion=0.9 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 2\n", - "diffusion in 1.0\n", - "############### num_nodes=2, diffusion=1.0 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "3\n", - "num connected nodes 3\n", - "diffusion in 0.0\n", - "############### num_nodes=3, diffusion=0.0 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 3\n", - "diffusion in 0.1\n", - "############### num_nodes=3, diffusion=0.1 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 3\n", - "diffusion in 0.2\n", - "############### num_nodes=3, diffusion=0.2 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 3\n", - "diffusion in 0.3\n", - "############### num_nodes=3, diffusion=0.3 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 3\n", - "diffusion in 0.4\n", - "############### num_nodes=3, diffusion=0.4 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 3\n", - "diffusion in 0.5\n", - "############### num_nodes=3, diffusion=0.5 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 3\n", - "diffusion in 0.6\n", - "############### num_nodes=3, diffusion=0.6 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 3\n", - "diffusion in 0.7\n", - "############### num_nodes=3, diffusion=0.7 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 3\n", - "diffusion in 0.8\n", - "############### num_nodes=3, diffusion=0.8 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 3\n", - "diffusion in 0.9\n", - "############### num_nodes=3, diffusion=0.9 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 3\n", - "diffusion in 1.0\n", - "############### num_nodes=3, diffusion=1.0 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "4\n", - "num connected nodes 4\n", - "diffusion in 0.0\n", - "############### num_nodes=4, diffusion=0.0 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 4\n", - "diffusion in 0.1\n", - "############### num_nodes=4, diffusion=0.1 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 4\n", - "diffusion in 0.2\n", - "############### num_nodes=4, diffusion=0.2 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 4\n", - "diffusion in 0.3\n", - "############### num_nodes=4, diffusion=0.3 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 4\n", - "diffusion in 0.4\n", - "############### num_nodes=4, diffusion=0.4 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 4\n", - "diffusion in 0.5\n", - "############### num_nodes=4, diffusion=0.5 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 4\n", - "diffusion in 0.6\n", - "############### num_nodes=4, diffusion=0.6 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 4\n", - "diffusion in 0.7\n", - "############### num_nodes=4, diffusion=0.7 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 4\n", - "diffusion in 0.8\n", - "############### num_nodes=4, diffusion=0.8 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 4\n", - "diffusion in 0.9\n", - "############### num_nodes=4, diffusion=0.9 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 4\n", - "diffusion in 1.0\n", - "############### num_nodes=4, diffusion=1.0 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "5\n", - "num connected nodes 5\n", - "diffusion in 0.0\n", - "############### num_nodes=5, diffusion=0.0 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 5\n", - "diffusion in 0.1\n", - "############### num_nodes=5, diffusion=0.1 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 5\n", - "diffusion in 0.2\n", - "############### num_nodes=5, diffusion=0.2 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 5\n", - "diffusion in 0.3\n", - "############### num_nodes=5, diffusion=0.3 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 5\n", - "diffusion in 0.4\n", - "############### num_nodes=5, diffusion=0.4 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 5\n", - "diffusion in 0.5\n", - "############### num_nodes=5, diffusion=0.5 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 5\n", - "diffusion in 0.6\n", - "############### num_nodes=5, diffusion=0.6 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 5\n", - "diffusion in 0.7\n", - "############### num_nodes=5, diffusion=0.7 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 5\n", - "diffusion in 0.8\n", - "############### num_nodes=5, diffusion=0.8 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 5\n", - "diffusion in 0.9\n", - "############### num_nodes=5, diffusion=0.9 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 5\n", - "diffusion in 1.0\n", - "############### num_nodes=5, diffusion=1.0 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "6\n", - "num connected nodes 6\n", - "diffusion in 0.0\n", - "############### num_nodes=6, diffusion=0.0 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 6\n", - "diffusion in 0.1\n", - "############### num_nodes=6, diffusion=0.1 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 6\n", - "diffusion in 0.2\n", - "############### num_nodes=6, diffusion=0.2 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 6\n", - "diffusion in 0.3\n", - "############### num_nodes=6, diffusion=0.3 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 6\n", - "diffusion in 0.4\n", - "############### num_nodes=6, diffusion=0.4 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 6\n", - "diffusion in 0.5\n", - "############### num_nodes=6, diffusion=0.5 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 6\n", - "diffusion in 0.6\n", - "############### num_nodes=6, diffusion=0.6 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 6\n", - "diffusion in 0.7\n", - "############### num_nodes=6, diffusion=0.7 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 6\n", - "diffusion in 0.8\n", - "############### num_nodes=6, diffusion=0.8 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 6\n", - "diffusion in 0.9\n", - "############### num_nodes=6, diffusion=0.9 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 6\n", - "diffusion in 1.0\n", - "############### num_nodes=6, diffusion=1.0 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "7\n", - "num connected nodes 7\n", - "diffusion in 0.0\n", - "############### num_nodes=7, diffusion=0.0 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 7\n", - "diffusion in 0.1\n", - "############### num_nodes=7, diffusion=0.1 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 7\n", - "diffusion in 0.2\n", - "############### num_nodes=7, diffusion=0.2 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 7\n", - "diffusion in 0.3\n", - "############### num_nodes=7, diffusion=0.3 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 7\n", - "diffusion in 0.4\n", - "############### num_nodes=7, diffusion=0.4 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 7\n", - "diffusion in 0.5\n", - "############### num_nodes=7, diffusion=0.5 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 7\n", - "diffusion in 0.6\n", - "############### num_nodes=7, diffusion=0.6 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 7\n", - "diffusion in 0.7\n", - "############### num_nodes=7, diffusion=0.7 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 7\n", - "diffusion in 0.8\n", - "############### num_nodes=7, diffusion=0.8 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 7\n", - "diffusion in 0.9\n", - "############### num_nodes=7, diffusion=0.9 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 7\n", - "diffusion in 1.0\n", - "############### num_nodes=7, diffusion=1.0 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "8\n", - "num connected nodes 8\n", - "diffusion in 0.0\n", - "############### num_nodes=8, diffusion=0.0 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 8\n", - "diffusion in 0.1\n", - "############### num_nodes=8, diffusion=0.1 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 8\n", - "diffusion in 0.2\n", - "############### num_nodes=8, diffusion=0.2 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 8\n", - "diffusion in 0.3\n", - "############### num_nodes=8, diffusion=0.3 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 8\n", - "diffusion in 0.4\n", - "############### num_nodes=8, diffusion=0.4 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 8\n", - "diffusion in 0.5\n", - "############### num_nodes=8, diffusion=0.5 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 8\n", - "diffusion in 0.6\n", - "############### num_nodes=8, diffusion=0.6 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 8\n", - "diffusion in 0.7\n", - "############### num_nodes=8, diffusion=0.7 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 8\n", - "diffusion in 0.8\n", - "############### num_nodes=8, diffusion=0.8 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 8\n", - "diffusion in 0.9\n", - "############### num_nodes=8, diffusion=0.9 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 8\n", - "diffusion in 1.0\n", - "############### num_nodes=8, diffusion=1.0 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "9\n", - "num connected nodes 9\n", - "diffusion in 0.0\n", - "############### num_nodes=9, diffusion=0.0 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 9\n", - "diffusion in 0.1\n", - "############### num_nodes=9, diffusion=0.1 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 9\n", - "diffusion in 0.2\n", - "############### num_nodes=9, diffusion=0.2 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 9\n", - "diffusion in 0.3\n", - "############### num_nodes=9, diffusion=0.3 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 9\n", - "diffusion in 0.4\n", - "############### num_nodes=9, diffusion=0.4 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 9\n", - "diffusion in 0.5\n", - "############### num_nodes=9, diffusion=0.5 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 9\n", - "diffusion in 0.6\n", - "############### num_nodes=9, diffusion=0.6 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 9\n", - "diffusion in 0.7\n", - "############### num_nodes=9, diffusion=0.7 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 9\n", - "diffusion in 0.8\n", - "############### num_nodes=9, diffusion=0.8 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 9\n", - "diffusion in 0.9\n", - "############### num_nodes=9, diffusion=0.9 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 9\n", - "diffusion in 1.0\n", - "############### num_nodes=9, diffusion=1.0 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "10\n", - "num connected nodes 10\n", - "diffusion in 0.0\n", - "############### num_nodes=10, diffusion=0.0 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 10\n", - "diffusion in 0.1\n", - "############### num_nodes=10, diffusion=0.1 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 10\n", - "diffusion in 0.2\n", - "############### num_nodes=10, diffusion=0.2 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 10\n", - "diffusion in 0.3\n", - "############### num_nodes=10, diffusion=0.3 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 10\n", - "diffusion in 0.4\n", - "############### num_nodes=10, diffusion=0.4 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 10\n", - "diffusion in 0.5\n", - "############### num_nodes=10, diffusion=0.5 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 10\n", - "diffusion in 0.6\n", - "############### num_nodes=10, diffusion=0.6 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 10\n", - "diffusion in 0.7\n", - "############### num_nodes=10, diffusion=0.7 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 10\n", - "diffusion in 0.8\n", - "############### num_nodes=10, diffusion=0.8 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 10\n", - "diffusion in 0.9\n", - "############### num_nodes=10, diffusion=0.9 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "num connected nodes 10\n", - "diffusion in 1.0\n", - "############### num_nodes=10, diffusion=1.0 ###############\n", - "Scikit couldn't be imported. Using RK4 instead\n" - ] - } - ], - "source": [ - "%matplotlib inline\n", - "\n", - "dim_system = 10\n", - "diffusion_array = np.arange(11)/10 # maximum diffusion 1.0, min diffusion 0.0\n", - "\n", - "def alpha_syn(t):return(np.ones([dim_system, dim_system])) #mobility in node\n", - "\n", - "#np.random.seed(seed=2)\n", - "\n", - "### Multi node system variables ###\n", - "# random Susceptible vector\n", - "S0 = np.random.rand(dim_system) # uniform random\n", - "S0 = total_susceptible * S0/S0.sum()\n", - "\n", - "# zero values\n", - "E0 = np.zeros(dim_system)\n", - "R0 = np.zeros(dim_system)\n", - "\n", - "# random infected vector\n", - "I0 = np.random.rand(dim_system)\n", - "I0 = total_infected * I0/I0.sum()\n", - "\n", - "### One node system variables ###\n", - "#initial conditions\n", - "t = np.linspace(0, 400., 4000) # time grid, (from, to, number_of_step)\n", - "y0 = [S0.sum(), E0.sum(), I0.sum(), R0.sum()]\n", - "\n", - "#### One node system ####\n", - "# solve the ODEs\n", - "soln = odeint(model_SEIR, y0, t) # (model, initial_conditions, time_series)\n", - "\n", - "#reshape the output of the solver to plot the states\n", - "S_single = soln[:, 0]\n", - "E_single = soln[:, 1]\n", - "I_single = soln[:, 2]\n", - "R_single = soln[:, 3]\n", - "\n", - "I0_sum_plot = np.empty((dim_system, len(diffusion_array), 4001))\n", - "norm_L2_plot = np.empty((dim_system, len(diffusion_array)))\n", - "norm_L2_ratio_plot = np.empty((dim_system, len(diffusion_array)))\n", - "\n", - "for num_nodes in range(1, dim_system+1):\n", - " print(num_nodes)\n", - " norm_L2_array = np.empty(len(diffusion_array))\n", - " norm_L2_ratio_array = np.empty(len(diffusion_array))\n", - "\n", - " I0_sum_array = np.empty((len(diffusion_array), 4001))\n", - " \n", - " for diffusion in diffusion_array:\n", - " print(\"num connected nodes\", num_nodes)\n", - " print(\"diffusion in\", diffusion)\n", - " P_syn = mobility_matrix(dim_system, num_connected_nodes=num_nodes, random_modulate=True, diffusion=True, \n", - " diff_value=diffusion/10)\n", - " print(\"############### num_nodes={}, diffusion={} ###############\".format(num_nodes, diffusion))\n", - " test_syn = SEIR(P_syn,alpha_syn,S0, E0, I0, R0, \n", - " beta, sigma, gamma, mu, epsilon, ks, ki)\n", - "\n", - " test_syn.integr(min(tr),max(tr),0.1, False)\n", - "\n", - " # sum all states to compare with one node\n", - " S0_sum = 0\n", - " E0_sum = 0\n", - " I0_sum = 0\n", - " R0_sum = 0\n", - "\n", - " for i in range(dim_system):\n", - " S0_sum += test_syn.S[i]\n", - " E0_sum += test_syn.E[i]\n", - " I0_sum += test_syn.I[i]\n", - " R0_sum += test_syn.R[i]\n", - "\n", - " #I0_sum_array[num_nodes-1] = I0_sum\n", - " I0_sum_array[int(diffusion*10)] = I0_sum\n", - "\n", - " #### Comparison ####\n", - " # Euclidean distance between the two curves\n", - " norm_L2 = np.linalg.norm(np.array(I0_sum[:-1])-np.array(I_single))\n", - " norm_L2_plot[num_nodes-1][np.argwhere(diffusion_array==diffusion)] = norm_L2\n", - " norm_L2_ratio_plot[num_nodes-1][np.argwhere(diffusion_array==diffusion)] = norm_L2/norm_single\n", - " \n", - " I0_sum_plot[num_nodes-1] = I0_sum_array" - ] - }, - { - "cell_type": "code", - "execution_count": 104, - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "data": { - "image/png": "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3yMiqhNzm5oFc9s52EEnusmJyPN2t/1sf7cB2Fat/NZq16vus032Mr2B29wG6972uu5fD2B9HXfHwTrJTEa15Sc3ZPvUcOmHn+paXHTEx5nr9PXrWRLd+2+n67p/69atfuPGjcv39/e3AMAdd9yR76xtDxo0qHju3LlhRqPRberUqZeHDBlSWv3+bdu2+Y0bNy4/ICDAAgBJSUmXt27d6j9t2rT8kJCQ8srlExISSrKzsz3t1y8itbaplKpRmJubq9u4cWObrKysg+3btzcnJSV1f+ONN9rZf2kgIqqOuU31wdxuvbnNIe5E1BJKAdyllGrsTLEAAKXU0wDWAnimHssOB/AprEPnqJVSqmlzr+j1ejGbrYemWSwWGI1GBQB33XVX0Y4dOzJDQkIqZs+eHf7Pf/6zxvGPjoK6koeHR9WdOp1OTCZTrUp26tSp4sSJEx4AYDQaUVRUpAsODq5xjNynn34aEBoaWt65c2eTp6en3HPPPfnfffedX1PaS0TkJMxtahTmdtPxF3QianYishrAaies52UAL9dz2Z2wnmaGnOBae8yby6hRo4qSk5PDXnzxxfNGo1F9+eWXbWbNmpXbkHV069atYu/evT5z5sy5vHLlyjaVoXzkyBGP8PDwiieeeOJScXGx2759+3wA5DnY9gURwaZNm9ouX778eH23m5SUlJ+SktJ+zJgxxcuWLWs7ePDgQje3mvvEw8LCKvbt2+dXWFjo5uvra/nmm2/8+/btW1LHKomIWgxzu/Vjbrfe3GYHnYiINGnYsGElkyZN+sVgMMSEhISUDxgwoKih65g3b17u+PHjI2JjY3uPGDGiwNvb2wIAW7Zs8V+6dGknvV4vPj4+5pUrV56w3/b999+fl5iY2BsAZs6cmTt06NDSuk67Ym/BggWXpkyZEh4aGmoIDAw0r169+hgAZGdnu8+aNavb9u3bs0aNGlV89913X+7Tp09vvV6PmJiYkoULFzboiwwREZFWMLedQ11rOAAREd28UlNTs+Pi4jjUUINSU1OD4uLiwlxdDyIi0g7mtnY1JLd5DDoRERERERGRBrCDTkRERERERKQB7KATERERERERaQA76EREREREREQawA46ERERERERkQawg05ERERERESkAeygExFRq7Bw4cLOzz77bEcAePzxxzt/8skn/gCwefNmv4iIiJioqKjooqIiNXfu3C4RERExc+fO7dLQbYwcOTLi0qVLuqbWtbS0VCUlJXUPDQ019OnTJ6qu87C++OKLwZGRkTERERExL7zwQnBTt0tERKQVzO3G0TfHSomIiJrTkiVLzlVeX7FiRbt58+ZdWLBgQR4ArFy5skNubu5+b29vaeh6t2/fnuWM+r322mtBgYGBplOnTqW99dZbbRcuXNhl48aNx6sv89NPP3mtWLGiw759+w57eXlZRo4c2XPSpElXYmNjy51RByIiIq1gbtcff0EnIiLNeuqppzqFhYUZhgwZ0vPo0aOeleVTpkwJW7ZsWdvFixcHbdy4sd3f//73zhMmTAgfNWpURGlpqVtCQkLvt99+u23lcpWP8/HxSQCAkydPuvfr169XVFRUdGRkZMzmzZv9ACAkJCT2/PnzegB4/vnnO0ZGRsZERkZW7SXPzMz06N69e8yMGTO6RURExAwdOjSyqKhI2df7s88+a5OcnJwHAA8++ODl7777zt9isdRY5uDBg96JiYlF/v7+Fnd3dwwdOrRw9erVbZrh30hERNQimNtNxw46ERFp0s6dO33WrVvX7uDBg+mfffZZVmpqqq/9MgsXLrw0ZsyY/L/85S9nNmzYcOKbb77J8vT0tGRkZKQ//PDDl+tad0pKSrvRo0dfycjISD98+PChgQMHlthv+4MPPmi/d+/ew3v27Dm8YsWKDrt27fIGgFOnTnnNnz//YlZW1qHAwEDzihUr2tqvPycnxyM8PLwCANzd3eHn52fOycmpMWotPj6+9IcffvC/cOGCrrCw0O3LL78MPH36tMMhdURERFrH3HYODnEnIqLrevzwqa4ZxWU+zlxnlK9XyZLeoafrun/r1q1+48aNy/f397cAwB133JHvrG0PGjSoeO7cuWFGo9Ft6tSpl4cMGVJa/f5t27b5jRs3Lj8gIMACAElJSZe3bt3qP23atPyQkJDyyuUTEhJKsrOzPe3XL1J7lJ5SqkZhYmJi2YIFCy6MGjWqp4+PjyU6OrpEr2csExFR0zG3W29u8xd0IiLSLKVqjUJrEL1eL2azGQBgsVhgNBoVANx1111FO3bsyAwJCamYPXt2+D//+c/21R/nKKgreXh4VN2p0+nEZDLVqmSnTp0qTpw44QEARqMRRUVFuuDgYLP9cr/73e8upaenH96zZ09mu3btzJGRkWWNbSsREZGrMbebjrvqiYjouq61x7y5jBo1qig5OTnsxRdfPG80GtWXX37ZZtasWbkNWUe3bt0q9u7d6zNnzpzLK1eubFMZykeOHPEIDw+veOKJJy4VFxe77du3zwdAnoNtXxARbNq0qe3y5cuP17khO0lJSfkpKSntx4wZU7xs2bK2gwcPLnRzq71P/OzZs/qQkBDT0aNHPTZu3Njmxx9/zGhI+4iIiBxhbrfe3GYHnYiINGnYsGElkyZN+sVgMMSEhISUDxgwoKih65g3b17u+PHjI2JjY3uPGDGiwNvb2wIAW7Zs8V+6dGknvV4vPj4+5pUrV56w3/b999+fl5iY2BsAZs6cmTt06NDSuk67Ym/BggWXpkyZEh4aGmoIDAw0r169+hgAZGdnu8+aNatb5ayzEyZM6JGfn6/X6/WyZMmSUx06dKi1t56IiKg1YG47h7rWcAAiIrp5paamZsfFxV1ydT2ottTU1KC4uLgwV9eDiIi0g7mtXQ3JbR6DTkRERERERKQB7KATERERERERaQA76EREREREREQawA46ERERERERkQawg05ERERERESkAeygExEREREREWkAO+hERNSqTJ8+vdvevXu9GvPYzMxMj8jIyBhn10kr2yMiItIa5nbDsINORETOs2ePFyIiorFnT6OCuD5Wr159sm/fvmXNtX4iIqKbBnNbc9hBJyIi5ygocMOECZE4ftwbEyZEoqCgSRlTUFDgduutt0b06tUrOjIyMubtt99uCwADBgzotWPHDh8A8PHxSZg3b15Ir169ouPi4qJOnz6tB4BDhw55xsXFRRkMht6PP/54Zx8fnwT79ZtMJsydO7eLwWDo3bNnz+hXXnklyH6ZzMxMj+7du8fMmDGjW0RERMzQoUMji4qKFAB899133nFxcVE9e/aMvv3223vk5ubqAGDnzp0+vXr1io6Pj49avHhxcEO2R0RE1GKY25rMbXbQiYjIOWbMCMMvv7hDBPjlF3fcd1+3pqzu448/DujUqZMxMzMz/ejRo4cmT55cYL9MaWmp2+DBg4syMzPTBw8eXPT66693AIDHHnus629/+9uLaWlphzt37mx0tP4lS5YEBQYGmtPS0g6npqYefu+99zpkZGR42C936tQpr/nz51/Myso6FBgYaF6xYkVbAJg9e3b4//7v/545cuRIekxMTOlTTz3VGQAeeuihsMWLF5/a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bFtDNacPqampXlFRUQEWbhLh9voft2bsg3VgH6wDc9s63Kzc5gCdiIjMsuagv91xgE5ERLUxt61XY3Kb56ATERERERERWQEO0ImIiIiIiIisAAfoLUgIcY8QIlMIcVII8Vxrt6ehhBBZQogjQohDQogDprJ2QohtQogTpt8erd3O6oQQCUKIK0KItGplZtssjN41bZfDQogerdfyP9XTh0VCiD9M2+KQEGJktceeN/UhUwgxvHVa/SchRGchxHYhxFEhRLoQYr6pvM1sh+v0oS1tB3shxD4hRKqpD/8ylQcKIfaatsM6IYStqdzOdP+k6fGA1mw/AOj1epGenh6alpYWduTIkfBz5851AoCTJ08GpKamRqSlpYWlpaWFaTQaBwCQUuLMmTOdDx8+rD5y5EhYUVGR4/XXcPNIKZGWlhaWmZkZBAClpaW26enpIYcPH1afOHGii8FgEABgMBjEiRMnuhw+fFidnp4eUlZW1qBJbciymNs3D3O79fMCaPvZzdxmbluaNeQ2B+gtRAihBPA+gBEAwgA8LIQIa91WNcpQKWV0tev1PQfgZyllMICfTfetyScA7qlVVl+bRwAINv38FcCHN6mNN/IJ6vYBAN42bYtoKWUiAJheSxMAhJue84HpNdeadACeklKGAugL4AlTO9vSdqivD0Db2Q7lAOKklFEAogHcI4ToC2AJjH0IBpAPYIap/gwA+VLKIABvm+q1KoVCIbt3756pVqszwsPDM4qKilwLCwudAMDHx+eCWq3OUKvVGc7OzqUAkJ+f71ZeXm4fERGR5u/vf/bcuXN+rduDP126dKmDnZ1daeX9Cxcu+Hp7e2dHRkamKZVKXXZ2thcAZGdneymVSl1kZGSat7d39vnz531br9W3J+b2TfcJmNutnRdA289u5jZz26KsIbc5QG85vQGclFKellJWAFgL4L5WblNz3AfgU9PtTwHc34ptqUNKuQvA1VrF9bX5PgCrpdHvANyFEHfcnJbWr54+1Oc+AGullOVSyjMATsL4mms1UspLUsoU0+0iAEcB+KANbYfr9KE+1rgdpJSy8rImNqYfCSAOwHpTee3tULl91gMYJoQQN6m5ZgkhoFKpDAAgpRRSyuu2p6CgwN3T0zNPCAFXV9divV6vKi8vt7k5ra1feXm5zbVr19zat2+fCxj3yms0GhdPT898APDy8sq7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3SYiIiKrw9y2OhygExHRLeeee+7RZGZmtvoHDiIiIrox5vafODkNERHVx2AwGBo8uyrdHKZtYmjtdhARkdVhbluhxuY2B+hERFSftJycHDeGvfUwGAwiJyfHDUBaa7eFiIisDnPbyjQlt3mIOxERmaXT6WZevnz5o8uXL6vBHbrWwgAgTafTzWzthhARkXVhblulRuc2Z3EnIiIiIiIisgLcs0JERERERERkBThAJyIiIiIiIrICHKATERERERERWQEO0ImIiIiIiIisAAfoRERERERERFaAA3QiIiIiIiIiK8ABOhEREREREZEV4ACdiIiIiIiIyApwgE5ERERERERkBThAJyIiIiIiIrICHKATERERERERWQEO0ImIiIiIiIisAAfoRERERERERFaAA3QiIiIiIiIiK8ABOhEREREREZEV4ACdiIiIiIiIyApwgE5ERERERERkBThAJyIiIiIiIrICHKATERERERERWQEO0ImIiIiIiIisAAfoRERERERERFaAA3QiIiIiIiIiK8ABOhEREREREZEV4ACdiIiIiIiIyApwgE5ERERERERkBThAJyIiIiIiIrICHKATERERERERWQEO0ImIiIiIiIisAAfoRERERERERFaAA3QiIiIiIiIiK8ABOhEREREREZEV4ACdiIiIiIiIyApwgE5ERERERERkBThAJyIiIiIiIrICrTpAF0IkCCGuCCHSqpUtEkL8IYQ4ZPoZWe2x54UQJ4UQmUKI4dXK7zGVnRRCPFetPFAIsVcIcUIIsU4IYXvzekdERHRrYW4TERG1LCGlbL2VCzEIgAbAaiml2lS2CIBGSvlmrbphAL4E0BtAJwA/Aehmevg4gLsAXACwH8DDUsoMIcRXAL6WUq4VQvwXQKqU8sMbtcvLy0sGBARYoIdEREQ3R3Jycq6Usn1LroO5TUREZBn15baqNRpTSUq5SwgR0MDq9wFYK6UsB3BGCHESxtAHgJNSytMAIIRYC+A+IcRRAHEAHjHV+RTAIgA3DPqAgAAcOHCgod0gMi89HXjoIWDdOiA8vLVbQ0S3OCHE2ZZeB3ObbmnMbSK6ierLbWs9B32OEOKw6VA6D1OZD4Dz1epcMJXVV+4JoEBKqatVbpYQ4q9CiANCiAM5OTmW6gfdroqLgZEjgYwMID7eeD89HVCrjb+JiG4tzG1q28zlNsDs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C6N3796Vppk0aRI7duxg2LBhjBkzBrCF+b59tuGDNm7c6HDeS5cuZciQIbz44ouUlJSQV+XAYEpKCosWLWLXrl1orYmIiGDAgAEEBARw9OhRli1bxvz58xk7diyrVq3i8ccfr/T6kydP0qlTJwA8PDxo3bo1WVlZtGvXrtJ0SikGDx6MUoqnn36ap56q+fchhEuokNuX7xvAgpho4hcux6+gwgdeyW3XVVNuFxYCtvvS79v5Xz7tdQ+tf/sopWezKH04Co/DkttNjeR2081tOYMuGleFo+4AxMZSevo0aI1XzmV6H/gfx+8IRlc5uisdy7ioWtyX3qKwiL+89SptL2bjpjXWU5kcuL8/2flF1bcHIakoAqwAACAASURBVCpITk5m5MiR+Pr60qpVK6Kjo5027759+7Jo0SKmTZvGgQMHaNmyZaXnd+zYwciRI/Hz88Pf359Ro0aVH63v0qULFosFgN69ezu8T83RUXelVLW2zz//nD179rBx40beeusttm/f7oS1E8KJHOS2PmPLbY9LOdx6MJ2vQ7tLbjcVtcrtQv7y1qu0uZiDm4aS05kcjozgbE6B5La4Islt55Az6KLxVDjqztChFE+ZQsmaNXhXONs6eOdOPP4213bkvezornQs49rKLmEE25irzz5bOew9PfFUCk/739mnyErXA4f529Rf87Olywg4fxE1dKgt7OXovMu60hHza8lRONaFh4cHpaWlgC18i+zbYWRkJNu3bycpKYnx48eTkJDAE088Uf66K13W5u394/BR7u7uDi+VCwoKIj09naCgIIqLi8nOzqZt27bVpuvYsSMAgYGBjBw5ki+//JLIyMj6rawQzlYlt/Xzz2NdsxqvIisAPkVFPPzFdjznzoWTkttNRh1z27vISudD3zLvxWd4cskaWl+4JLndBEhu/6ip5bacQRfXjoOj7mW9vFpPnqTkN78p3zkv41FYBNOmVT66K//8mw5H97e5uUGVv7NvQQFT3nmXFjl5KK0pysjg6OAHKSoulaPzolxkZCSrV68mPz+fnJwc1q9fX+d5BAcHk5KSAtjuL7NabTsWx48fJzAwkPj4eOLi4tizp/KIA5GRkaxZs4a8vDxyc3NZvXo1/fv3r/Vyo6OjWbx4MQArV65k4MCB1T605ObmkpOTU/79f/7zH8xmc53XUQinuUpuW5+bXL5zXsaz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VlZWlc9RXl4u6rp9KaX497//fWbkyJE3HOGvztbWVlY+t7a2llqtttaD21JKCGG6CXWtj4iIqMkxtyu3aXG5zTPoRETUcHPn5qN//6uws6sIRTs7ifj4QsyZY/IoeF3k5OTYuLi4GJ566qk/586de/nAgQOOdX2vSqXSLF++vDUAJCUltTG1zn333Xf1o48+8iw1Xt538OBBu2vXrtUpF93d3fWurq761NRUZwD4/PPP3WNiYjQeHh56Z2dn/Y8//ugMAMuXL6+quyH1ERERNSrmtsXmNs+gExFR41izJgdBQaG4dMkWbdrosHp1g2ZtTU9Pd3jhhRd8rKysoFAo5Icffljn7S1duvTs+PHj/ZcsWdJu0KBBhc7OzjdcZvfMM8/k5eTk2IWFhQVLKUWbNm10KSkpJ+tax7Jly049+eSTHWfPnm3l6+tbunr16hwA+Pzzz3OmT5/u5+DgYIiPj6866t7Q+oiIiBoVczsHsLzcFlLKW69FRER3nYyMjJyIiIi8er1p3z57jB3bCWvW/IHu3UuaqGm3pFarrZycnAxWVlb45JNPWq9du7bNli1b7pjBcEZGhkdERISfudtBRESWg7ltueqT2zyDTkREjad79xKcOJFl7mb8+uuvjnPmzPGVUsLV1VW/fPnyHHO3iYiIyOIwty0OB+hERHTHuf/++zXZ2dlm/8BBREREt8bc/gsnpyEiIiIiIiKyABygExFRbQwGg6HOX39CzcO4TwzmbgcREVkc5rYFqm9uc4BORES1yczNzXVj2FsOg8EgcnNz3QBkmrstRERkcZjbFuZ2cpv3oBMRkUnl5eXTL1269NmlS5eU4AFdS2EAkFleXj7d3A0hIiLLwty2SPXObX7NGhEREREREZEF4JEVIiIiIiIiIgvAAToRERERERGRBeAAnYiIiIiIiMgCcIBOREREREREZAE4QCciIiIiIiKyABygExEREREREVkADtCJiIiIiIiILAAH6EREREREREQWgAN0IiIiIiIiIgvAAToRERERERGRBeAAnYiIiIiIiMgCcIBOREREREREZAE4QCciIiIiIiKyABygExEREREREVkADtCJiIiIiIiILAAH6EREREREREQWgAN0IiIiIiIiIgvAAToRERERERGRBeAAnYiIiIiIiMgCcIBOREREREREZAE4QCciIiIiIiKyABygExER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KpXyww8/rHZ977333uUnn3zSY/ny5a0HDRqUpVKpKlxmN3v27PTk5GRrf39/HymlaN68uXbbtm1/VLeNlStXXpg2bVr7mTNnKtzc3Aq//vrrZAD4/PPPk6dMmeLepEkTfWhoaOlR99q2R0REVKeY28mA+eW2kFLevRQREd13jh07lhwYGJheo5UOHbLBmDEdsG7deXTtWlBPXbur7OxshZ2dnV6hUODTTz9ttn79+ua7d+/+2wyGjx075hQYGOhu6n4QEZH5YG6br5rkNs+gExFR3enatQDnziWYuhs//fST7axZs9yklHBwcNCtWrUq2dR9IiIiMjvMbbPDAToREf3tPPTQQzlJSUkm/8BBREREd8fc/gsnpyEiIiIiIiIyAxygExFRVfR6vb7aX39CDcO4T/Sm7gcREZkd5rYZqmluc4BORERVOZmWlubIsDcfer1epKWlOQI4aeq+EBGR2WFum5l7yW3eg05ERJUqLi6ecu3atc+uXbumBg/omgs9gJPFxcVTTN0RIiIyL8xts1Tj3ObXrBERERERERGZAR5ZISIiIiIiIjIDHKATERERERERmQEO0ImIiIiIiIjMAAfoRERERERERGaAA3QiIiIiIiIiM8ABOhEREREREZEZ4ACdiIiIiIiIyAxwgE5ERERERERkBjhAJyIiIiIiIjIDHKATERERERERmQEO0ImIiIiIiIjMAAfoRERERERERGaAA3QiIiIiIiIiM8ABOhEREREREZEZ4ACdiIiIiIiIyAxwgE5ERERERERkBjhAJyIiIiIiIjIDHKATERERERERmQEO0ImIiIiIiIjMAAfoRERERERERGaAA3QiIiIiIiIiM8ABOhEREREREZEZ4ACdiIiIiIiIyAxwgE5ERERERERkBjhAJyIiIiIiIjIDHKATERERERERmQEO0ImIiIiIiIjMAAfoRERERERERGaAA3QiIiIiIiIiM8ABOhEREREREZEZ4ACdiIiIiIiIyAxwgE5ERERERERkBjhAJyIiIiIiIjIDJh2gCyGihRDXhRAnyyxbJIS4KoQ4avwJL/PafCHEOSFEkhBicJnlDxmXnRNCvFBmuYcQ4qAQ4qwQYr0Qwqrhto6IiOjvhblNRERUv4SU0nSNC9EPQA6ANVJKtXHZIgA5Usq3y5X1BfA1gO4A2gLYBaCT8eUzAAYCuALgdwCP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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# FIX auto size. Meanwhile, change this value by hand\n", - "plt.rcParams[\"figure.figsize\"] = 14, 30\n", - "\n", - "for num_nodes in range(dim_system): # diffusion\n", - " plt.subplot(dim_system,2,num_nodes+1)\n", - " for diffusion in range(10):\n", - " plt.plot(t, I0_sum_plot[num_nodes][diffusion][:-1], label=\"diffusion {} \".format(diffusion/10))\n", - " plt.plot(t[::50], I_single[::50], \"rd\", label=\"single node\")\n", - " plt.xlabel(\"Time [Days]\")\n", - " plt.ylabel(\"Infected\")\n", - " plt.legend(title=\"{} connected nodes\".format(num_nodes+1))\n", - " \n", - "plt.subplot(dim_system,2,dim_system+1)\n", - "for i in range(dim_system):\n", - " plt.plot(diffusion_array, norm_L2_plot[i], label=\"connected nodes {}\".format(i+1))\n", - "plt.legend()\n", - "plt.xlabel(\"Diffusion\", size=20)\n", - "plt.ylabel(\"norm L2\", size=20)\n", - "\n", - "plt.subplot(dim_system,2,dim_system+2)\n", - "for i in range(dim_system):\n", - " plt.plot(diffusion_array, norm_L2_ratio_plot[i], label=\"connected nodes {}\".format(i+1))\n", - "plt.legend()\n", - "plt.xlabel(\"Diffusion\", size=20)\n", - "plt.ylabel(\"Relative error norm L2\", size=20)\n", - "\n", - "plt.subplot(dim_system,2,dim_system+3)\n", - "plt.bar(np.arange(dim_system), (P_syn*S0).sum(0))\n", - "plt.xlabel(\"Node\", size=20)\n", - "plt.ylabel(\"Person per node\", size=20)\n", - "\n", - "plt.tight_layout()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Impact factor\n", - "\n", - "We will study the matrix created by the Impact factor $p_{ijk}$, that tell us how much people from the node $i$ get infected because of people from node $j$, when both are in node $k$.\n", - "\n", - "$p_{ijk}=\\frac{\\beta}{\\bar{N}_k} P_{ik}P_{jk}S_i I_j$" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Initial condition 12 nodes\n", - "S0 100000.0\n", - "I0 30.0\n", - "Scikit couldn't be imported. Using RK4 instead\n", - "shape p_ijk (12, 12, 12, 4001)\n", - "N_bar [8772.27284903 9249.70121932 8542.06572003 7332.47852055 6888.80731154\n", - " 7640.26080708 8585.22387999 7886.90245121 8833.53897277 8530.46480349\n", - " 7380.6753548 7850.91849473]\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "%matplotlib inline\n", - "plt.rcParams[\"figure.figsize\"] = 14, 4\n", - "\n", - "dim_system = 12\n", - "\n", - "#np.random.seed(seed=2)\n", - "\n", - "P_syn = mobility_matrix(dim_system)\n", - "\n", - "def alpha_syn(t):return(np.ones([dim_system, dim_system])) #mobility in node\n", - "\n", - "# variables\n", - "beta = 0.3\n", - "sigma = 0.1\n", - "gamma = 0.1\n", - "mu = 1\n", - "epsilon = 1.0\n", - "ks = 1.0\n", - "ki = 1\n", - "\n", - "total_susceptible = 100000\n", - "total_infected = 10\n", - "\n", - "#Init variables\n", - "tr=np.arange(401) #Days\n", - "h=0.1\n", - "\n", - "# random Susceptible vector\n", - "S0 = np.random.rand(dim_system) # uniform random\n", - "S0 = total_susceptible * S0/S0.sum()\n", - "\n", - "# zero values\n", - "E0 = np.zeros(dim_system)\n", - "R0 = np.zeros(dim_system)\n", - "\n", - "# random infected vector\n", - "#I0 = np.random.rand(dim_system)\n", - "#I0 = total_infected * I0/I0.sum()\n", - "I0 = np.zeros(dim_system)\n", - "I0[0] = 10\n", - "I0[5] = 20\n", - "\n", - "print(\"Initial condition {} nodes\".format(dim_system))\n", - "print(\"S0 \",S0.sum())\n", - "print(\"I0 \",I0.sum())\n", - "\n", - "N = S0+E0+I0+R0 # not necessary, is inside SEIR class\n", - "N_bar = N.dot(P_syn.T) \n", - "\n", - "test_syn = SEIR(P_syn,alpha_syn,S0, E0, I0, R0, \n", - " beta, sigma, gamma, mu, epsilon, ks, ki)\n", - "\n", - "test_syn.integr(min(tr),max(tr),0.1, False)\n", - "\n", - "# sum all states to compare with one node\n", - "S0_sum = 0\n", - "E0_sum = 0\n", - "I0_sum = 0\n", - "R0_sum = 0\n", - "\n", - "for i in range(dim_system):\n", - " S0_sum += test_syn.S[i]\n", - " E0_sum += test_syn.E[i]\n", - " I0_sum += test_syn.I[i]\n", - " R0_sum += test_syn.R[i]\n", - "\n", - "p_ijk = np.empty(shape=(dim_system, dim_system, dim_system, 4001)) #i,j,k,time\n", - "for i in range(dim_system):\n", - " for j in range(dim_system):\n", - " for k in range(dim_system):\n", - " p_ijk[i][j][k] = (beta*P_syn[i][k]*P_syn[j][k]*test_syn.S[i]*test_syn.I[j])/N_bar[k]\n", - "\n", - "print(\"shape p_ijk\", np.shape(p_ijk))\n", - "print(\"N_bar\", N_bar)\n", - "\n", - "plt.subplot(1,2,1)\n", - "plt.imshow(P_syn)\n", - "plt.colorbar()\n", - "plt.title(\"Initial connectivity matrix\")\n", - "\n", - "plt.subplot(1,2,2)\n", - "plt.rcParams[\"figure.figsize\"] = 14, 5\n", - "plt.bar(np.arange(dim_system), (P_syn*(S0+I0)).sum(0))\n", - "plt.xlabel(\"Node\", size=20)\n", - "plt.ylabel(\"Person per node\", size=20)\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "application/javascript": [ - "/* Put everything inside the global mpl namespace */\n", - "window.mpl = {};\n", - "\n", - "\n", - "mpl.get_websocket_type = function() {\n", - " if (typeof(WebSocket) !== 'undefined') {\n", - " return WebSocket;\n", - " } else if (typeof(MozWebSocket) !== 'undefined') {\n", - " return MozWebSocket;\n", - " } else {\n", - " alert('Your browser does not have WebSocket support. ' +\n", - " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", - " 'Firefox 4 and 5 are also supported but you ' +\n", - " 'have to enable WebSockets in about:config.');\n", - " };\n", - "}\n", - "\n", - "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", - " this.id = figure_id;\n", - "\n", - " this.ws = websocket;\n", - "\n", - " this.supports_binary = (this.ws.binaryType != undefined);\n", - "\n", - " if (!this.supports_binary) {\n", - " var warnings = document.getElementById(\"mpl-warnings\");\n", - " if (warnings) {\n", - " warnings.style.display = 'block';\n", - " warnings.textContent = (\n", - " \"This browser does not support binary websocket messages. \" +\n", - " \"Performance may be slow.\");\n", - " }\n", - " }\n", - "\n", - " this.imageObj = new Image();\n", - "\n", - " this.context = undefined;\n", - " this.message = undefined;\n", - " this.canvas = undefined;\n", - " this.rubberband_canvas = undefined;\n", - " this.rubberband_context = undefined;\n", - " this.format_dropdown = undefined;\n", - "\n", - " this.image_mode = 'full';\n", - "\n", - " this.root = $('
');\n", - " this._root_extra_style(this.root)\n", - " this.root.attr('style', 'display: inline-block');\n", - "\n", - " $(parent_element).append(this.root);\n", - "\n", - " this._init_header(this);\n", - " this._init_canvas(this);\n", - " this._init_toolbar(this);\n", - "\n", - " var fig = this;\n", - "\n", - " this.waiting = false;\n", - "\n", - " this.ws.onopen = function () {\n", - " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", - " fig.send_message(\"send_image_mode\", {});\n", - " if (mpl.ratio != 1) {\n", - " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", - " }\n", - " fig.send_message(\"refresh\", {});\n", - " }\n", - "\n", - " this.imageObj.onload = function() {\n", - " if (fig.image_mode == 'full') {\n", - " // Full images could contain transparency (where diff images\n", - " // almost always do), so we need to clear the canvas so that\n", - " // there is no ghosting.\n", - " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", - " }\n", - " fig.context.drawImage(fig.imageObj, 0, 0);\n", - " };\n", - "\n", - " this.imageObj.onunload = function() {\n", - " fig.ws.close();\n", - " }\n", - "\n", - " this.ws.onmessage = this._make_on_message_function(this);\n", - "\n", - " this.ondownload = ondownload;\n", - "}\n", - "\n", - "mpl.figure.prototype._init_header = function() {\n", - " var titlebar = $(\n", - " '
');\n", - " var titletext = $(\n", - " '
');\n", - " titlebar.append(titletext)\n", - " this.root.append(titlebar);\n", - " this.header = titletext[0];\n", - "}\n", - "\n", - "\n", - "\n", - "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", - "\n", - "}\n", - "\n", - "\n", - "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", - "\n", - "}\n", - "\n", - "mpl.figure.prototype._init_canvas = function() {\n", - " var fig = this;\n", - "\n", - " var canvas_div = $('
');\n", - "\n", - " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", - "\n", - " function canvas_keyboard_event(event) {\n", - " return fig.key_event(event, event['data']);\n", - " }\n", - "\n", - " canvas_div.keydown('key_press', canvas_keyboard_event);\n", - " canvas_div.keyup('key_release', canvas_keyboard_event);\n", - " this.canvas_div = canvas_div\n", - " this._canvas_extra_style(canvas_div)\n", - " this.root.append(canvas_div);\n", - "\n", - " var canvas = $('');\n", - " canvas.addClass('mpl-canvas');\n", - " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", - "\n", - " this.canvas = canvas[0];\n", - " this.context = canvas[0].getContext(\"2d\");\n", - "\n", - " var backingStore = this.context.backingStorePixelRatio ||\n", - "\tthis.context.webkitBackingStorePixelRatio ||\n", - "\tthis.context.mozBackingStorePixelRatio ||\n", - "\tthis.context.msBackingStorePixelRatio ||\n", - "\tthis.context.oBackingStorePixelRatio ||\n", - "\tthis.context.backingStorePixelRatio || 1;\n", - "\n", - " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", - "\n", - " var rubberband = $('');\n", - " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", - "\n", - " var pass_mouse_events = true;\n", - "\n", - " canvas_div.resizable({\n", - " start: function(event, ui) {\n", - " pass_mouse_events = false;\n", - " },\n", - " resize: function(event, ui) {\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " stop: function(event, ui) {\n", - " pass_mouse_events = true;\n", - " fig.request_resize(ui.size.width, ui.size.height);\n", - " },\n", - " });\n", - "\n", - " function mouse_event_fn(event) {\n", - " if (pass_mouse_events)\n", - " return fig.mouse_event(event, event['data']);\n", - " }\n", - "\n", - " rubberband.mousedown('button_press', mouse_event_fn);\n", - " rubberband.mouseup('button_release', mouse_event_fn);\n", - " // Throttle sequential mouse events to 1 every 20ms.\n", - " rubberband.mousemove('motion_notify', mouse_event_fn);\n", - "\n", - " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", - " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", - "\n", - " canvas_div.on(\"wheel\", function (event) {\n", - " event = event.originalEvent;\n", - " event['data'] = 'scroll'\n", - " if (event.deltaY < 0) {\n", - " event.step = 1;\n", - " } else {\n", - " event.step = -1;\n", - " }\n", - " mouse_event_fn(event);\n", - " });\n", - "\n", - " canvas_div.append(canvas);\n", - " canvas_div.append(rubberband);\n", - "\n", - " this.rubberband = rubberband;\n", - " this.rubberband_canvas = rubberband[0];\n", - " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", - " this.rubberband_context.strokeStyle = \"#000000\";\n", - "\n", - " this._resize_canvas = function(width, height) {\n", - " // Keep the size of the canvas, canvas container, and rubber band\n", - " // canvas in synch.\n", - " canvas_div.css('width', width)\n", - " canvas_div.css('height', height)\n", - "\n", - " canvas.attr('width', width * mpl.ratio);\n", - " canvas.attr('height', height * mpl.ratio);\n", - " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", - "\n", - " rubberband.attr('width', width);\n", - " rubberband.attr('height', height);\n", - " }\n", - "\n", - " // Set the figure to an initial 600x600px, this will subsequently be updated\n", - " // upon first draw.\n", - " this._resize_canvas(600, 600);\n", - "\n", - " // Disable right mouse context menu.\n", - " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", - " return false;\n", - " });\n", - "\n", - " function set_focus () {\n", - " canvas.focus();\n", - " canvas_div.focus();\n", - " }\n", - "\n", - " window.setTimeout(set_focus, 100);\n", - "}\n", - "\n", - "mpl.figure.prototype._init_toolbar = function() {\n", - " var fig = this;\n", - "\n", - " var nav_element = $('
');\n", - " nav_element.attr('style', 'width: 100%');\n", - " this.root.append(nav_element);\n", - "\n", - " // Define a callback function for later on.\n", - " function toolbar_event(event) {\n", - " return fig.toolbar_button_onclick(event['data']);\n", - " }\n", - " function toolbar_mouse_event(event) {\n", - " return fig.toolbar_button_onmouseover(event['data']);\n", - " }\n", - "\n", - " for(var toolbar_ind in mpl.toolbar_items) {\n", - " var name = mpl.toolbar_items[toolbar_ind][0];\n", - " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", - " var image = mpl.toolbar_items[toolbar_ind][2];\n", - " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", - "\n", - " if (!name) {\n", - " // put a spacer in here.\n", - " continue;\n", - " }\n", - " var button = $('