def run_model(param_updates, n_steps=200, lockdown_at=None): params = setup_params(param_updates) # Create an instance of the Model model = Model(params) m_out = [] for step in trange(n_steps): # Evaluate each step and save the results model.one_time_step() # LOGGER.info( # model.one_time_step_results() # ) # If we want to see the results as we go uncomment this block m_out.append(model.one_time_step_results()) if lockdown_at: if step == lockdown_at: model.update_running_params("lockdown_on", 1) LOGGER.info(f"turning on lock down at step {step}") LOGGER.info( f'lockdown_house_interaction_multiplier = {params.get_param("lockdown_house_interaction_multiplier")}' ) LOGGER.info( f'lockdown_random_network_multiplier = {params.get_param("lockdown_random_network_multiplier")}' ) for oc_net in OccupationNetworkEnum: LOGGER.info( f'lockdown_occupation_multiplier{oc_net.name} = {params.get_param(f"lockdown_occupation_multiplier{oc_net.name}")}' ) df = pd.DataFrame(m_out) model.write_output_files() return df
def test_set_params_occupation_network_by_age_check_used(self): p = Parameters( read_param_file=True, input_households="tests/data/baseline_household_demographics.csv", input_param_file="tests/data/baseline_parameters.csv", param_line_number=1, ) model = Model(p) non_scaled = [ model.get_param(f"daily_fraction_work_used{age.name}") for age in OccupationNetworkEnum ] model.update_running_params("lockdown_on", 1) scaled = [ model.get_param(f"daily_fraction_work_used{age.name}") for age in OccupationNetworkEnum ] for non_scaled_i, scaled_i in zip(non_scaled, scaled): assert non_scaled_i * 0.2 == scaled_i model.update_running_params( "lockdown_occupation_multiplier_primary_network", 10.0) scaled = [ model.get_param(f"daily_fraction_work_used{age.name}") for age in OccupationNetworkEnum ] for non_scaled_i, scaled_i, factor in zip(non_scaled, scaled, [ 10.0, 0.2, 0.2, 0.2, 0.2, ]): assert non_scaled_i * factor == scaled_i
def test_set_params_manual_traceable_fraction(self): p = Parameters( read_param_file=True, input_households="tests/data/baseline_household_demographics.csv", input_param_file="tests/data/baseline_parameters.csv", param_line_number=1, ) p.set_param("manual_traceable_fraction_occupation", 0.8) assert p.get_param("manual_traceable_fraction_occupation") == 0.8 p.set_param("manual_traceable_fraction_household", 0.6) assert p.get_param("manual_traceable_fraction_household") == 0.6 assert p.get_param("manual_traceable_fraction_occupation") == 0.8 model = Model(p) model.update_running_params("manual_traceable_fraction_household", 0.4) assert model.get_param("manual_traceable_fraction_household") == 0.4