Source code for sbmlsim.examples.example_sensitivity

"""
Example shows basic model simulations and plotting.
"""
from sbmlsim.plot.plotting_matplotlib import add_line, plt
from sbmlsim.simulation import Timecourse, TimecourseSim
from sbmlsim.simulation.sensitivity import ModelSensitivity
from sbmlsim.simulator import SimulatorSerial as Simulator
from sbmlsim.test import MODEL_REPRESSILATOR


[docs]def plot_results(xres): unit_time = "s" unit_value = "dimensionless" 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) for ax in (ax1, ax3): add_line( ax=ax, xres=xres, xid="time", yid="X", label="X", xunit=unit_time, yunit=unit_value, ) add_line( ax=ax, xres=xres, xid="time", yid="Y", label="Y", color="darkblue", xunit=unit_time, yunit=unit_value, ) add_line( ax=ax, xres=xres, xid="time", yid="Z", label="Z", color="darkorange", xunit=unit_time, yunit=unit_value, ) for ax in (ax2, ax4): add_line( ax=ax, xres=xres, xid="X", yid="Y", label="Y~X", color="black", xunit=unit_value, yunit=unit_value, ) for ax in (ax3, ax4): ax.set_xscale("log") ax.set_yscale("log") for ax in (ax1, ax3): ax.set_xlabel(f"time [{unit_time}]") for ax in (ax2, ax4): ax.set_xlabel(f"value [{unit_value}]") for ax in axes: ax.set_ylabel(f"value [{unit_value}]") ax.legend() plt.show()
[docs]def run_sensitivity(): """Parameter sensitivity simulations. :return: """ simulator = Simulator(MODEL_REPRESSILATOR) # parameter sensitivity tcsim = TimecourseSim( [ Timecourse(start=0, end=200, steps=2000), ] ) distrib_scan = ModelSensitivity.distribution_sensitivity_scan( model=simulator.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()