Пример #1
0
 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)
Пример #2
0
    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}
Пример #4
0
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)
Пример #6
0
#####################
# 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)