def chain_binomial_monte_carlo(beta, gamma, num_sims, num_metro_zeros, num_child_zeros, num_adult_zeros): # run many (num_sims) instances of chain binomial simulation and return average epidemic size #d_metropop, metro_ids = pop_func.import_metropop(filename_metropop, 2, 3) population_size = sum([d_metropop[x] for x in metro_ids]) threshold = 0.10 # 10% of population size is our threshold for a large epidemic d_metro_age_pop = pop_func.calc_metro_age_pop(filename_metropop, alpha) large_epidemic_sizes= [] # will keep list of outbreak sizes that are large epidemics for sim in range(1,num_sims): incidence_time_series, outbreak_size = chain_binomial_one_simulation(d_metro_age_pop, metro_ids, beta, gamma, air_network, num_metro_zeros, num_child_zeros, num_adult_zeros, C) # Note we are not using the incidence time series right now # figure out if this is small outbreak or large epidemic if outbreak_size > threshold * population_size: # if outbreak reached more than 10% of the population # call it a large epidemic and save its size large_epidemic_sizes.append(outbreak_size) # calculate average large epidemic size, and how frequent they were if large_epidemic_sizes: average_epidemic_size = np.mean(large_epidemic_sizes)/float(population_size) probability_epidemic = len(large_epidemic_sizes)/float(num_sims) else: average_epidemic_size = 0 probability_epidemic = 0 return average_epidemic_size
dict_popdata, ages, years = pop_func.import_popdata(us_popdata, 0, 1, 2) dict_childpop, dict_adultpop = pop_func.pop_child_adult (dict_popdata, years) # READ Germany contact data #filename_germ_contact_data = 'Dropbox/Anne_Bansal_lab/Contact_Data/polymod_germany_contact_matrix_Mossong_2008.csv' filename_germ_within_group_contact_data = 'Dropbox/Anne_Bansal_lab/Contact_Data/within_group_polymod_germany_contact_matrix_Mossong_2008.csv' filename_germ_all_contact_data = 'Dropbox/Anne_Bansal_lab/Contact_Data/all_ages_polymod_germany_contact_matrix_Mossong_2008.csv' # READ Germany population data filename_germ_pop_data = 'Dropbox/Anne_Bansal_lab/UNdata_Export_2008_Germany_Population.csv' # DEFINE POPULATION PARAMETERS year = 2010 alpha = pop_func.calc_alpha(year, dict_childpop, dict_adultpop) d_metro_age_pop = pop_func.calc_metro_age_pop(filename_metropop, alpha) ch_travelers_r = 0.0 # fraction of children who travel ad_travelers_s = 1 # CONTACT MATRIX q_c, q_a, p_c, p_a, _, _ = pop_func.calc_p(filename_germ_within_group_contact_data, filename_germ_pop_data, filename_germ_all_contact_data) C = pop_func.calc_contact_matrix_pqa(p_c, p_a, q_c, q_a, alpha) #print C # DEFINE DISEASE PARAMETERS R0 = 1.2 gamma = 0.5 # recovery rate based on (1/gamma) day infectious period ### UNIT TEST ### unit_test = 'no_trans' # NO TRANSMISSION # #BETA = 0