def test_class_Modifier(): """tests to ensure the behaviour class Modifier""" test_model = Model('test_model') mod_time = Parameter('time', 5, parameter_type='int', parameter_min=0, parameter_max=1000) par_val = 0.3 par_0_val = 0.5 par_1_val = 0.7 parameter = Parameter('par', par_val) parameter_0 = Parameter('par_0', par_0_val) parameter_1 = Parameter('par_1', par_1_val) test_modifier = Modifier('test_modifier', 'rel_days', mod_time, parameter, parameter_0, parameter_1, model=test_model) test_model.add_transition(test_modifier) for time_step in [1., 1. / 4.]: test_model.set_time_step(time_step) parameter.reset() assert parameter.get_value() == par_val test_modifier.take_action() assert parameter.get_value() == par_1_val test_modifier.reset() assert parameter.get_value() == par_0_val assert np.abs(test_modifier.trigger_step - 5 / time_step) < 0.1
n_rt_visible = 4 times = [] alphas = [Parameter('alpha_0', 0.4, 0., 2., 'initial transmission rate', hidden=False)] for i in range(n_rate_transitions): j = i+1 hidden = j > n_rt_visible enabled = i==0 times.append(Parameter('trans_rate_'+str(j)+'_time', 20+i, 0, 600, 'day of trans rate change '+'str(j)', parameter_type='int', hidden=hidden)) alphas.append(Parameter('alpha_'+str(j), 0.1, 0., 2., 'alpha after transition '+str(j), hidden=hidden)) bc_model.add_transition( Modifier('trans_rate_'+str(j), 'rel_days', times[i], trans_rate, alphas[i], alphas[j], enabled=enabled, model=bc_model)) n_rate_transitions = 4 n_rt_visible = 0 times_v = [] alphas_v = [Parameter('alpha_0_v', 0.4, 0., 2., 'initial variant transmission rate', hidden=False)] for i in range(n_rate_transitions): j = i+1 hidden = j > n_rt_visible enabled = False times_v.append(Parameter('trans_rate_'+str(j)+'_time_v', 20+i, 0, 600, 'day of variant trans rate change '+'str(j)', parameter_type='int', hidden=hidden)) alphas_v.append(Parameter('alpha_'+str(j)+'_v', 0.1, 0., 2.,
'transmission rate after 5th transition') trans_rate_6 = Parameter('alpha_6', 0.1, 0., 2., 'transmission rate after 6th transition') trans_rate_7 = Parameter('alpha_7', 0.1, 0., 2., 'transmission rate after 7th transition') trans_rate_8 = Parameter('alpha_8', 0.1, 0., 2., 'transmission rate after 8th transition') bc_model.add_transition( Modifier('trans_rate_1', 'rel_days', trans_rate_1_time, trans_rate, trans_rate_0, trans_rate_1, enabled=True, model=bc_model)) bc_model.add_transition( Modifier('trans_rate_2', 'rel_days', trans_rate_2_time, trans_rate, trans_rate_1, trans_rate_2, enabled=False, model=bc_model)) bc_model.add_transition(
parameter_type='int', hidden=False) trans_rate_0 = Parameter('alpha_0', 0.385, 0., 2., 'initial transmission rate', hidden=False) trans_rate_1 = Parameter('alpha_1', 0.062, 0., 2., 'transmission rate after 1st transition', hidden=False) trans_rate_2 = Parameter('alpha_2', 0.062, 0., 2., 'transmission rate after 2nd transition', hidden=False) trans_rate_3 = Parameter('alpha_3', 0.062, 0., 2., 'transmission rate after 3nd transition', hidden=False) bc_model.add_transition( Modifier('trans_rate_1', 'rel_days', trans_rate_1_time, trans_rate, trans_rate_0, trans_rate_1, enabled=True, model=bc_model)) bc_model.add_transition( Modifier('trans_rate_2', 'rel_days', trans_rate_2_time, trans_rate, trans_rate_1, trans_rate_2, enabled=False, model=bc_model)) 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)
0., 2., 'transmission rate after 4th transition', hidden=False) trans_rate_5 = Parameter('alpha_5', 0.1, 0., 2., 'transmission rate after 5th transition') trans_rate_6 = Parameter('alpha_6', 0.1, 0., 2., 'transmission rate after 6th transition') bc_model.add_transition( Modifier('trans_rate_1', 'rel_days', trans_rate_1_time, trans_rate, trans_rate_0, trans_rate_1, enabled=True, model=bc_model)) bc_model.add_transition( Modifier('trans_rate_2', 'rel_days', trans_rate_2_time, trans_rate, trans_rate_1, trans_rate_2, enabled=False, model=bc_model)) bc_model.add_transition(
'transmission rate after 4th transition', hidden=False) trans_rate_5 = Parameter('alpha_5', 0.1, 0., 2., 'transmission rate after 5th transition') trans_rate_6 = Parameter('alpha_6', 0.1, 0., 2., 'transmission rate after 6th transition') trans_rate_7 = Parameter('alpha_7', 0.1, 0., 2., 'transmission rate after 7th transition') trans_rate_8 = Parameter('alpha_8', 0.1, 0., 2., 'transmission rate after 8th transition') bc_model.add_transition( Modifier('trans_rate_1', 'rel_days', trans_rate_1_time, trans_rate, trans_rate_0, trans_rate_1, enabled=True, model=bc_model)) bc_model.add_transition( Modifier('trans_rate_2', 'rel_days', trans_rate_2_time, trans_rate, trans_rate_1, trans_rate_2, enabled=False, model=bc_model)) 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)) bc_model.add_transition( Modifier('trans_rate_4', 'rel_days', trans_rate_4_time, trans_rate, trans_rate_3, trans_rate_4, enabled=False, model=bc_model)) bc_model.add_transition( Modifier('trans_rate_5', 'rel_days', trans_rate_5_time, trans_rate,
2., 'transmission rate after 2nd transition', hidden=False) trans_rate_3 = Parameter('alpha_3', 0.062, 0., 2., 'transmission rate after 3nd transition', hidden=False) bc_model.add_transition( Modifier('trans_rate_1', 'rel_days', trans_rate_1_time, trans_rate, trans_rate_0, trans_rate_1, enabled=True, model=bc_model)) bc_model.add_transition( Modifier('trans_rate_2', 'rel_days', trans_rate_2_time, trans_rate, trans_rate_1, trans_rate_2, enabled=False, model=bc_model)) bc_model.add_transition(
600, 'day of trans rate change ' + 'str(j)', parameter_type='int', hidden=hidden)) alphas.append( Parameter('alpha_' + str(j), 0.1, 0., 2., 'alpha after transition ' + str(j), hidden=hidden)) bc_model.add_transition( Modifier('trans_rate_' + str(j), 'rel_days', times[i], trans_rate, alphas[i], alphas[j], enabled=enabled, model=bc_model)) trans_traced_1_time = Parameter( 'trans_trace_1_time', 100, 0, 600, 'number of days before contact traced fraction changes', parameter_type='int', hidden=False) trans_traced_0 = Parameter('trans_traced_0', 0., 0., 1., 'initial contact traced fraction')