def test_species_params(self): self.assertEqual( vs.get_species_param(self.cb, 'arabiensis', 'Immature_Duration'), 2) vs.set_species_param(self.cb, 'arabiensis', 'Egg_Batch_Size', 123) self.assertEqual( vs.get_species_param(self.cb, 'arabiensis', 'Egg_Batch_Size'), 123) vs.set_larval_habitat( self.cb, {'arabiensis': { 'TEMPORARY_RAINFALL': 123, 'CONSTANT': 456 }}) self.assertDictEqual( vs.get_species_param(self.cb, 'arabiensis', 'Larval_Habitat_Types'), { 'TEMPORARY_RAINFALL': 123, 'CONSTANT': 456 }) vs.scale_all_habitats(self.cb, 2) self.assertDictEqual( vs.get_species_param(self.cb, 'arabiensis', 'Larval_Habitat_Types'), { 'TEMPORARY_RAINFALL': 246, 'CONSTANT': 912 }) funestus_habitat = vs.get_species_param( self.cb, 'funestus', 'Larval_Habitat_Types')['WATER_VEGETATION'] self.assertEqual(funestus_habitat, 4e7)
def set_ento(cb, a_sc, f_sc, arab_times, arab_spline, funest_times, funest_spline): hab = { 'arabiensis': { "LINEAR_SPLINE": { "Capacity_Distribution_Number_Of_Years": int(len(arab_times) / 12), "Capacity_Distribution_Over_Time": { "Times": arab_times, "Values": arab_spline }, "Max_Larval_Capacity": pow(10, a_sc) } }, 'funestus': { "LINEAR_SPLINE": { "Capacity_Distribution_Number_Of_Years": int(len(funest_times) / 12), "Capacity_Distribution_Over_Time": { "Times": funest_times, "Values": funest_spline }, "Max_Larval_Capacity": pow(10, f_sc) } } } set_larval_habitat(cb, hab)
def map_sample_to_model_input(cb, sample): hab = { 'gambiae': { 'TEMPORARY_RAINFALL': 1.5e8 * sample["Temporary_Habitat"], 'CONSTANT': 5.5e6 * sample["Constant_Habitat"] } } set_larval_habitat(cb, hab) return sample
def map_sample_to_model_input(cb, sample): tags = {} for species in specs: # Updating Spline values hab = { species: { hab_type[species]: hab_val[species], "LINEAR_SPLINE": { "Capacity_Distribution_Per_Year": { "Times": [ 0.0, 30.417, 60.833, 91.25, 121.667, 152.083, 182.5, 212.917, 243.333, 273.75, 304.167, 334.583 ], "Values": [ 0.0, 0.0, 0.0, 0.0, 0.2, 1.0, 1.0, 1.0, 0.5, 0.2, 0.0, 0.0 ] }, "Max_Larval_Capacity": 1e8 } } } for i in range(1, 13): name = '%s%i' % (species, i) if name in sample: splinevalue = sample.pop(name) hab[species]['LINEAR_SPLINE'][ 'Capacity_Distribution_Per_Year']['Values'][ i - 1] = splinevalue tags.update({name: splinevalue}) # Updating max habitat values max_habitat_name = '%s_max' % species if max_habitat_name in sample: maxvalue = sample.pop(max_habitat_name) hab[species]['LINEAR_SPLINE']['Max_Larval_Capacity'] = pow( 10, maxvalue) tags.update({max_habitat_name: maxvalue}) set_larval_habitat(cb, hab) for name, value in sample.items(): print('UNUSED PARAMETER:' + name) assert (len(sample) == 0) # All params used # For testing only, the duration should be handled by the site !! Please remove before running in prod! tags.update(cb.set_param("Simulation_Duration", 2 * 365)) tags.update(cb.set_param('Run_Number', 0)) return tags
def set_habs_scale(cb, value=None): temp_h = value[0] const_h = value[1] hab = { 'gambiae': { 'TEMPORARY_RAINFALL': 1.5e8 * temp_h, 'CONSTANT': 5.5e6 * const_h } } set_larval_habitat(cb, hab) return {'temp_h': temp_h, 'const_h': const_h}
def map_sample_to_model_input(cb, sample): tags = {} if 'arabiensis_scale' in sample: a_sc = sample.pop('arabiensis_scale') hab = {'arabiensis': {'TEMPORARY_RAINFALL': 1e8 * a_sc, 'CONSTANT': 2e6}} set_larval_habitat(cb, hab) tags.update({'arabiensis_scale': a_sc}) if 'funestus_scale' in sample: f_sc = sample.pop('funestus_scale') hab = {'funestus': { "WATER_VEGETATION": 2e7, "LINEAR_SPLINE": { "Capacity_Distribution_Per_Year": { "Times": [0.0, 30.417, 60.833, 91.25, 121.667, 152.083, 182.5, 212.917, 243.333, 273.75, 304.167, 334.583], "Values": [0.0, 0.0, 0.0, 0.0, 0.2, 1.0, 1.0, 1.0, 0.5, 0.2, 0.0, 0.0] }, "Max_Larval_Capacity": 1e8 * f_sc } } } set_larval_habitat(cb, hab) tags.update({'funestus_scale': f_sc}) for name, value in sample.iteritems(): print 'UNUSED PARAMETER:', name assert (len(sample) == 0) # All params used # Run for 10 years with a random random number seed cb.set_param('Simulation_Duration', 3650) # 10*365 cb.set_param('Vector_Species_Names', ["arabiensis", "funestus"]) tags.update(cb.set_param('Run_Number', random.randint(0, 1e6))) return tags '''
def map_sample_to_model_input(cb, sample): tags = {} hab = copy.copy(ls_hab_ref) timepoints = sorted([int(x.split('_')[1]) for x in sample.keys() if ('max' not in x and 'Multiplier' not in x)]) dates = [365*throwaway + (x-1)*365/12 for x in timepoints] + [365*(duration + throwaway)-1] hab['Capacity_Distribution_Over_Time']['Times'] = [0] + dates hab['Capacity_Distribution_Over_Time']['Values'] = [0.01]*len(hab['Capacity_Distribution_Over_Time']['Times']) for mindex, month in enumerate(timepoints) : name = '%s_%i' %(species, month) if name in sample: splinevalue = sample.pop(name) hab['Capacity_Distribution_Over_Time']['Values'][mindex+1] = splinevalue tags.update({name: splinevalue}) # Updating max habitat values max_habitat_name = '%s_max' % species if max_habitat_name in sample: maxvalue = sample.pop(max_habitat_name) hab['Max_Larval_Capacity'] = pow(10, maxvalue) tags.update({max_habitat_name: maxvalue}) name = '%s.Multiplier' % hfca if name in sample : catchment_mult = sample[name] tags.update(cb.set_param(name, catchment_mult)) set_larval_habitat(cb, { species : {'LINEAR_SPLINE' : hab}}) # for name,value in sample.items(): # print('UNUSED PARAMETER:'+name) # assert( len(sample) == 0 ) # All params used # For testing only, the duration should be handled by the site !! Please remove before running in prod! tags.update(cb.set_param("Simulation_Duration", (throwaway+duration)*365)) tags.update(cb.set_param('Run_Number', 0)) return tags
def map_sample_to_model_input(cb, catch, sample): a_sc = sample['arabiensis_scale'] f_sc = sample['funestus_scale'] arab_times, arab_spline = catch_3_yr_spline(catch, "gambiae") funest_times, funest_spline = catch_3_yr_spline(catch, "funestus") hab = { 'arabiensis': { "LINEAR_SPLINE": { "Capacity_Distribution_Number_Of_Years": 3, "Capacity_Distribution_Over_Time": { # "Capacity_Distribution_Per_Year": { "Times": arab_times, "Values": arab_spline }, "Max_Larval_Capacity": pow(10, a_sc) } }, 'funestus': { "LINEAR_SPLINE": { "Capacity_Distribution_Number_Of_Years": 3, "Capacity_Distribution_Over_Time": { # "Capacity_Distribution_Per_Year": { "Times": funest_times, "Values": funest_spline }, "Max_Larval_Capacity": pow(10, f_sc) # "Max_Larval_Capacity": pow(10,a_sc)/arab_funest_ratio } } } set_larval_habitat(cb, hab) return {"arab": a_sc, "funest": f_sc}
def __call__(self, cb): return set_larval_habitat(cb, {self.species: self.habitats})
def map_sample_to_model_input(cb, sample): sim_time_dict = serialization_setup(cb, calib_stage) add_interventions_and_reports(cb, sim_time_dict) dd = best_run_so_far() # ===================================================================================== # Global habitats if calib_stage == 1 or calib_stage == 2: a_sc = sample['arabiensis_scale'] f_sc = sample['funestus_scale'] if calib_stage == 1: # LOAD FROM SPLINE: arab_times, arab_spline = MozambiqueExperiment.catch_3_yr_spline( catch, "gambiae") funest_times, funest_spline = MozambiqueExperiment.catch_3_yr_spline( catch, "funestus") hab = { 'arabiensis': { "LINEAR_SPLINE": { "Capacity_Distribution_Number_Of_Years": 3, "Capacity_Distribution_Over_Time": { # "Capacity_Distribution_Per_Year": { "Times": arab_times, "Values": arab_spline }, "Max_Larval_Capacity": pow(10, a_sc) } }, 'funestus': { "LINEAR_SPLINE": { "Capacity_Distribution_Number_Of_Years": 3, "Capacity_Distribution_Over_Time": { # "Capacity_Distribution_Per_Year": { "Times": funest_times, "Values": funest_spline }, "Max_Larval_Capacity": pow(10, f_sc) # "Max_Larval_Capacity": pow(10,a_sc)/arab_funest_ratio } } } set_larval_habitat(cb, hab) elif calib_stage >= 2: arab_rescale = pow(10, a_sc) / pow(10, dd['a_sc_burnin']) funest_rescale = pow(10, f_sc) / pow(10, dd['f_sc_burnin']) if calib_stage == 2: scale_larval_habitats(cb, pd.DataFrame({ 'LINEAR_SPLINE.arabiensis': [arab_rescale], 'LINEAR_SPLINE.funestus': [funest_rescale] }), start_day=0) elif calib_stage == 3: for bairro_num in bairro_df["bairro"].unique(): scale_larval_habs_for_bairro( cb, bairro_num, bairro_df, arab_rescale * sample['b{}_vector_mult'.format(int(bairro_num))], funest_rescale * sample['b{}_vector_mult'.format(int(bairro_num))], start_day=0) # FOR TESTING ONLY: if mode == 'fast': cb.set_param('x_Temporary_Larval_Habitat', 0) cb.set_param('x_Regional_Migration', 0) return sample
def map_sample_to_model_input(cb, sample): tags = {} if 'gambiae_scale_dry' in sample and 'gambiae_scale_wet' in sample: g_sc_dry = sample.pop('gambiae_scale_dry') g_sc_wet = sample.pop('gambiae_scale_wet') seasonal_TSI = np.zeros(12) seasonal_TSI[np.array(list(wet_profile.keys()))] = g_sc_wet * np.array( list(wet_profile.values())) seasonal_TSI[np.array(list(dry_profile.keys()))] = g_sc_dry * np.array( list(dry_profile.values())) hab = { 'gambiae': { 'CONSTANT': 2e6, "LINEAR_SPLINE": { "Capacity_Distribution_Per_Year": { "Times": [ 0.0, 30.417, 60.833, 91.25, 121.667, 152.083, 182.5, 212.917, 243.333, 273.75, 304.167, 334.583 ], "Values": list(seasonal_TSI) }, "Max_Larval_Capacity": 1e8 } } } set_larval_habitat(cb, hab) tags.update({ 'gambiae_scale_dry': g_sc_dry, 'gambiae_scale_wet': g_sc_wet }) if 'funestus_scale_dry' in sample and 'funestus_scale_wet' in sample: f_sc_dry = sample.pop('funestus_scale_dry') f_sc_wet = sample.pop('funestus_scale_wet') seasonal_TSI = np.zeros(12) seasonal_TSI[np.array(list(wet_profile.keys()))] = f_sc_wet * np.array( list(wet_profile.values())) seasonal_TSI[np.array(list(dry_profile.keys()))] = f_sc_dry * np.array( list(dry_profile.values())) hab = { 'funestus': { "WATER_VEGETATION": 2e7, "LINEAR_SPLINE": { "Capacity_Distribution_Per_Year": { "Times": [ 0.0, 30.417, 60.833, 91.25, 121.667, 152.083, 182.5, 212.917, 243.333, 273.75, 304.167, 334.583 ], "Values": list(seasonal_TSI) }, "Max_Larval_Capacity": 1e8 } } } set_larval_habitat(cb, hab) tags.update({ 'funestus_scale_dry': f_sc_dry, 'funestus_scale_wet': f_sc_wet }) for name, value in sample.items(): print('UNUSED PARAMETER:', name) assert (len(sample) == 0) # All params used return tags
'Capacity_Distribution_Number_Of_Years': 1, 'Capacity_Distribution_Over_Time': { 'Times': [ 0, 30.4166666666667, 60.8333333333333, 91.25, 121.6666666666667, 152.0833333333334, 182.5, 213.9166666666666, 243.3333333333334, 273.75, 304.5833333333333, 335 ], 'Values': [ 0.001, 0.001236706, 0.001933152, 0.056693638, 0.057953358, 0.015, 0.95, 2.159928736, 3.205076212, 0.43290933, 0.391090655, 0.138816133 ] }, 'Max_Larval_Capacity': 2.75e7 } set_larval_habitat(cb, {species: {'LINEAR_SPLINE': hab}}) recurring_outbreak(cb, outbreak_fraction=0.01, start_day=152, repetitions=years, tsteps_btwn=365) def atsb_fn(cb, killing, startDay): # Start of June in Mali start_day = startDay + 152 add_ATSB(cb, start=start_day,
def map_sample_to_model_input(cb, sample): sim_time_dict = serialization_setup(cb) add_interventions_and_reports(cb, sim_time_dict) dd = best_run_so_far() # ===================================================================================== # Global habitats a_sc = sample['arabiensis_scale'] f_sc = sample['funestus_scale'] # LOAD FROM SPLINE: spline_base = "C:/Users/jsuresh/Dropbox (IDM)/Malaria Team Folder/projects/Mozambique/entomology_calibration/" [times, funest_spline] = magude_3_yr_spline(os.path.join(spline_base, 'Multi_year_calibration_by_HFCA_180608/minicsv/Three_funestus_LifeAdj_rank0.csv')) if catch == "Magude-Sede-Facazissa": [times, arab_spline] = magude_3_yr_spline(os.path.join(spline_base, 'Multi_year_calibration_by_HFCA_180608/minicsv/Magude-Sede_gambiae_LifeAdj_rank0.csv')) elif catch == "Chichuco": [times, arab_spline] = magude_3_yr_spline(os.path.join(spline_base, 'Multi_year_calibration_by_HFCA_180808/minicsv/Chichuco_gambiae_frankenspline.csv')) elif catch == "Chicutso": [times, arab_spline] = magude_3_yr_spline(os.path.join(spline_base, 'Multi_year_calibration_by_HFCA_180808/minicsv/Chicutso_gambiae_frankenspline.csv')) elif catch == "Mapulanguene": [times, arab_spline] = magude_3_yr_spline(os.path.join(spline_base, 'Multi_year_calibration_by_HFCA_180808/minicsv/Mapulanguene_gambiae_frankenspline.csv')) elif catch == "Motaze": [times, arab_spline] = magude_3_yr_spline(os.path.join(spline_base, 'Multi_year_calibration_by_HFCA_180808/minicsv/Motaze_gambiae_frankenspline.csv')) elif catch == "Panjane-Caputine": [times, arab_spline] = magude_3_yr_spline(os.path.join(spline_base, 'Multi_year_calibration_by_HFCA_180808/minicsv/Panjane_gambiae_frankenspline.csv')) elif catch == "Moine" or catch == "Mahel": [times, arab_spline_pc] = magude_3_yr_spline(os.path.join(spline_base, 'Multi_year_calibration_by_HFCA_180808/minicsv/Panjane_gambiae_frankenspline.csv')) [times, arab_spline_ch] = magude_3_yr_spline(os.path.join(spline_base, 'Multi_year_calibration_by_HFCA_180808/minicsv/Chichuco_gambiae_frankenspline.csv')) arab_spline = list((np.array(arab_spline_pc) + np.array(arab_spline_ch))/2.) hab = { 'arabiensis': { "LINEAR_SPLINE": { "Capacity_Distribution_Number_Of_Years": 3, "Capacity_Distribution_Over_Time": { # "Capacity_Distribution_Per_Year": { "Times": times, "Values": arab_spline }, "Max_Larval_Capacity": pow(10,a_sc) } }, 'funestus': { "LINEAR_SPLINE": { "Capacity_Distribution_Number_Of_Years": 3, "Capacity_Distribution_Over_Time": { # "Capacity_Distribution_Per_Year": { "Times": times, "Values": funest_spline }, "Max_Larval_Capacity": pow(10, f_sc) # "Max_Larval_Capacity": pow(10,a_sc)/arab_funest_ratio } } } set_larval_habitat(cb, hab) # # FOR TESTING ONLY: # if mode == 'fast': # cb.set_param('x_Temporary_Larval_Habitat',0) # cb.set_param('x_Regional_Migration',0) return sample
def map_sample_to_model_input(cb, sample): sim_time_dict = serialization_setup(cb, calib_stage) add_interventions_and_reports(cb, sim_time_dict) # ===================================================================================== # Global habitats if calib_stage == 1: a_sc = sample['arabiensis_scale'] f_sc = sample['funestus_scale'] if sim_time_dict["burnin"]: # LOAD FROM SPLINE: arab_times, arab_spline = MozambiqueExperiment.catch_3_yr_spline( catch, "gambiae") funest_times, funest_spline = MozambiqueExperiment.catch_3_yr_spline( catch, "funestus") hab = { 'arabiensis': { "LINEAR_SPLINE": { "Capacity_Distribution_Number_Of_Years": 3, "Capacity_Distribution_Over_Time": { # "Capacity_Distribution_Per_Year": { "Times": arab_times, "Values": arab_spline }, "Max_Larval_Capacity": pow(10, a_sc) } }, 'funestus': { "LINEAR_SPLINE": { "Capacity_Distribution_Number_Of_Years": 3, "Capacity_Distribution_Over_Time": { # "Capacity_Distribution_Per_Year": { "Times": funest_times, "Values": funest_spline }, "Max_Larval_Capacity": pow(10, f_sc) # "Max_Larval_Capacity": pow(10,a_sc)/arab_funest_ratio } } } set_larval_habitat(cb, hab) if not sim_time_dict["burnin"]: # Get best-fit parameters from LL_all of Stage 1: # Need to find best BURNIN to rescale to, not best run. Since the sims before 2009 are purely from burnins: LL_all = pd.read_csv(LL_all_path) LL_all_burnins = LL_all[LL_all["iteration"] == 0] p1_list = list(LL_all_burnins['arabiensis_scale']) p2_list = list(LL_all_burnins['funestus_scale']) a_sc_burnin = p1_list[-1] f_sc_burnin = p2_list[-1] if calib_stage == 2: # Draw params from best RUN (may not be a burnin) p1_list = list(LL_all['arabiensis_scale']) p2_list = list(LL_all['funestus_scale']) a_sc = p1_list[-1] f_sc = p2_list[-1] arab_rescale = pow(10, a_sc) / pow(10, a_sc_burnin) funest_rescale = pow(10, f_sc) / pow(10, f_sc_burnin) if calib_stage == 1: scale_larval_habitats(cb, pd.DataFrame({ 'LINEAR_SPLINE.arabiensis': [arab_rescale], 'LINEAR_SPLINE.funestus': [funest_rescale] }), start_day=0) elif calib_stage == 2: for bairro_num in bairro_df["bairro"].unique(): scale_larval_habs_for_bairro( cb, bairro_num, bairro_df, arab_rescale * sample['b{}_vector_mult'.format(int(bairro_num))], funest_rescale * sample['b{}_vector_mult'.format(int(bairro_num))], start_day=0) # FOR TESTING ONLY: if mode == 'fast': cb.set_param('x_Temporary_Larval_Habitat', 0) cb.set_param('x_Regional_Migration', 0) return sample