forage.encounter(cannib), forage.radius(param.cannibalism_radius), move.larva(param.larva_scale, param.larva_shape), move.adult(param.adult_scale, param.adult_shape), repro.mating(param.mate_encounter), repro.radius(param.mate_radius), repro.fecundity(param.fecundity_maximum, param.fecundity_decay), repro.density(param.eta, param.gamma), repro.init_sex(param.female_prob), survive.egg_sur(param.egg_prob), survive.pupa_sur(param.pupa_prob), survive.adult_sur(param.adult_prob), survive.larva_sur(param.larva_prob_non_bt_rr, param.larva_prob_non_bt_ss, param.larva_prob_bt_rr, sur, dominance) ] base_dir = sys.argv[0].split('.')[0] base_save = base_dir.split('/')[-1] try: work_path = os.environ['WORK'] path_save = '{}/{}/{}'.format(work_path, 'FallArmyworm_Thesis', base_save)
class Simulator(object): """ Class to setup and run a simulation of only biomass growth: Variables: nums: initial population numbers forage: the plant forage model """ grid = [(keyword.hexagon, 1, 1, True), (keyword.hexagon, 1, 1, True)] attrs = {1: tracking.genotype_attrs} data = (np.inf, ) steps = [({ keyword.larva: [keyword.survive], keyword.egg: [keyword.survive], keyword.pupa: [keyword.survive], keyword.female: [keyword.survive] }, )] emigration = [] immigration = [] input_models = [ growth.max_gut(), growth.growth(param.alpha_ss, param.alpha_rr, param.beta_ss, param.beta_rr, dominance), init_bio.init_num(param.lam_0_egg), init_bio.init_mass(param.mu_0_egg_ss, param.mu_0_egg_rr, param.sig_0_egg_ss, param.sig_0_egg_rr, dominance), init_bio.init_juvenile(param.mu_0_larva_ss, param.mu_0_larva_rr, param.sig_0_larva_ss, param.sig_0_larva_rr, dominance), init_bio.init_mature(param.mu_0_mature_ss, param.mu_0_mature_rr, param.sig_0_mature_ss, param.sig_0_mature_rr, dominance), init_bio.init_plant(param.mu_leaf, param.sig_leaf), sex_model, sur.egg_sur(param.egg_prob), sur.pupa_sur(param.pupa_prob), sur.adult_sur(param.adult_prob) ] input_variables = param.repro_values # input_survive.larva_survival, nums: hint.init_pops bt_prop: float ss_bt_sur: float = param.larva_prob_bt_low_ss simulation: hint.simulation = None def __post_init__(self): larva_survive = sur.larva_sur(param.larva_prob_non_bt_rr, param.larva_prob_non_bt_ss, param.larva_prob_bt_rr, self.ss_bt_sur, dominance) input_models = self.input_models.copy() input_models.append(larva_survive) self.simulation = main_simulation.Simulation. \ setup(self.nums, self.grid, self.attrs, self.data, self.bt_prop, self.steps, self.emigration, self.immigration, *input_models, **self.input_variables) def run(self, times: list) -> None: """ Run the simulation for each time Args: times: the times for the simulation Returns: biomass data """ for _ in times[1:]: self.simulation.step()