eDPM#
eDPM (Experimental Design for Predictive Microbiology) is designed to analyze the informational content of systems of Ordinary Differential Equations (see Concepts and Background). Naturally, the first step is to chose one such system and define it via a function.
def ode_fun(t, y, inputs, parameters, ode_args):
...
return [ ... ]
We also require additional information in the form of derivatives with respect to the
state variables y
and parameters
.
def ode_dfdx(t, y, inputs, parameters, ode_args):
...
return [[ ... ], ...]
def ode_dfdp(t, y, inputs, parameters, ode_args):
...
return [[ ... ], ...]
We then define the variables times, inputs, parameters
and optional ode_args
.
The Model module gathers all information to fully define a valid
model. It does this by creating a FisherModel
fsm = FisherModel(
ode_fun,
ode_dfdx,
ode_dfdp,
ode_x0,
ode_t0,
times,
inputs,
parameters,
)
which can afterwards be used by the Solving module to calculate the information
content of the model. The user can decide to no explicitly specify certain variables and leave
them mutable for optimization. It is thus necessary to transform the FisherModel
it into a fully parametrized model FisherModelParametrized
by using an initial guess
for these mutable variables.
fsmp = FisherModelParametrized.init_from(fsm)
calculate_fisher_criterion(fsmp)
In addition to solving a model, we can also optimize previously defined mutable variables
such that the information content given by one of the chosen criteria
is maximized.
This procedure is handled by the Optimization module and yields FisherResults
.
fsr = find_optimal(fsm)
After the optimization routine has come to an end, the Plotting module visualizes the obtained results.
plot_all_solutions(fsr, outdir="out")
The Database module dumps information in json format to a file or string.
json_dump(fsr, "model.json")