def test_class_Injector(): """tests to ensure the behaviour class Injector""" test_model = Model('test_model') number = 50. inject = Parameter('inject', number, parameter_min=0., parameter_max=1000.) time = 5 trans_time = Parameter('time', time, parameter_type='int', parameter_min=0, parameter_max=1000) to_pop = Population('to_pop', 0) test_injector = Injector('injector', 'rel_days', trans_time, to_pop, inject, model=test_model) test_model.add_transition(test_injector) for time_step in [1., 1. / 4.]: test_model.set_time_step(time_step) to_pop.reset() test_injector.take_action() assert to_pop.future[0] == number assert np.abs(test_injector.trigger_step - time / time_step) < 0.1
Modifier('trans_traced_1', 'rel_days', trans_traced_1_time, contact_traced_fraction, trans_traced_0, trans_traced_1, enabled=False, model=bc_model)) # vaccination start n_vacc_periods = 6 for i in range(n_vacc_periods): j = i+1 vaccination_time = Parameter('vacc_time_'+str(j), 75+i, 0, 600, 'first day of vaccination period '+str(j), parameter_type='int') vaccination_number = Parameter('vacc_number_'+str(j), 10., 0., 5000000., 'change in number vaccinated each day for period '+str(j)) bc_model.add_transition( Injector('vaccination_'+str(j), 'rel_days', vaccination_time, daily_vaccinated_pop, vaccination_number, enabled=False, model=bc_model)) # outbreaks outbreak_pop = Population('outbreaks', 0, 'Infection outbreaks') outbreak_1_time = Parameter('outbreak_1_time', 14, 0, 600, 'number of days since t0 when outbreak_1 established', parameter_type='int', hidden=False) outbreak_1_number = Parameter('outbreak_1_number', 10., 0., 50000., 'number of infections in outbreak_1', hidden=False) bc_model.add_transition(
Modifier('trans_rate_3', 'rel_days', trans_rate_3_time, trans_rate, trans_rate_2, trans_rate_3, enabled=False, model=bc_model)) outbreak_pop = Population('outbreaks', 0, 'Infection outbreaks') outbreak_1_time = Parameter('outbreak_1_time', 14, 0, 100, 'number of days since t0 when outbreak_1 established', parameter_type='int', hidden=False) outbreak_1_number = Parameter('outbreak_1_number', 10., 0., 50000., 'number of infections in outbreak_1', hidden=False) bc_model.add_transition( Injector('outbreak_1', 'rel_days', outbreak_1_time, outbreak_pop, outbreak_1_number, enabled=False, model=bc_model)) outbreak_fraction = Parameter('outbreak_frac', 1., 0., 1., 'fraction of infected in outbreak active ==1') outbreak_delay_pars = { 'mean': Parameter('outbreak_delay_mean', 7., 0., 50., 'mean delay time for outbreak', hidden=False), 'sigma': Parameter('outbreak_delay_sigma', 1., 0.01, 20., 'standard deviation of outbreak times', hidden=False) } outbreak_delay = Delay('outbreak_delay', 'norm', outbreak_delay_pars, bc_model) bc_model.add_connector( Propagator('outbreaks to infected', outbreak_pop, infected_pop, outbreak_fraction, outbreak_delay))
'number of days since t0 when outbreak_1 established', parameter_type='int', hidden=False) outbreak_1_number = Parameter('outbreak_1_number', 10., 0., 50000., 'number of infections in outbreak_1', hidden=False) bc_model.add_transition( Injector('outbreak_1', 'rel_days', outbreak_1_time, outbreak_pop, outbreak_1_number, enabled=False, model=bc_model)) outbreak_fraction = Parameter('outbreak_frac', 1., 0., 1., 'fraction of infected in outbreak active ==1') outbreak_delay_pars = { 'mean': Parameter('outbreak_delay_mean', 7., 0., 50., 'mean delay time for outbreak', hidden=False), 'sigma':