def test_parameters_quick_draw(): config.set_file(f"{DATA_DIR}/parameters_only.yml") date_range = pd.date_range("2020-01-30", "2020-02-01") dt = 0.25 nt_inter = int((len(date_range) - 1) * (1 / dt)) + 1 nnodes = 200 npi = pd.DataFrame(0.0, index=date_range, columns=range(nnodes)) alpha, beta, sigma, gamma = setup.parameters_quick_draw( config, nt_inter, nnodes) assert alpha.shape == (nt_inter, nnodes) assert (alpha == 0.5).all() assert beta.shape == (nt_inter, nnodes) assert (len(np.unique(beta)) == 1) assert (((1 / 6. * 2) <= beta) & (beta <= (1. / 2.6 * 3))).all() assert sigma.shape == (nt_inter, nnodes) assert (sigma == config["sigma"].as_evaled_expression()).all() assert gamma.shape == (nt_inter, nnodes) assert (len(np.unique(gamma)) == 1) assert (((setup.n_Icomp * (1. / 6)) <= gamma) & (gamma <= (setup.n_Icomp * (1 / 2.6)))).all()
def test_constant_population(): config.set_file(f"{DATA_DIR}/config.yml") ss = setup.SpatialSetup(setup_name="test_seir", geodata_file=f"{DATA_DIR}/geodata.csv", mobility_file=f"{DATA_DIR}/mobility.txt", popnodes_key="population", nodenames_key="geoid") s = setup.Setup(setup_name="test_seir", spatial_setup=ss, nsim=1, npi_scenario="None", npi_config=config["interventions"]["settings"]["None"], ti=config["start_date"].as_date(), tf=config["end_date"].as_date(), interactive=True, write_csv=False, dt=0.25) seeding = np.zeros((len(s.t_inter), s.nnodes)) mobility_geoid_indices = s.mobility.indices mobility_data_indices = s.mobility.indptr mobility_data = s.mobility.data npi = NPI.NPIBase.execute(npi_config=s.npi_config, global_config=config, geoids=s.spatset.nodenames) parameters = setup.parameters_quick_draw(config["seir"]["parameters"], len(s.t_inter), s.nnodes) parameters = setup.parameters_reduce(parameters, npi, s.dt) states = seir.steps_SEIR_nb(*parameters, seeding, s.dt, s.t_inter, s.nnodes, s.popnodes, mobility_geoid_indices, mobility_data_indices, mobility_data, s.dynfilter) completepop = s.popnodes.sum() origpop = s.popnodes for it in range(len(s.t_inter)): totalpop = 0 for i in range(s.nnodes): totalpop += states[:5, i, it].sum() #Sum of S, E, I#, R for the geoid that is 'i' assert (origpop[i] == states[:5, i, it].sum()) assert (completepop == totalpop)
def test_steps_SEIR_no_spread(): config.set_file(f"{DATA_DIR}/config.yml") ss = setup.SpatialSetup(setup_name="test_seir", geodata_file=f"{DATA_DIR}/geodata.csv", mobility_file=f"{DATA_DIR}/mobility.txt", popnodes_key="population", nodenames_key="geoid") s = setup.Setup(setup_name="test_seir", spatial_setup=ss, nsim=1, npi_scenario="None", npi_config=config["interventions"]["settings"]["None"], ti=config["start_date"].as_date(), tf=config["end_date"].as_date(), interactive=True, write_csv=False, dt=0.25) seeding = np.zeros((len(s.t_inter), s.nnodes)) seeding[:, 0] = 100 mobility_geoid_indices = s.mobility.indices mobility_data_indices = s.mobility.indptr mobility_data = s.mobility.data * 0 npi = NPI.NPIBase.execute(npi_config=s.npi_config, global_config=config, geoids=s.spatset.nodenames) parameters = setup.parameters_quick_draw(config["seir"]["parameters"], len(s.t_inter), s.nnodes) parameters = setup.parameters_reduce(parameters, npi, s.dt) for i in range(100): states = seir.steps_SEIR_nb(*parameters, seeding, s.dt, s.t_inter, s.nnodes, s.popnodes, mobility_geoid_indices, mobility_data_indices, mobility_data, s.dynfilter) assert states[seir.cumI][1].max() == 0