Comparisons¶
mxlpy
provides simple routines to numerically compare two models.
For this, we use the compare
module.
import numpy as np
from example_models import get_sir, get_sird
from mxlpy import compare, make_protocol
Steady-states¶
You can compare the steady-states of two models using the compare_steady_states
function.
ssc = compare.steady_states(get_sir(), get_sird())
This returns a SteadyStateComparison
object, for which you can either access the direct comparisons
ssc.variables
m1 | m2 | diff | rel_diff | |
---|---|---|---|---|
d | NaN | 7.121887e-02 | NaN | NaN |
i | 6.676138e-12 | 3.794859e-12 | -2.881278e-12 | -0.431579 |
r | 8.282883e-01 | 7.121887e-01 | -1.160997e-01 | -0.140168 |
s | 1.717117e-01 | 2.165925e-01 | 4.488079e-02 | 0.261373 |
ssc.fluxes
m1 | m2 | diff | rel_diff | |
---|---|---|---|---|
death | NaN | 3.794859e-14 | NaN | NaN |
infection | 2.292742e-13 | 1.643876e-13 | -6.488657e-14 | -0.283009 |
recovery | 6.676138e-13 | 3.794859e-13 | -2.881278e-13 | -0.431579 |
or plot the results
_ = ssc.plot_variables()
_ = ssc.plot_fluxes()
_ = ssc.plot_all()
Time courses¶
For comparing time courses, you can use the compare_time_courses
function.
This returns a TimeCourseComparison
object, which you can directly use to plot for example the relative differences of variables or fluxes.
pc = compare.time_courses(
get_sir(),
get_sird(),
time_points=np.linspace(0, 100, 101),
)
_ = pc.plot_variables_relative_difference()
_ = pc.plot_fluxes_relative_difference()
Protocol time courses¶
For comparing protocol time courses, you can use the protocol_time_courses
function.
This returns a ProtocolComparison
object, which you can directly use to plot for example the relative differences of variables or fluxes.
pc = compare.protocol_time_courses(
get_sir(),
get_sird(),
protocol=make_protocol(
[
(10, {"beta": 0.2}),
(10, {"beta": 1.0}),
(80, {"beta": 0.2}),
]
),
)
_ = pc.plot_variables_relative_difference()
Optionally, if you want to indicate one of the protocol parameters on the plots, you can use the shade_protocol_variable
argument
_ = pc.plot_variables_relative_difference(shade_protocol_variable="beta")
_ = pc.plot_fluxes_relative_difference(shade_protocol_variable="beta")