spec['det_model']['constant'] = 0.2 model_input = ModelInput(spec) # List of observed household compositions composition_list = read_csv('inputs/uk_composition_list.csv', header=None).to_numpy() # Proportion of households which are in each composition comp_dist = read_csv('inputs/uk_composition_dist.csv', header=None).to_numpy().squeeze() # With the parameters chosen, we calculate Q_int: Q_int, states, which_composition, \ system_sizes, cum_sizes, \ inf_event_row, inf_event_col \ = build_household_population(composition_list, model_input) rhs = RateEquations(model_input, Q_int, composition_list, which_composition, states, inf_event_row, inf_event_col) fully_sus = where(rhs.states_sus_only.sum(axis=1) == states.sum(axis=1))[0] i_is_one = where((rhs.states_det_only + rhs.states_undet_only).sum(axis=1) == 1)[0] H = zeros(len(which_composition)) # Assign probability of 1e-5 to each member of each composition being sole infectious person in hh H[i_is_one] = (1e-5) * comp_dist[which_composition[i_is_one]] # Assign rest of probability to there being no infection in the household H[fully_sus] = (1 - 1e-5 * sum(comp_dist[which_composition[i_is_one]])) * comp_dist Q_ext_det, Q_ext_undet = rhs.external_matrices(H)
from os.path import isfile if isfile('vars.pkl') is True: with open('vars.pkl', 'rb') as f: Q_int, states, which_composition, \ system_sizes, cum_sizes, \ inf_event_row, inf_event_col \ = load(f) else: # With the parameters chosen, we calculate Q_int: Q_int, states, which_composition, \ system_sizes, cum_sizes, \ inf_event_row, inf_event_col \ = build_household_population( composition_list, params['sigma'], params['det'], params['tau'], params['k_home'], params['alpha'], params['gamma']) with open('vars.pkl', 'wb') as f: dump((Q_int, states, which_composition, system_sizes, cum_sizes, inf_event_row, inf_event_col), f) total_size = len(which_composition) # To define external mixing we need to set up the transmission matrices: det_trans_matrix = diag(params['sigma']).dot( params['k_ext']) # Scale rows of contact matrix by # age-specific susceptibilities # Scale columns by asymptomatic reduction in transmission undet_trans_matrix = diag(params['sigma']).dot(params['k_ext'].dot(