Using plug-ins 🧩[experimental]
How to plug-in your code/data directly into flepiMoP
initial_conditions:
method: plugin
plugin_file_path: model_input/my_initial_conditions.py
# you can also include some configuration for your plugin:
ub_prop_infected: 0.001 # upper bound of the uniform distributionimport gempyor.seeding_ic
import numpy as np
class InitialConditions(gempyor.seeding_ic.InitialConditions):
def get_from_config(self, sim_id: int, setup) -> np.ndarray:
y0 = np.zeros((setup.compartments.compartments.shape[0], setup.nsubpops))
S_idx = setup.compartments.get_comp_idx({"infection_stage":"S"})
I_idx = setup.compartments.get_comp_idx({"infection_stage":"I"})
prop_inf = np.random.uniform(low=0,high=self.config["ub_prop_infected"].get(), size=setup.nsubpops)
y0[S_idx, :] = setup.subpop_pop * (1-prop_inf)
y0[I_idx, :] = setup.subpop_pop * prop_inf
return y0
def get_from_file(self, sim_id: int, setup) -> np.ndarray:
return self.get_from_config(sim_id=sim_id, setup=setup)Last updated
