def fn(self, cb): coverage_by_age = {'min': 0, 'max': 200, 'coverage': self.coverage} add_IRS(cb, start=self.start, coverage_by_ages=[coverage_by_age], waning=self.waning, nodeIDs=self.nodeIDs)
def add_irs(self): irs_events = pd.read_csv(self.irs_filename) irs_events['simday'] = [convert_to_day(x, self.sim_start_date, "%Y-%m-%d") for x in irs_events.fulldate] irs_events = irs_events[np.in1d(irs_events['grid_cell'], self.demo_cells)] irs_events.reset_index(inplace=True, drop=True) irs_events = irs_events[['grid_cell','event','fulldate','simday','cov_all','killing','exp_duration','box_duration']] [binned_and_grouped, grouped_by_fields] = self.try_campaign_compression(irs_events) for tup, group in binned_and_grouped: table = self.convert_group_tuple_to_dict(tup, grouped_by_fields) node_list = list(group['grid_cell']) if sorted(node_list) == self.demo_cells: nodeIDs = [] else: nodeIDs = node_list cov_all = float(table['cov_all']) if cov_all > 0: add_IRS(self.cb, start=int(table['simday']), coverage_by_ages=[{'coverage': float(table['cov_all'])}], waning={"Killing_Config": { "Initial_Effect": float(table['killing']), "Decay_Time_Constant": float(table['exp_duration']), "Box_Duration": float(table['box_duration']), "class": "WaningEffectBoxExponential" }}, nodeIDs=nodeIDs)
def add_irs_group(cb, coverage=1.0, start_days=[0], decay=270): waning = { "Killing_Config": { "Initial_Effect": 0.6, "Decay_Time_Constant": decay, "class": "WaningEffectExponential" }, "Blocking_Config": { "Initial_Effect": 0.0, "Decay_Time_Constant": 730, "class": "WaningEffectExponential" } } for start in start_days: add_IRS(cb, start, [{ "min": 0, "max": 200, "coverage": coverage }], waning=waning) return {"IRS_Start": start_days[0], "IRS_Coverage": coverage}
def add_irs(cb, events_df): irs_field_list = ["cov_all", "killing", "exp_duration", "box_duration"] binned_intervene_events, binned_and_grouped, data_fields = try_campaign_compression(events_df, irs_field_list) for table, group in binned_and_grouped: table_dict = dict(zip((data_fields), table)) node_list = sorted(group['grid_cell']) add_IRS(cb, start=int(table_dict['simday']), coverage_by_ages=[{'coverage': float(table_dict['cov_all'])}], waning={"Killing_Config": { "Initial_Effect": float(table_dict['killing']), "Decay_Time_Constant": float(table_dict['exp_duration']), "Box_Duration": float(table_dict['box_duration']), "class": "WaningEffectBoxExponential" }}, nodeIDs=node_list)
def add_irs(self, cb, filename=None): if not filename: filename = self.dropbox_base + "inputs/grid_csv/grid_all_irs_events.csv" intervene_events = pd.read_csv(filename) # Restrict to catchment of interest intervene_events = intervene_events[np.in1d( intervene_events['grid_cell'], self.catch_cells)] intervene_events.reset_index(inplace=True) # Compute simulation days relative to start date or use default in file intervene_events['simday'] = [ convert_to_day_365(x, self.start_date, "%Y-%m-%d") for x in intervene_events.fulldate ] irs_field_list = ["cov_all", "killing", "exp_duration", "box_duration"] binned_intervene_events, binned_and_grouped, data_fields = self.try_campaign_compression_v2( intervene_events, irs_field_list) for table, group in binned_and_grouped: table_dict = dict(zip((data_fields), table)) node_list = sorted(group['grid_cell']) if node_list == sorted(self.catch_cells): nodeIDs = [] else: nodeIDs = node_list add_IRS(cb, start=int(table_dict['simday']), coverage_by_ages=[{ 'coverage': float(table_dict['cov_all']) }], waning={ "Killing_Config": { "Initial_Effect": float(table_dict['killing']), "Decay_Time_Constant": float(table_dict['exp_duration']), "Box_Duration": float(table_dict['box_duration']), "class": "WaningEffectBoxExponential" } }, nodeIDs=nodeIDs)
##################### # Experiment sweeps # ##################### add_simple_hs(cb, 0.75) # annual actellic spray for y in range(6): spray_date = 9 * 30 + 365 * y add_IRS(cb, start=spray_date, coverage_by_ages=[{ 'coverage': 0.75 }], killing_config={ "Initial_Effect": 0.9, "Decay_Time_Constant": 30, "Box_Duration": 210, "class": "WaningEffectBoxExponential" }) modlists = [] num_seeds = 5 modlist = modfn_sweep_over_seeds(num_seeds) modlists.append(modlist) # modlist = [ModFn(itn_scenario, s) for s in [0,1,2,3,4,5,6]] modlist = [ModFn(itn_scenario, s) for s in [0, 7]] # no-ITN scenarios modlists.append(modlist)