Exemplo n.º 1
0
 def test_retrospective_before_estimate(self, jhu_data):
     scenario = Scenario(country="Japan")
     scenario.register(jhu_data)
     scenario.retrospective(
         beginning_date="01Jan2021", model=SIRF,
         control="Control", target="Retro", timeout=1, timeout_iteration=1)
     scenario.simulate(name="Control")
     scenario.simulate(name="Retro")
Exemplo n.º 2
0
 def test_scenario(self):
     area = {"country": "Theoretical"}
     # Set-up example dataset (from 01Jan2020 to 31Jan2020)
     example_data = ExampleData(tau=1440, start_date="01Jan2020")
     example_data.add(SIRF, step_n=30, **area)
     # Population value
     population_data = PopulationData(filename=None)
     population_data.update(SIRF.EXAMPLE["population"], **area)
     # Set-up Scenario instance
     snl = Scenario(tau=1440, **area)
     snl.register(example_data, population_data)
     # Check records
     record_df = snl.records(variables="CFR")
     assert set(record_df.columns) == set(
         [Term.DATE, Term.C, Term.F, Term.R])
     # Add a past phase to 31Jan2020 with parameter values
     snl.add(model=SIRF, **SIRF.EXAMPLE["param_dict"])
     # Check summary
     df = snl.summary()
     assert not df.empty
     assert len(df) == 1
     assert Term.RT in df
     # Main scenario
     snl.add(end_date="31Dec2020", name="Main")
     assert snl.get(Term.RT, phase="last", name="Main") == 2.50
     # Lockdown scenario
     snl.clear(name="Lockdown")
     rho_lock = snl.get("rho", phase="0th") * 0.5
     snl.add(end_date="31Dec2020", name="Lockdown", rho=rho_lock)
     assert snl.get(Term.RT, phase="last", name="Lockdown") == 1.25
     # Medicine scenario
     snl.clear(name="Medicine")
     kappa_med = snl.get("kappa", phase="0th") * 0.5
     sigma_med = snl.get("sigma", phase="0th") * 2
     snl.add(end_date="31Dec2020",
             name="Medicine",
             kappa=kappa_med,
             sigma=sigma_med)
     assert snl.get(Term.RT, phase="last", name="Medicine") == 1.31
     # Add vaccine scenario
     snl.clear(name="Vaccine")
     rho_vac = snl.get("rho", phase="0th") * 0.8
     kappa_vac = snl.get("kappa", phase="0th") * 0.6
     sigma_vac = snl.get("sigma", phase="0th") * 1.2
     snl.add(end_date="31Dec2020",
             name="Vaccine",
             rho=rho_vac,
             kappa=kappa_vac,
             sigma=sigma_vac)
     assert snl.get(Term.RT, phase="last", name="Vaccine") == 1.72
     # Description
     snl.describe()
     # History
     snl.history("Rt")
     snl.history("rho")
     snl.history("Infected")
     snl.history_rate(name="Medicine")
     snl.simulate(name="Vaccine")
Exemplo n.º 3
0
 def test_analysis(self, jhu_data, population_data):
     scenario = Scenario(jhu_data, population_data, country="Italy")
     # S-R trend analysis
     scenario.trend(show_figure=False)
     # Parameter estimation of SIR-F model
     scenario.estimate(model=SIRF)
     # Prediction
     scenario.add_phase(name="Main", days=100)
     scenario.simulate(name="Main", show_figure=False)
     scenario.param_history(targets=["Rt"], name="Main", show_figure=False)
     # New scenario
     sigma_new = scenario.get("sigma", phase="last") * 2
     scenario.add_phase(name="New medicines", days=100, sigma=sigma_new)
     # Summarize scenarios
     summary_df = scenario.summary()
     assert isinstance(summary_df, pd.DataFrame)
     desc_df = scenario.describe()
     assert isinstance(desc_df, pd.DataFrame)
