def test_add_phase(self, jhu_data, population_data, country): # Setting population = population_data.value(country) series = PhaseSeries("01Apr2020", "01Aug2020", population) # Last phase when empty empty_phase = PhaseUnit("31Mar2020", "31Mar2020", population) assert series.unit(phase="last") == empty_phase # Add a phase with specified end date: 0th series.add(end_date="22Apr2020") # Add a phase with specified population value: 1st with pytest.raises(ValueError): series.add(end_date="22Apr2020") series.add(end_date="05May2020", population=int(population * 0.98)) # Add a phase with specified the number of days: 2nd series.add(days=21) # Filling past phases and add a future phase: 3rd, 4th series.add(end_date="01Sep2020") # Add a future phase: 5th series.add(days=30) # Summary df = series.summary() base_cols = [Term.TENSE, Term.START, Term.END, Term.N] assert set(df.columns) == set(base_cols) assert series.to_dict()["0th"]["Type"] == Term.PAST first_len = len(df) assert set(df.loc["3rd", :].tolist()) == set( [Term.PAST, "27May2020", "01Aug2020", 123998518]) assert set(df.loc["4th", :].tolist()) == set( [Term.FUTURE, "02Aug2020", "01Sep2020", 123998518]) # Disable/enable a phase series.disable("0th") assert "0th" not in series.to_dict() assert len(series) == first_len - 1 assert len([unit for unit in series]) == first_len assert len([unit for unit in series if unit]) == first_len - 1 series.enable("0th") assert "0th" in series.to_dict() assert len(series) == first_len # Clear future phases: 4th and 5th will be deleted series.clear(include_past=False) assert "4th" not in series.to_dict() assert len(series) == first_len - 2 assert series # Clear all phases series.clear(include_past=True) assert len(series) == 0 assert not series # Filling past phases: 0th series.add() assert len(series) == 1 # Last phase assert series.unit(phase="last")
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
def test_add_phase_with_model(self, jhu_data, population_data, country): # Setting population = population_data.value(country) series = PhaseSeries("01Apr2020", "01Aug2020", population) series.add() # Add future phase with model and tau series.add(end_date="01Sep2020", model=SIR, tau=360) series.add(end_date="01Oct2020") length = len(series) assert series.to_dict()[Term.num2str(length - 2)][Term.ODE] == SIR.NAME assert series.to_dict()[Term.num2str(length - 1)][Term.TAU] == 360 series.add(end_date="01Nov2020", rho=0.006) series.add(end_date="01Dec2020", sigma=0.011) assert series.to_dict()[Term.num2str(length + 1)][Term.RT] == 0.55 assert series.to_dict()[Term.num2str(length + 1)]["1/beta [day]"] == 41
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): 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")