示例#1
0
 def test_delete_phase(self, jhu_data, population_data, country):
     # Setting
     population = population_data.value(country)
     sr_df = jhu_data.to_sr(country=country, population=population)
     series = PhaseSeries("01Apr2020", "01Aug2020", population)
     series.trend(sr_df, show_figure=False)
     first_len = len(series)
     # Deletion of 0th phase is the same as disabling 0th phase
     series.delete("0th")
     series.enable("0th")
     assert len(series) == first_len
     assert "5th" in series.to_dict()
     # Delete phase (not the last registered phase)
     new_second = PhaseUnit(
         series.unit("2nd").start_date,
         series.unit("3rd").end_date,
         series.unit("2nd").population)
     series.delete("3rd")
     assert len(series) == first_len - 1
     assert series.unit("2nd") == new_second
     # Delete the last phase
     old_last = series.unit("last")
     series.delete("last")
     series.add()
     assert series.unit("last").start_date == old_last.start_date
 def test_trend(self, jhu_data, population_data, country):
     population = population_data.value(country)
     series = PhaseSeries("01Apr2020", "01Aug2020", population)
     # S-R trend analysis
     warnings.filterwarnings("ignore", category=DeprecationWarning)
     with pytest.raises(NotImplementedError):
         series.trend()
     with pytest.raises(NotImplementedError):
         series.trend_show()
 def test_class_as_dict(self, jhu_data, population_data, country):
     # Setting
     snl = Scenario(jhu_data, population_data, country)
     # Create a phase series
     population = population_data.value(country)
     sr_df = jhu_data.to_sr(country=country, population=population)
     series = PhaseSeries("01Apr2020", "01Aug2020", population)
     series.trend(sr_df, show_figure=False)
     # Add scenario
     snl["New"] = series
     # Get scenario
     assert snl["New"] == series
     assert len(snl["New"]) == len(series)
示例#4
0
 def test_trend(self, jhu_data, population_data, country):
     warnings.simplefilter("ignore", category=UserWarning)
     warnings.simplefilter("ignore", category=DeprecationWarning)
     # Setting
     population = population_data.value(country)
     sr_df = jhu_data.to_sr(country=country, population=population)
     series = PhaseSeries("01Apr2020", "01Aug2020", population)
     # S-R trend analysis
     series.trend(sr_df)
     series.trend_show(sr_df=sr_df, area=None, filename=None)
     # Un-registered phase
     with pytest.raises(KeyError):
         series.unit("100th")
示例#5
0
 def test_add_phase_with_model(self, jhu_data, population_data, country):
     # Setting
     population = population_data.value(country)
     sr_df = jhu_data.to_sr(country=country, population=population)
     series = PhaseSeries("01Apr2020", "01Aug2020", population)
     series.trend(sr_df, show_figure=False)
     # Add future phase with model and tau
     series.add(end_date="01Sep2020", model=SIR, tau=360)
     series.add(end_date="01Oct2020")
     assert series.to_dict()["7th"][Term.ODE] == SIR.NAME
     assert series.to_dict()["8th"][Term.TAU] == 360
     series.add(end_date="01Nov2020", rho=0.006)
     series.add(end_date="01Dec2020", sigma=0.011)
     assert series.to_dict()["10th"][Term.RT] == 0.55
     assert series.to_dict()["10th"]["1/beta [day]"] == 41
示例#6
0
 def test_replace(self, jhu_data, population_data, country):
     # Setting
     population = population_data.value(country)
     sr_df = jhu_data.to_sr(country=country, population=population)
     series = PhaseSeries("01Apr2020", "01Aug2020", population)
     series.trend(sr_df, show_figure=False)
     # Replace one old phase with one new phase
     unit_old = series.unit("2nd")
     unit_new = PhaseUnit(
         unit_old.start_date, unit_old.end_date, population
     )
     unit_new.set_ode(tau=360)
     series.replace("2nd", unit_new)
     assert series.unit("2nd") == unit_new
     # Replace one old phase with two new phases
     unit_old = series.unit("2nd")
     change_date = Term.date_change(unit_old.end_date, days=-7)
     unit_pre = PhaseUnit(
         unit_old.start_date, Term.yesterday(change_date), population)
     unit_pre.set_ode(tau=360)
     unit_fol = PhaseUnit(change_date, unit_old.end_date, population)
     unit_fol.set_ode(tau=360)
     series.replaces(phase="2nd", new_list=[unit_pre, unit_fol])
     print(series.unit("2nd"), unit_pre)
     assert series.unit("2nd") == unit_pre
     assert series.unit("3rd") == unit_fol
     # TypeError of new_list
     with pytest.raises(TypeError):
         series.replaces(phase="2nd", new_list=[unit_pre, Term])
     # ValueError with tense
     with pytest.raises(ValueError):
         future_unit = PhaseUnit("01Sep2020", "01Dec2020", population)
         series.replaces(phase="2nd", new_list=[future_unit])
     # Add phase without deletion of any phases
     new1 = PhaseUnit("02Aug2020", "01Sep2020", population)
     new2 = PhaseUnit("02Sep2020", "01Oct2020", population)
     series.replaces(phase=None, new_list=[new1, new2])
     assert series.unit("last") == new2
示例#7
0
 def test_trend(self, jhu_data, population_data, country):
     warnings.simplefilter("ignore", category=UserWarning)
     warnings.simplefilter("ignore", category=DeprecationWarning)
     # Setting
     population = population_data.value(country)
     sr_df = jhu_data.to_sr(country=country, population=population)
     series = PhaseSeries("01Apr2020", "01Aug2020", population)
     # Add a phase with specified end date
     series.add(end_date="22Apr2020")
     # S-R trend analysis
     series.trend(sr_df, set_phases=False, area=None)
     series.trend(sr_df, set_phases=False, area=None, show_figure=False)
     assert len(series) == 1
     assert set(series.to_dict()) == set(["0th"])
     # S-R trend analysis and set phases
     series.trend(sr_df)
     series.trend(sr_df, show_figure=False)
     # Un-registered phase
     with pytest.raises(KeyError):
         series.unit("100th")