Source code for sbmlsim.examples.example_model_change

"""
Examples for model changes.

For instance clamping species to given formulas.
"""
import pandas as pd

from sbmlsim.model import ModelChange, RoadrunnerSBMLModel
from sbmlsim.plot.plotting_matplotlib import add_line, plt
from sbmlsim.result import XResult
from sbmlsim.simulation import Timecourse, TimecourseSim
from sbmlsim.simulator import SimulatorSerial as Simulator
from sbmlsim.test import MODEL_REPRESSILATOR


[docs]def run_model_change_example1(): """Manually clamping species. :return: """ r = RoadrunnerSBMLModel.load_roadrunner_model(MODEL_REPRESSILATOR) RoadrunnerSBMLModel.set_timecourse_selections(r) s1 = r.simulate(start=0, end=100, steps=500) s1 = pd.DataFrame(s1, columns=s1.colnames) ModelChange.clamp_species(r, "X", "10.0") RoadrunnerSBMLModel.set_timecourse_selections(r) s2 = r.simulate(start=0, end=100, steps=500) s2 = pd.DataFrame(s2, columns=s2.colnames) s2.time = s2.time + 100.0 ModelChange.clamp_species(r, "X", False) RoadrunnerSBMLModel.set_timecourse_selections(r) s3 = r.simulate(start=0, end=100, steps=500) s3 = pd.DataFrame(s3, columns=s3.colnames) s3.time = s3.time + 200.0 ModelChange.clamp_species(r, "X", True) RoadrunnerSBMLModel.set_timecourse_selections(r) s4 = r.simulate(start=0, end=100, steps=500) s4 = pd.DataFrame(s4, columns=s4.colnames) s4.time = s4.time + 300.0 ModelChange.clamp_species(r, "X", False) RoadrunnerSBMLModel.set_timecourse_selections(r) s5 = r.simulate(start=0, end=100, steps=500) s5 = pd.DataFrame(s5, columns=s5.colnames) s5.time = s5.time + 400.0 plt.plot(s1.time, s1.X, "o-") plt.plot(s2.time, s2.X, "o-") plt.plot(s3.time, s3.X, "o-") plt.plot(s4.time, s4.X, "o-") plt.plot(s5.time, s5.X, "o-") plt.show()
[docs]def run_model_clamp1(): """Using Timecourse simulations for clamps.""" simulator = Simulator(MODEL_REPRESSILATOR) # setting a species as boundary condition tcsim = TimecourseSim( [ Timecourse(start=0, end=100, steps=100), Timecourse( start=0, end=300, steps=100, model_manipulations={ModelChange.CLAMP_SPECIES: {"X": True}}, ), Timecourse( start=0, end=200, steps=100, model_manipulations={ModelChange.CLAMP_SPECIES: {"X": False}}, ), ] ) xres = simulator.run_timecourse(tcsim) # create figure fig, ax1 = plt.subplots(nrows=1, ncols=1, figsize=(5, 5)) for sid in ["X", "Y", "Z"]: add_line( ax1, xres, xid="time", yid=sid, xunit="second", yunit="dimensionless", label=sid, ) for ax in (ax1,): ax.legend() ax.set_xlabel("time") ax.set_ylabel("concentration") plt.show()
[docs]def run_model_clamp2(): def plot_result(result: XResult, title: str = None) -> None: # create figure fig, (ax1) = plt.subplots(nrows=1, ncols=1, figsize=(5, 5)) fig.subplots_adjust(wspace=0.3, hspace=0.3) add_line( ax=ax1, xres=result, xid="time", yid="X", label="X", xunit="second", yunit="dimensionless", ) add_line( ax=ax1, xres=result, xid="time", yid="Y", label="Y", xunit="second", yunit="dimensionless", color="darkblue", ) if title: ax1.set_title(title) ax1.legend() plt.show() # reference simulation simulator = Simulator(MODEL_REPRESSILATOR) tcsim = TimecourseSim( [ Timecourse(start=0, end=220, steps=300, changes={"X": 10}), # clamp simulation Timecourse( start=0, end=200, steps=200, model_manipulations={ModelChange.CLAMP_SPECIES: {"X": True}}, ), # free simulation Timecourse( start=0, end=400, steps=400, model_manipulations={ModelChange.CLAMP_SPECIES: {"X": False}}, ), ] ) result = simulator.run_timecourse(tcsim) assert isinstance(result, XResult) plot_result(result, "clamp experiment (220-420)")
if __name__ == "__main__": run_model_change_example1() run_model_clamp1() run_model_clamp2()