SBML¶
import¶
InĀ [1]:
Copied!
import matplotlib.pyplot as plt
from modelbase.ode import Model, Simulator
from modelbase.sbml.parser import Parser
from pathlib import Path
import matplotlib.pyplot as plt
from modelbase.ode import Model, Simulator
from modelbase.sbml.parser import Parser
from pathlib import Path
UserWarning: Assimulo not found, disabling sundials support.
InĀ [2]:
Copied!
file = Path("assets") / "00001-sbml-l3v2.xml"
parser = Parser(file=file)
m, y0 = parser.build_model_from_sbml()
file = Path("assets") / "00001-sbml-l3v2.xml"
parser = Parser(file=file)
m, y0 = parser.build_model_from_sbml()
InĀ [3]:
Copied!
s = Simulator(m)
s.initialise(y0)
t, y = s.simulate(10)
s = Simulator(m)
s.initialise(y0)
t, y = s.simulate(10)
InĀ [4]:
Copied!
fig, ax = s.plot(xlabel="Time", ylabel="Concentration")
plt.show()
fig, ax = s.plot(xlabel="Time", ylabel="Concentration")
plt.show()
export¶
InĀ [5]:
Copied!
import matplotlib.pyplot as plt
from modelbase.ode import Model, Simulator
from modelbase.ode import ratelaws as rl
from modelbase.ode import ratefunctions as rf
import matplotlib.pyplot as plt
from modelbase.ode import Model, Simulator
from modelbase.ode import ratelaws as rl
from modelbase.ode import ratefunctions as rf
InĀ [6]:
Copied!
m = Model()
m.add_parameters({"v0": 1, "k1p": 0.5, "k1m": 1, "k2": 0.1})
m.add_compounds(["X", "Y"])
m.add_reaction_from_ratelaw(rate_name="v0", ratelaw=rl.Constant(product="X", k="v0"))
m.add_reaction_from_ratelaw(
rate_name="v1",
ratelaw=rl.ReversibleMassAction(
substrates=["X"], products=["Y"], k_fwd="k1p", k_bwd="k1m"
),
)
m.add_reaction_from_ratelaw(
rate_name="v2", ratelaw=rl.MassAction(substrates=["Y"], products=[], k_fwd="k2")
)
s = Simulator(m)
s.initialise({"X": 0, "Y": 0})
t, y = s.simulate(100)
fig, ax = s.plot(xlabel="Time [au]", ylabel="Concentration [au]")
plt.show()
m = Model()
m.add_parameters({"v0": 1, "k1p": 0.5, "k1m": 1, "k2": 0.1})
m.add_compounds(["X", "Y"])
m.add_reaction_from_ratelaw(rate_name="v0", ratelaw=rl.Constant(product="X", k="v0"))
m.add_reaction_from_ratelaw(
rate_name="v1",
ratelaw=rl.ReversibleMassAction(
substrates=["X"], products=["Y"], k_fwd="k1p", k_bwd="k1m"
),
)
m.add_reaction_from_ratelaw(
rate_name="v2", ratelaw=rl.MassAction(substrates=["Y"], products=[], k_fwd="k2")
)
s = Simulator(m)
s.initialise({"X": 0, "Y": 0})
t, y = s.simulate(100)
fig, ax = s.plot(xlabel="Time [au]", ylabel="Concentration [au]")
plt.show()
InĀ [7]:
Copied!
print(m.write_sbml_model())
print(m.write_sbml_model())
<?xml version="1.0" encoding="UTF-8"?>
<sbml xmlns="http://www.sbml.org/sbml/level3/version2/core" xmlns:fbc="http://www.sbml.org/sbml/level3/version1/fbc/version2" sboTerm="SBO:0000062" level="3" version="2" fbc:required="false">
<model id="modelbase__45__model__45__2026__45__06__45__07" name="modelbase__45__model" substanceUnits="mole" timeUnits="second" extentUnits="mole" fbc:strict="true">
<listOfUnitDefinitions>
<unitDefinition id="per_second">
<listOfUnits>
<unit kind="second" exponent="-1" scale="0" multiplier="1"/>
</listOfUnits>
</unitDefinition>
</listOfUnitDefinitions>
<listOfCompartments>
<compartment id="c" name="cytosol" spatialDimensions="3" size="1" units="litre" constant="true"/>
</listOfCompartments>
<listOfSpecies>
<species id="X" compartment="c" hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false"/>
<species id="Y" compartment="c" hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false"/>
</listOfSpecies>
<listOfReactions>
<reaction id="v0" reversible="false">
<listOfProducts>
<speciesReference species="X" stoichiometry="1" constant="false"/>
</listOfProducts>
<kineticLaw>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<ci> v0 </ci>
</math>
</kineticLaw>
</reaction>
<reaction id="v1" reversible="true">
<listOfReactants>
<speciesReference species="X" stoichiometry="1" constant="false"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="Y" stoichiometry="1" constant="false"/>
</listOfProducts>
<kineticLaw>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<minus/>
<apply>
<times/>
<ci> k1p </ci>
<ci> X </ci>
</apply>
<apply>
<times/>
<ci> k1m </ci>
<ci> Y </ci>
</apply>
</apply>
</math>
</kineticLaw>
</reaction>
<reaction id="v2" reversible="false">
<listOfReactants>
<speciesReference species="Y" stoichiometry="1" constant="false"/>
</listOfReactants>
<kineticLaw>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<times/>
<ci> k2 </ci>
<ci> Y </ci>
</apply>
</math>
</kineticLaw>
</reaction>
</listOfReactions>
</model>
</sbml>