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 | 8.135201e-12 | 5.272299e-12 | -2.862902e-12 | -0.351915 |
| r | 8.282880e-01 | 7.121887e-01 | -1.160993e-01 | -0.140168 |
| s | 1.717120e-01 | 2.165925e-01 | 4.488042e-02 | 0.261370 |
ssc.fluxes
| m1 | m2 | diff | rel_diff | |
|---|---|---|---|---|
| death | NaN | 5.272299e-14 | NaN | NaN |
| infection | 2.793824e-13 | 2.283880e-13 | -5.099435e-14 | -0.182525 |
| recovery | 8.135201e-13 | 5.272299e-13 | -2.862902e-13 | -0.351915 |
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")