示例#1
0
    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)
示例#3
0
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
示例#4
0
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
示例#5
0
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}
示例#6
0
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

    '''
示例#7
0
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})
示例#10
0
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
示例#12
0
    '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,
示例#13
0
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