Exemple #1
0
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()
Exemple #2
0
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)
Exemple #3
0
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