coverages = [0.6, 0.7, 0.8, 0.9, 1.0] SMC = [ [ ModFn(DTKConfigBuilder.set_param, 'Run_Number', seed), ModFn(DTKConfigBuilder.set_param, 'Simulation_Duration', smc_start_day+365), ModFn(add_smc_group, start_days=[smc_start_day], coverage=smc_coverage, drug='DP', agemax=5), ModFn(add_summary_report_by_start_day, start_day=smc_start_day), ] for smc_coverage in coverages for seed in range(num_seeds) ] builder = ModBuilder.from_list(SMC) run_sim_args = {'config_builder': cb, 'exp_name': expname, 'exp_builder': builder} if __name__ == "__main__": SetupParser.default_block = 'HPC' SetupParser.init() exp_manager = ExperimentManagerFactory.init() exp_manager.run_simulations(**run_sim_args) # Wait for the simulations to be done exp_manager.wait_for_finished(verbose=True)
nreports=1, age_bins=[5, 125], parasitemia_bins=[0, 50, 200, 500, 2000000]) healthseeking_coverage_pairs = [[0.30, 0.30]] # as U5 and then >5 year olds # creates a sweep of simulations with varying coverages and Run_Number seeds healthseeking = [[ ModFn(sweep_coverages, coverages), ModFn(scale_linear_spline_max_habitat, x), ModFn(DTKConfigBuilder.set_param, 'Run_Number', seed) ] for x in np.logspace(-3, -0.3, 50) for coverages in healthseeking_coverage_pairs for seed in range(num_seeds)] builder = ModBuilder.from_list(healthseeking) # Run args run_sim_args = { 'config_builder': cb, 'exp_name': exp_name, 'exp_builder': builder } if __name__ == "__main__": if not SetupParser.initialized: SetupParser.init('HPC') exp_manager = ExperimentManagerFactory.init() exp_manager.run_simulations(**run_sim_args)
def add_my_outbreak(cb, start_day): recurring_outbreak(cb, start_day=start_day, repetitions=1) return {'outbreak_start_day': start_day} builder = ModBuilder.from_list([[ ModFn(add_my_outbreak, start_day=x * 365), ModFn(DTKConfigBuilder.set_param, 'Run_Number', y), ModFn(DTKConfigBuilder.set_param, 'Simulation_Duration', (x * 365) + (3 * 365)), ModFn(add_filtered_report, start=x * 365, end=(x * 365) + (3 * 365)), ModFn(add_health_seeking, start_day=0, targets=[{ 'trigger': 'NewClinicalCase', 'coverage': 1, 'agemin': 0, 'agemax': 200, 'seek': 1, 'rate': 0.3 }, { 'trigger': 'NewSevereCase', 'coverage': 1, 'seek': 1, 'rate': 0.5 }]) ] for y in range(num_seeds) for x in range(51)]) #ModFn(add_my_outbreak, start_day=x), #ModFn(add_health_seeking, start_day=0, targets=[ #{'trigger': 'NewClinicalCase', 'coverage': 1, 'agemin': 0, 'agemax': 200, 'seek': 1,'rate': 0.3}, #{'trigger': 'NewSevereCase', 'coverage': 1, 'seek': 1, 'rate': 0.5}])
def perfect_health_seeking(cb): add_health_seeking(cb, start_day=survey_day, targets=[dict(trigger='NewClinicalCase', coverage=1.0, seek=1.0, rate=0.3)]) return cb.set_param('Config_Name', 'perfect_health_seeking') def perfect_MSAT(cb): add_drug_campaign(cb, campaign_type='MSAT', drug_code='DP', start_days=[survey_day + 30], coverage=1.0, repetitions=3, interval=60) return cb.set_param('Config_Name', 'perfect_MSAT') mod_fn_list = [[ModFn(baseline)], [ModFn(perfect_health_seeking)], [ModFn(perfect_MSAT)]] builder = ModBuilder.from_list(mod_fn_list) run_sim_args = {'config_builder': cb, 'exp_name': exp_name, 'exp_builder': builder } """ Analyzer to simply copy all survey-report JSON down from all simulations """ class MyDownloadAnalyzer(DownloadAnalyzer): def __init__(self): super(MyDownloadAnalyzer, self).__init__(
"class": 'WaningEffectConstant', "Initial_Effect": killing, } }, duration=10000) # add_ATSB(cb, coverage=coverage, start=100, duration=365, kill_cfg=killing_cfg[1]) return {'killing': killing, 'startDay': startDay} # add_ATSB(cb, start=100, coverage=1, duration=365) builder = ModBuilder.from_list([ [ ModFn(atsb_fn, killing, (years - 2) * 365), ModFn(DTKConfigBuilder.set_param, 'x_Temporary_Larval_Habitat', hab) # Run simulation with coverage, duration, or repetitions spread. # Don't leave duration over 210 because we don't know how ATSBs act after 210 days, or how they act after Dec 31. ] for killing in np.linspace(0, 0.25, 20) for hab in np.arange(0.2, 1, 0.478 / 10) ]) run_sim_args = { 'config_builder': cb, 'exp_name': exp_name, 'exp_builder': builder } if __name__ == "__main__": SetupParser.init('HPC') exp_manager = ExperimentManagerFactory.init() exp_manager.run_simulations(**run_sim_args)
no_resistance = [ [ModFn(DTKConfigBuilder.set_param, 'Run_Number', seed), ModFn(change_vector_params, species='gambiae', mutation_rate1=mutation_rate1, mutation_rate2=mutation_rate2, serialization_seed=0), ModFn(DTKConfigBuilder.set_param, 'Serialized_Population_Path', ''), ModFn(add_ITNs, coverage=0.6, start=start, insecticide='carbamate', label='No_resistance'), ModFn(add_ITNs, coverage=0.6, start=start + 3 * 365, insecticide='carbamate', label='No_resistance') ] for seed in range(num_seeds) for mutation_rate1 in [0.01] for mutation_rate2 in [0] for start in [180 + extra * 365] ] builder = ModBuilder.from_list(no_rotation_three_year + no_nets + no_resistance) ############################### REPORTERS ############################################### vector_genetics_report = 1 vector_stats_report = 0 malaria_summary_report = 0 add_reporters(cb, vector_genetics_report=vector_genetics_report) ############################## HEALTH SEEKING ########################################### # Health seeking add_health_seeking(cb, targets=[{'trigger': 'NewClinicalCase', 'coverage': 0.5, 'agemin': 0, 'agemax': 100,
smc_start_day + 365), ModFn( add_smc_group, start_days=[smc_start_day], coverage=smc_coverage, drug=drug, agemax=agemax, ), ModFn(add_summary_report, start_day=smc_start_day), ModFn(DTKConfigBuilder.set_param, 'Serialized_Population_Path', '{path}/output'.format(path=path)) ] for smc_start_day in intervention_days for smc_coverage in coverages for seed in range(num_seeds) for path in serialized_file_output for agemax in [5, 10] for drug in ['DP']] builder = ModBuilder.from_list(expanded_SMC_IVM) set_climate_constant(cb) set_species_param( cb, 'gambiae', 'Larval_Habitat_Types', { "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": [3, 0.8, 1.25, 0.1, 2.7, 8, 4, 35, 6.8, 6.5, 2.6, 2.1] }, "Max_Larval_Capacity": 1e9 }
add_InputEIR(cb, [x*scale_factor for x in monthly_EIR]) return { 'annual EIR' : scale_factor*sum(monthly_EIR)} # builder = ModBuilder.from_list( [[ ModFn(sweep_scale_factor, x)] for x in [0.01,10,100]]) report_years = 1 report_start = 40 add_summary_report(cb, start = 365*report_start, description='Annual_Report', interval = 365, nreports = 1, age_bins = [2, 10, 125], parasitemia_bins = [0, 50, 200, 500, 2000000] ) builder = ModBuilder.from_list( [[ ModFn(sweep_scale_factor, x)] for x in np.logspace(-3, 0, 200)]) # Run args run_sim_args = {'config_builder': cb, 'exp_name': exp_name, 'exp_builder': builder } if __name__ == "__main__": if not SetupParser.initialized: SetupParser.init('HPC')
ModFn(add_summary_report, start_day=smc_start_day), ModFn(DTKConfigBuilder.set_param, 'Serialized_Population_Path', '{path}/output'.format(path= get_outpath_for_serialized_file(simmap, seed))) ] for smc_start_day in intervention_days for smc_coverage in coverages for seed in range(num_seeds) for simmap in [sim_map] for agemax in [5, 15] for drug in ['DP'] for drug_code in [30, 90] ] # builder = ModBuilder.from_list(SMC3) builder = ModBuilder.from_list(SMC1+SMC2+SMC3) set_climate_constant(cb) set_species_param(cb, 'gambiae', 'Larval_Habitat_Types', {"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": [1, 0.25, 0.1, 1, 1, 0.5, 12, 5, 3, 2, 1.5, 1.5] "Values": [3, 0.8, 1.25, 0.1, 2.7, 8, 4, 35, 6.8, 6.5, 2.6, 2.1] }, "Max_Larval_Capacity": 1e9 }}) set_species_param(cb, "gambiae", "Indoor_Feeding_Fraction", 0.9) cb.update_params({"Demographics_Filenames": ['Calibration\single_node_demographics.json'],
] #HLC: 0.023478, .065638 CDC: 0.136566523, .098484065 } } }, duration=duration) # add_ATSB(cb, coverage=coverage, start=100, duration=365, kill_cfg=killing_cfg[1]) return {'coverage': coverage, 'duration': duration, 'repetitions': reps} # add_ATSB(cb, start=100, coverage=1, duration=365) builder = ModBuilder.from_list([ [ ModFn(atsb_fn, cov, dur, reps), ModFn(DTKConfigBuilder.set_param, 'Run_Number', x) # Run simulation with coverage, duration, or repetitions spread. # Don't leave duration over 210 because we don't know how ATSBs act after 210 days, or how they act after Dec 31. ] for cov in [0.0, 0.25, 0.5] for dur in [210] for reps in [1, 3] for x in range(2) ]) run_sim_args = { 'config_builder': cb, 'exp_name': exp_name, 'exp_builder': builder } if __name__ == "__main__": SetupParser.init('HPC') exp_manager = ExperimentManagerFactory.init() exp_manager.run_simulations(**run_sim_args)
cb = DTKConfigBuilder.from_defaults('MALARIA_SIM', Simulation_Duration=int(365 * num_years)) update_config_params(cb, direc=dir, geography=geography) add_SerializationTimesteps(cb, [num_years * 365], end_at_final=True) ########################## VECTOR GENETICS #################################################### builder = ModBuilder.from_list([ [ ModFn(DTKConfigBuilder.set_param, 'Run_Number', seed), ModFn(change_vector_params, species='gambiae', mutation_rate1=mutation_rate, mutation_rate2=mutation_rate, serialization_seed=seed) ] for seed in range(num_seeds) for mutation_rate in [0] # pow(10, x) for x in range(-5, 0) ]) ############################### REPORTERS ######################################## vector_genetics_report = 1 vector_stats_report = 0 malaria_summary_report = 0 add_reporters(cb, vector_genetics_report=vector_genetics_report) ################################ INTERVENTIONS ################################### #
cb.update_params({ "Report_Event_Recorder": 1, "Listed_Events": ["Immigrating", "Emigrating"], "Report_Event_Recorder_Events": ["Immigrating", "Emigrating"], "Report_Event_Recorder_Ignore_Events_In_List": 0 }) ########################## VECTOR GENETICS #################################################### # Add genes genes = {'gambiae': [{"Alleles": {"a0": 1.0, "a1": 0.0}, "Mutations": {}}]} set_species_genes(cb, genes) builder = ModBuilder.from_list( [[ModFn(DTKConfigBuilder.set_param, 'Run_Number', seed)] for seed in range(num_seeds)]) ################################ INTERVENTIONS ############################################ # Health seeking add_health_seeking(cb, targets=[{ 'trigger': 'NewClinicalCase', 'coverage': 0.5, 'agemin': 0, 'agemax': 100, 'seek': 1, 'rate': 0.3 }, { 'trigger': 'NewSevereCase',
# '//internal.idm.ctr/IDM/Home/pselvaraj/output/Matsari_homogeneousbiting_serialization_2017_10_02_12_00_07_818000/89d/00c/08a/89d00c08-a4a7-e711-9414-f0921c16b9e5'] exp_name = ['2ac6fce6-9554-e811-a2bf-c4346bcb7274'] for exp in exp_name: temp_sim_map = make_simmap(exp) if 'sim_map' not in locals(): sim_map = temp_sim_map else: sim_map = pd.concat([sim_map, temp_sim_map]) builder = ModBuilder.from_list([[ ModFn(DTKConfigBuilder.set_param, 'Run_Number', seed), ModFn(DTKConfigBuilder.set_param, 'Simulation_Duration', start_day + 365), ModFn(add_summary_report, start_day=start_day), ModFn( DTKConfigBuilder.set_param, 'Serialized_Population_Path', '{path}/output'.format( path=get_outpath_for_serialized_file(simmap, seed))) ] for seed in range(num_seeds) for simmap in [sim_map] for start_day in intervention_days]) # configure_dapelogo(cb) # cb.set_collection_id('1c189292-5471-e711-9401-f0921c16849d') set_climate_constant(cb) set_species_param( cb, 'gambiae', 'Larval_Habitat_Types', { "LINEAR_SPLINE": {
old_builder = ModBuilder.from_list( [[ ModFn( DTKConfigBuilder.update_params, { "Serialized_Population_Path": os.path.join(df["outpath"][x], "output"), "Serialized_Population_Filenames": [ name for name in os.listdir( os.path.join(df["outpath"][x], "output")) if "state" in name ], "Run_Number": df["Run_Number"][x], "x_Temporary_Larval_Habitat": df["x_Temporary_Larval_Habitat"][x] }), ModFn(add_annual_itns, year_count=years, n_rounds=1, coverage=itn_cov / 100, discard_halflife=180, start_day=5, IP=[{ "NetUsage": "LovesNets" }]), ModFn(assign_net_ip, hates_net_prop), ModFn(add_irs_group, coverage=irs_cov / 100, decay=180, start_days=[365 * start for start in range(years)]), ModFn(add_healthseeking_by_coverage, coverage=act_cov / 100, rate=0.15), ] for x in df.index for hates_net_prop in net_hating_props for itn_cov in intervention_coverages for irs_cov in intervention_coverages for act_cov in intervention_coverages])
} }] } set_species_genes(cb, genes) copy_to_likelihoods = np.arange(0.5, 0.59, 0.1).tolist() # Add gene trait modifiers gene_drive = [[ ModFn(DTKConfigBuilder.set_param, 'Run_Number', seed), ModFn(add_release, label='Gene_drive'), ModFn(add_driver, copy_to_likelihood=likelihood), ] for seed in range(num_seeds) for likelihood in copy_to_likelihoods] builder = ModBuilder.from_list(gene_drive) # Call output reporters cb.add_reports( BaseVectorGeneticsReport( type='ReportVectorGenetics', species='arabiensis', gender='VECTOR_FEMALE', include_vector_state_columns=1, stratify_by='SPECIFIC_GENOME', combine_similar_genomes=1, specific_genome_combinations_for_stratification=[{ "Allele_Combination": [["X", "X"], ["a1", "*"]] }, { "Allele_Combination": [["X", "X"], ["a0", "a0"]] }]))
cb.update_params({"x_Temporary_Larval_Habitat": scale_factor}) return {'larval_habitat_multiplier': scale_factor} #Reporting ----------------------------------------------------------------------------------------------------------- add_summary_report(cb, start=365 * report_start, description='Annual_Report', interval=365, nreports=1, age_bins=[2, 10, 125], parasitemia_bins=[0, 50, 200, 500, 2000000]) builder = ModBuilder.from_list([[ ModFn(sweep_larval_habitat, scale_factor=habitat_multiplier), ModFn(DTKConfigBuilder.set_param, 'Run_Number', seed) ] for habitat_multiplier in np.logspace(-2, 1, 50) for seed in range(num_seeds)]) # builder = ModBuilder.from_list( [[ ModFn(sweep_scale_factor, x)] for x in [0.01,10,100]]) # report_years = 1 # report_start = 40 # Run args run_sim_args = { 'config_builder': cb, 'exp_name': exp_name, 'exp_builder': builder } if __name__ == "__main__":
[ModFn(DTKConfigBuilder.set_param, 'Run_Number', seed), ModFn(DTKConfigBuilder.set_param, 'Serialized_Population_Path', ''), ModFn(add_nets, coverage=net_coverage, number=0, num_nodes=0, start_day=start_day), ModFn(add_drivers, copy_to_likelihood=likelihood), ModFn(add_trait_modifiers, transmission_to_human=transmission_prob) ] for seed in range(num_seeds) for start_day in [0] for number in [0] for numnodes in [0] for net_coverage in [0.0] for likelihood in [0.0] for transmission_prob in [1.0] ] builder = ModBuilder.from_list(VC_and_GM + VC + GM + No_interventions) # builder = ModBuilder.from_list(VC) ################################ INTERVENTIONS ################################### # Health seeking add_health_seeking(cb, targets=[{'trigger': 'NewClinicalCase', 'coverage': 0.5, 'agemin': 0, 'agemax': 100, 'seek': 1, 'rate': 0.3}, {'trigger': 'NewSevereCase', 'coverage': 0.8, 'agemin': 0,
from malaria.interventions.malaria_challenge import add_challenge_trial from simtools.ModBuilder import ModFn, ModBuilder from malaria.reports.MalariaReport import add_survey_report from malaria.reports.MalariaReport import add_summary_report burnin_duration = 25550 monthlyEIRs_1 = [1.9375, 3.375, 7.5, 1.9375, 0.5, 0.5, 0.5, 0.5, 0.25, 0.5, 0.5,1.0] monthlyEIRs_2 = [3.875, 7.75, 15.0, 3.875, 1, 1, 1, 1, 0.5, 1, 1,2] exp_name = 'Challenge_bite_20_350_Dan_fix' builder = ModBuilder.from_list( [[ModFn(add_challenge_trial, x, disable_vitals = False), ModFn(add_survey_report,[x],reporting_interval = 730), ModFn(add_summary_report,x,interval = 365/12,description = 'Monthly Report', age_bins = [1.0, 4.0, 8.0, 18.0, 28.0, 43.0, 400000.0], parasitemia_bins = [0.0, 16.0, 409.0, 4000000.0]) ] for x in range(730,740,10)]) # builder = ModBuilder.from_list( # [[ModFn(add_InputEIR, monthlyEIRs_1, start_day=x, nodes={ # "Node_List": [ # 1 # ], # "class": "NodeSetNodeList" # }), # ModFn(add_InputEIR, monthlyEIRs_2, start_day=x, nodes={ # "Node_List": [ # 2
"Decay_Time_Constant": 30 } }] add_ATSB(cb, coverage=coverage, start=100, duration=365, kill_cfg=killing_cfg[1]) return {'coverage': coverage, 'initial_killing': killing} # add_ATSB(cb, start=100, coverage=1, duration=365) builder = ModBuilder.from_list([[ ModFn(atsb_fn, cov, kill), ModFn(DTKConfigBuilder.set_param, 'Run_Number', x) ] for cov in [0, 1] for kill in [0.15] for x in range(1)]) run_sim_args = { 'config_builder': cb, 'exp_name': exp_name, 'exp_builder': builder } if __name__ == "__main__": SetupParser.init('HPC') exp_manager = ExperimentManagerFactory.init() exp_manager.run_simulations(**run_sim_args) # Wait for the simulations to be done exp_manager.wait_for_finished(verbose=True) assert (exp_manager.succeeded())
"Serialized_Population_Filenames": [ name for name in os.listdir( os.path.join(df["outpath"][x], "output")) if "state" in name ], "Run_Number": y, "x_Temporary_Larval_Habitat": df["x_Temporary_Larval_Habitat"][x] }) for x in df.index for y in range(num_runs) ] builder = ModBuilder.from_list( [[ burnin_fn, ModFn(add_intervention, intervention, coverage, species_details) ] for burnin_fn in from_burnin_list for intervention in interventions for coverage in np.linspace(0, 1, num_coverage_bins)]) else: print("building burnin") builder = ModBuilder.from_list( [[ ModFn( DTKConfigBuilder.update_params, { "Run_Number": run_num, "x_Temporary_Larval_Habitat": 10**hab_exp }), ] for run_num in range(10) for hab_exp in np.concatenate((np.arange(-3.75, -2, 0.25),
set_species_param(cb, 'funestus', 'Larval_Habitat_Types', {"CONSTANT": 11250000000}) set_species_param(cb, 'funestus', 'Male_Life_Expectancy', 5) set_species_param(cb, 'funestus', 'Adult_Life_Expectancy', 10) set_species_param(cb, 'funestus', 'Transmission_Rate', 0.5) set_species_param(cb, 'funestus', 'Indoor_Feeding_Fraction', 1.0) ########################## VECTOR GENETICS #################################################### add_genes(cb) mendelian = [[ ModFn(DTKConfigBuilder.set_param, 'Run_Number', seed), ModFn(add_release, label=label, number=10000), ] for seed in range(num_seeds) for label in ['No_inrogression']] builder = ModBuilder.from_list(mendelian) # Call output reporters cb.add_reports( BaseVectorGeneticsReport( type='ReportVectorGenetics', species='arabiensis', gender='VECTOR_FEMALE', include_vector_state_columns=1, stratify_by='SPECIFIC_GENOME', combine_similar_genomes=1, specific_genome_combinations_for_stratification=[{ "Allele_Combination": [["X", "X"], ["a0", "*"]] }])) cb.add_reports( BaseVectorGeneticsReport(
cb.update_params({'Serialization_Time_Steps': [365*years]}) if pull_from_serialization : set_forest_HS = False burnin_df = create_sim_map(burnin_expid) burnin_df = burnin_df[(burnin_df['dirus_Anthropophily'] == 0.5) & (burnin_df['x_Temporary_Larval_Habitat'] == 2.4)] update_serialization_params(cb) builder = ModBuilder.from_list([[ ModFn(add_intervention, intervention, coverage, target, ivm_duration), ModFn(sample_anthrop_and_outdoor, 'dirus', row['dirus_Anthropophily'], row['dirus_Outdoor_Fraction']), ModFn(DTKConfigBuilder.update_params, { 'x_Temporary_Larval_Habitat': row['x_Temporary_Larval_Habitat'], 'Run_Number': y, 'Serialized_Population_Path': os.path.join(row['path'], 'output') }) ] for y in range(starting_seed, starting_seed+num_seeds) for coverage in np.linspace(0,1,6) for intervention in interventions for target in ['bothvill', 'vill1'] for ivm_duration in ivm_durations for r,row in burnin_df.iterrows() ]) else : set_forest_HS = True builder = ModBuilder.from_list([[ ModFn(sample_anthrop_and_outdoor, 'dirus', anthropophily, outdoor), ModFn(DTKConfigBuilder.set_param, 'x_Temporary_Larval_Habitat', x_LH), ModFn(DTKConfigBuilder.set_param, 'Run_Number', y)] for y in range(num_seeds) for anthropophily in np.linspace(0,1,11) for outdoor in [0.99]