Exemplo n.º 4
0
 def test_simulate(self, jhu_data, population_data, country):
     warnings.simplefilter("ignore", category=UserWarning)
     warnings.simplefilter("ignore", category=DeprecationWarning)
     # Setting
     snl = Scenario(jhu_data, population_data, country)
     snl.first_date = "01Apr2020"
     snl.last_date = "01May2020"
     with pytest.raises(ValueError):
         snl.simulate()
     with pytest.raises(ValueError):
         snl.track()
     snl.trend(show_figure=False)
     # Parameter estimation
     with pytest.raises(ValueError):
         # Deprecated
         snl.param_history(["rho"])
     all_phases = snl.summary().index.tolist()
     snl.disable(all_phases[:-2])
     with pytest.raises(NameError):
         snl.simulate()
     snl.estimate(SIRF, timeout=5, timeout_iteration=5)
     # Simulation
     snl.simulate(variables=[Term.C, Term.CI, Term.F, Term.R])
     snl.simulate(phases=all_phases[-2:])
     # Parameter history (Deprecated)
     snl.param_history([Term.RT], divide_by_first=False)
     snl.param_history(["rho"])
     snl.param_history(["rho"], show_figure=False)
     snl.param_history(["rho"], show_box_plot=False)
     with pytest.raises(KeyError):
         snl.param_history(["feeling"])
     # Comparison of scenarios
     snl.describe()
     snl.track()
     snl.history(target="Rt")
     snl.history(target="sigma")
     snl.history(target="rho", show_figure=False)
     snl.history(target="Infected", phases=all_phases[-2:])
     with pytest.raises(KeyError):
         snl.history(target="temperature")
     # Change rate of parameters
     snl.history_rate(name="Main")
     snl.history_rate(
         name="Main", params=["theta", "kappa"], show_figure=False)
     with pytest.raises(TypeError):
         snl.history_rate(params="", name="Main")
     # Add new scenario
     snl.add(end_date="01Sep2020", name="New")
     snl.describe()
Exemplo n.º 5
0
 def test_simulate(self, jhu_data, population_data, country):
     warnings.simplefilter("ignore", category=UserWarning)
     warnings.simplefilter("ignore", category=DeprecationWarning)
     # Setting
     snl = Scenario(jhu_data, population_data, country)
     snl.first_date = "01Apr2020"
     snl.last_date = "01Aug2020"
     snl.trend(show_figure=False)
     # Parameter estimation
     with pytest.raises(ValueError):
         # Deprecated
         snl.param_history(["rho"])
     snl.estimate(SIR)
     # Simulation
     snl.simulate()
     # Parameter history (Deprecated)
     snl.param_history([Term.RT], divide_by_first=False)
     snl.param_history(["rho"])
     snl.param_history(["rho"], show_figure=False)
     snl.param_history(["rho"], show_box_plot=False)
     with pytest.raises(KeyError):
         snl.param_history(["feeling"])
     # Comparison of scenarios
     snl.describe()
     snl.history(target="Rt")
     snl.history(target="sigma")
     snl.history(target="Infected")
     with pytest.raises(KeyError):
         snl.history(target="temperature")
     # Change rate of parameters
     snl.history_rate(name="Main")
     with pytest.raises(TypeError):
         snl.history_rate(params="", name="Main")
     # Add new scenario
     snl.add(end_date="01Sep2020", name="New")
     snl.describe()
Exemplo n.º 6
0
 def test_analysis(self, jhu_data, population_data):
     scenario = Scenario(jhu_data, population_data, country="Italy")
     with pytest.raises(KeyError):
         scenario.simulate(name="Main", show_figure=False)
     with pytest.raises(ValueError):
         scenario.estimate(model=SIRF)
     # S-R trend analysis
     scenario.trend(show_figure=False)
     warnings.filterwarnings("ignore", category=UserWarning)
     scenario.trend(show_figure=True)
     # Parameter estimation of SIR-F model
     with pytest.raises(ValueError):
         scenario.param_history(targets=["Rt"], show_figure=False)
     with pytest.raises(ValueError):
         scenario.estimate(model=SIRF, tau=1440)
     scenario.estimate(model=SIRF)
     # History of estimation
     scenario.estimate_history(phase="1st")
     with pytest.raises(KeyError):
         scenario.estimate_history(phase="0th")
     # Accuracy of estimation
     scenario.estimate_accuracy(phase="1st")
     with pytest.raises(KeyError):
         scenario.estimate_accuracy(phase="0th")
     # Prediction
     scenario.add(name="Main", days=100)
     scenario.simulate(name="Main", show_figure=False)
     scenario.simulate(name="Main", show_figure=True)
     scenario.param_history(targets=["Rt"], show_figure=False)
     scenario.param_history(targets=["Rt"], divide_by_first=False)
     scenario.param_history(targets=["Rt"], show_box_plot=False)
     with pytest.raises(KeyError):
         scenario.param_history(targets=["Rt", "Value"])
     with pytest.raises(KeyError):
         scenario.param_history(targets=["Rt"], box_plot=False)
     # New scenario
     sigma_new = scenario.get("sigma", phase="last") * 2
     with pytest.raises(KeyError):
         scenario.get("value")
     warnings.filterwarnings("ignore", category=DeprecationWarning)
     scenario.add_phase(name="New medicines", days=100, sigma=sigma_new)
     # Summarize scenarios
     summary_df = scenario.summary()
     assert isinstance(summary_df, pd.DataFrame)
     desc_df = scenario.describe()
     assert isinstance(desc_df, pd.DataFrame)
     # Estimation errors
     with pytest.raises(TypeError):
         scenario.estimate(SIRF, phases="1st")
     with pytest.raises(KeyError):
         scenario.estimate(SIRF, phases=["100th"])