Source code for sbmlsim.examples.example_sensitivity

"""
Example shows basic model simulations and plotting.
"""
from sbmlsim.model.rr_model import roadrunner
from sbmlsim.plot.serialization_matplotlib import plt
from sbmlsim.resources import REPRESSILATOR_SBML
from sbmlsim.simulation import Timecourse, TimecourseSim
from sbmlsim.simulation.sensitivity import ModelSensitivity
from sbmlsim.simulator import SimulatorSerialRR
from sbmlsim.xresult import XResult


[docs]def plot_results(xres: XResult): fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(nrows=2, ncols=2, figsize=(10, 10)) fig.subplots_adjust(wspace=0.3, hspace=0.3) axes = (ax1, ax2, ax3, ax4) ax: plt.Axes for ax in (ax1, ax3): for sid, color in [ ("[X]", "tab:blue"), ("[Y]", "tab:red"), ("[Z]", "tab:green"), ]: # mean line ax.plot( xres._time, xres.mean_all_dims(key=sid), color=color, label=sid, ) # shaded areas # TODO for ax in (ax2, ax4): ax.plot( xres.mean_all_dims(key="[X]"), xres.mean_all_dims(key="[Y]"), color="black", label="Y~X", ) for ax in (ax3, ax4): ax.set_xscale("log") ax.set_yscale("log") for ax in (ax1, ax3): ax.set_xlabel(f"time [second]") for ax in (ax2, ax4): ax.set_xlabel(f"value [dimensionless]") for ax in axes: ax.set_ylabel(f"value [dimensionless]") ax.legend() plt.show()
[docs]def run_sensitivity(): """Parameter sensitivity simulations. :return: """ simulator = SimulatorSerialRR.from_sbml(REPRESSILATOR_SBML) # parameter sensitivity tcsim = TimecourseSim( [ Timecourse(start=0, end=200, steps=2000), ] ) model: roadrunner.RoadRunner = simulator.worker.r distrib_scan = ModelSensitivity.distribution_sensitivity_scan( model=model, simulation=tcsim, cv=0.03, size=50 ) res_distrib_scan = simulator.run_scan(distrib_scan) diff_scan = ModelSensitivity.difference_sensitivity_scan( model=simulator.model, simulation=tcsim, difference=0.1 ) res_diff_scan = simulator.run_scan(diff_scan) # create figure plot_results(res_distrib_scan) plot_results(res_diff_scan)
if __name__ == "__main__": run_sensitivity()