In [2]:
% matplotlib inline
In [26]:
from __future__ import print_function, division
import tellurium as te
# Defining the model as one antimony is working
antOne = """
model one()
J0: S1 -> S2; k1*S1;
S1=10.0; S2=0.0; k1=0.1;
end
"""
antTwo = """
model one()
J0: S1 -> S2; k1*S1;
S1=10.0; S2=0.0; k1=0.1;
end
model two()
A: one();
A.k1 is k1;
k1 := time+0.1;
end
"""
rOne = te.loada(antOne)
rTwo = te.loada(antTwo)
# Referencing another model not in the string
# is not working
# this is crucial to modify other sbml models
antThreeMods = """
model three()
A: one();
A.k1 is k1;
k1 := time+0.1;
end
"""
antThree = antOne + antThreeMods
print(antThree)
rThree = te.loada(antThree)
sOne = rOne.simulate()
rOne.plot(sOne)
sTwo = rTwo.simulate()
rTwo.plot(sTwo)
sThree = rThree.simulate()
rThree.plot(sThree)
model one()
J0: S1 -> S2; k1*S1;
S1=10.0; S2=0.0; k1=0.1;
end
model three()
A: one();
A.k1 is k1;
k1 := time+0.1;
end
Out[26]:
<module 'matplotlib.pyplot' from '/usr/local/lib/python2.7/dist-packages/matplotlib/pyplot.pyc'>
In [32]:
from __future__ import print_function, division
import tellurium as te
# Load an SBML model
r = te.loads("Koenig_demo_10.xml")
antDemo = r.getAntimony()
# Simulate unmodified model
sr = r.simulate(0, 10, 101)
r.plot(sr)
# Change Km_A value over time (original model is required as part of antimony string)
antMod1 = """
model Mod1()
A: Koenig_demo_10();
A.Km_A is Km_A;
Km_A := 1.1+sin(time);
end
"""
# Simulate the modified model
antDemoMod1 = antDemo + antMod1
rMod1 = te.loada(antDemoMod1)
sMod1 = rMod1.simulate(0, 10, 101)
rMod1.plot(sMod1)
print('*** Modified Antimony model ***')
print(antDemoMod1)
print('*** Modified SBML model ***')
print(rMod1.getSBML())
*** Modified Antimony model ***
// Created by libAntimony v2.9.0
model *Koenig_demo_10()
// Compartments and Species:
compartment e, c;
species e__A in e, e__C in e, e__B in e, c__C in c, c__B in c, c__A in c;
// Reactions:
bA: e__A => c__A; scale_f*(Vmax_bA/Km_A)*(e__A - c__A)/(1 dimensionless + e__A/Km_A + c__A/Km_A);
bB: c__B => e__B; scale_f*(Vmax_bB/Km_B)*(c__B - e__B)/(1 dimensionless + e__B/Km_B + c__B/Km_B);
bC: c__C => e__C; scale_f*(Vmax_bC/Km_C)*(c__C - e__C)/(1 dimensionless + e__C/Km_C + c__C/Km_C);
v1 in c: c__A => c__B; (scale_f*Vmax_v1/Km_A)*(c__A - (1 dimensionless/Keq_v1)*c__B);
v2 in c: c__A => c__C; (scale_f*Vmax_v2/Km_A)*c__A;
v3 in c: c__C => c__A; (scale_f*Vmax_v3/Km_A)*c__C;
v4 in c: c__C => c__B; (scale_f*Vmax_v4/Km_A)*(c__C - (1 dimensionless/Keq_v4)*c__B);
// Species initializations:
e__A = 10;
e__A has mM;
e__C = 0;
e__C has mM;
e__B = 0;
e__B has mM;
c__C = 0;
c__C has mM;
c__B = 0;
c__B has mM;
c__A = 0;
c__A has mM;
// Compartment initializations:
e = 1e-06;
e has m3;
c = 1e-06;
c has m3;
// Variable initializations:
Km_C = 3;
Km_C has mM;
scale_f = 1e-06;
scale_f has dimensionless;
Vmax_bB = 2;
Vmax_bB has mole_per_s;
Vmax_bC = 2;
Vmax_bC has mole_per_s;
Vmax_bA = 5;
Vmax_bA has mole_per_s;
Vmax_v2 = 0.5;
Vmax_v2 has mole_per_s;
Vmax_v3 = 0.5;
Vmax_v3 has mole_per_s;
Vmax_v1 = 1;
Vmax_v1 has mole_per_s;
Km_A = 1;
Km_A has mM;
Vmax_v4 = 0.5;
Vmax_v4 has mole_per_s;
Km_B = 0.5;
Km_B has mM;
Keq_v4 = 2;
Keq_v4 has dimensionless;
Keq_v1 = 10;
Keq_v1 has dimensionless;
// Other declarations:
var e, c;
const Km_C, scale_f, Vmax_bB, Vmax_bC, Vmax_bA, Vmax_v2, Vmax_v3, Vmax_v1;
const Km_A, Vmax_v4, Km_B, Keq_v4, Keq_v1;
// Unit definitions:
unit kg = kilogram;
unit mM = mole / metre^3;
unit m = metre;
unit s = second;
unit m3 = metre^3;
unit m2 = metre^2;
unit mole_per_s = mole / second;
unit length = m;
unit area = m2;
unit volume = m3;
unit substance = mole;
unit extent = mole;
unit time_unit = s;
// Display Names:
m is "plasma membrane";
e is "external compartment";
c is "cell compartment";
e__A is "A";
e__C is "C";
e__B is "B";
c__C is "C";
c__B is "B";
c__A is "A";
scale_f is "metabolic scaling factor";
bA is "bA (A import)";
bB is "bB (B export)";
bC is "bC (C export)";
v1 is "v1 (A -> B)";
v2 is "v2 (A -> C)";
v3 is "v3 (C -> A)";
v4 is "v4 (C -> B)";
end
model Mod1()
A: Koenig_demo_10();
A.Km_A is Km_A;
Km_A := 1.1+sin(time);
end
*** Modified SBML model ***
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created by libAntimony version v2.9.0 with libSBML version 5.12.1. -->
<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" level="3" version="1">
<model id="Koenig_demo_10" name="Koenig_demo_10" substanceUnits="substance" timeUnits="time_unit" volumeUnits="volume" areaUnits="area" lengthUnits="length" extentUnits="extent">
<listOfUnitDefinitions>
<unitDefinition id="mM">
<listOfUnits>
<unit kind="mole" exponent="1" scale="0" multiplier="1"/>
<unit kind="metre" exponent="-3" scale="0" multiplier="1"/>
</listOfUnits>
</unitDefinition>
<unitDefinition id="m3">
<listOfUnits>
<unit kind="metre" exponent="3" scale="0" multiplier="1"/>
</listOfUnits>
</unitDefinition>
<unitDefinition id="mole_per_s">
<listOfUnits>
<unit kind="mole" exponent="1" scale="0" multiplier="1"/>
<unit kind="second" exponent="-1" scale="0" multiplier="1"/>
</listOfUnits>
</unitDefinition>
<unitDefinition id="kg">
<listOfUnits>
<unit kind="kilogram" exponent="1" scale="0" multiplier="1"/>
</listOfUnits>
</unitDefinition>
<unitDefinition id="m" name="plasma membrane">
<listOfUnits>
<unit kind="metre" exponent="1" scale="0" multiplier="1"/>
</listOfUnits>
</unitDefinition>
<unitDefinition id="s">
<listOfUnits>
<unit kind="second" exponent="1" scale="0" multiplier="1"/>
</listOfUnits>
</unitDefinition>
<unitDefinition id="m2">
<listOfUnits>
<unit kind="metre" exponent="2" scale="0" multiplier="1"/>
</listOfUnits>
</unitDefinition>
<unitDefinition id="length">
<listOfUnits>
<unit kind="metre" exponent="1" scale="0" multiplier="1"/>
</listOfUnits>
</unitDefinition>
<unitDefinition id="area">
<listOfUnits>
<unit kind="metre" exponent="2" scale="0" multiplier="1"/>
</listOfUnits>
</unitDefinition>
<unitDefinition id="volume">
<listOfUnits>
<unit kind="metre" exponent="3" scale="0" multiplier="1"/>
</listOfUnits>
</unitDefinition>
<unitDefinition id="substance">
<listOfUnits>
<unit kind="mole" exponent="1" scale="0" multiplier="1"/>
</listOfUnits>
</unitDefinition>
<unitDefinition id="extent">
<listOfUnits>
<unit kind="mole" exponent="1" scale="0" multiplier="1"/>
</listOfUnits>
</unitDefinition>
<unitDefinition id="time_unit">
<listOfUnits>
<unit kind="second" exponent="1" scale="0" multiplier="1"/>
</listOfUnits>
</unitDefinition>
</listOfUnitDefinitions>
<listOfCompartments>
<compartment id="e" name="external compartment" spatialDimensions="3" size="1e-06" units="m3" constant="false"/>
<compartment id="c" name="cell compartment" spatialDimensions="3" size="1e-06" units="m3" constant="false"/>
</listOfCompartments>
<listOfSpecies>
<species id="e__A" name="A" compartment="e" initialConcentration="10" substanceUnits="mole" hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false"/>
<species id="e__C" name="C" compartment="e" initialConcentration="0" substanceUnits="mole" hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false"/>
<species id="e__B" name="B" compartment="e" initialConcentration="0" substanceUnits="mole" hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false"/>
<species id="c__C" name="C" compartment="c" initialConcentration="0" substanceUnits="mole" hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false"/>
<species id="c__B" name="B" compartment="c" initialConcentration="0" substanceUnits="mole" hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false"/>
<species id="c__A" name="A" compartment="c" initialConcentration="0" substanceUnits="mole" hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false"/>
</listOfSpecies>
<listOfParameters>
<parameter id="scale_f" name="metabolic scaling factor" value="1e-06" units="dimensionless" constant="true"/>
<parameter id="Vmax_bA" value="5" units="mole_per_s" constant="true"/>
<parameter id="Km_A" value="1" units="mM" constant="true"/>
<parameter id="Vmax_bB" value="2" units="mole_per_s" constant="true"/>
<parameter id="Km_B" value="0.5" units="mM" constant="true"/>
<parameter id="Vmax_bC" value="2" units="mole_per_s" constant="true"/>
<parameter id="Km_C" value="3" units="mM" constant="true"/>
<parameter id="Vmax_v1" value="1" units="mole_per_s" constant="true"/>
<parameter id="Keq_v1" value="10" units="dimensionless" constant="true"/>
<parameter id="Vmax_v2" value="0.5" units="mole_per_s" constant="true"/>
<parameter id="Vmax_v3" value="0.5" units="mole_per_s" constant="true"/>
<parameter id="Vmax_v4" value="0.5" units="mole_per_s" constant="true"/>
<parameter id="Keq_v4" value="2" units="dimensionless" constant="true"/>
</listOfParameters>
<listOfReactions>
<reaction id="bA" name="bA (A import)" reversible="false" fast="false">
<listOfReactants>
<speciesReference species="e__A" stoichiometry="1" constant="true"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="c__A" stoichiometry="1" constant="true"/>
</listOfProducts>
<kineticLaw>
<math xmlns="http://www.w3.org/1998/Math/MathML" xmlns:sbml="http://www.sbml.org/sbml/level3/version1/core">
<apply>
<divide/>
<apply>
<times/>
<ci> scale_f </ci>
<apply>
<divide/>
<ci> Vmax_bA </ci>
<ci> Km_A </ci>
</apply>
<apply>
<minus/>
<ci> e__A </ci>
<ci> c__A </ci>
</apply>
</apply>
<apply>
<plus/>
<cn sbml:units="dimensionless" type="integer"> 1 </cn>
<apply>
<divide/>
<ci> e__A </ci>
<ci> Km_A </ci>
</apply>
<apply>
<divide/>
<ci> c__A </ci>
<ci> Km_A </ci>
</apply>
</apply>
</apply>
</math>
</kineticLaw>
</reaction>
<reaction id="bB" name="bB (B export)" reversible="false" fast="false">
<listOfReactants>
<speciesReference species="c__B" stoichiometry="1" constant="true"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="e__B" stoichiometry="1" constant="true"/>
</listOfProducts>
<kineticLaw>
<math xmlns="http://www.w3.org/1998/Math/MathML" xmlns:sbml="http://www.sbml.org/sbml/level3/version1/core">
<apply>
<divide/>
<apply>
<times/>
<ci> scale_f </ci>
<apply>
<divide/>
<ci> Vmax_bB </ci>
<ci> Km_B </ci>
</apply>
<apply>
<minus/>
<ci> c__B </ci>
<ci> e__B </ci>
</apply>
</apply>
<apply>
<plus/>
<cn sbml:units="dimensionless" type="integer"> 1 </cn>
<apply>
<divide/>
<ci> e__B </ci>
<ci> Km_B </ci>
</apply>
<apply>
<divide/>
<ci> c__B </ci>
<ci> Km_B </ci>
</apply>
</apply>
</apply>
</math>
</kineticLaw>
</reaction>
<reaction id="bC" name="bC (C export)" reversible="false" fast="false">
<listOfReactants>
<speciesReference species="c__C" stoichiometry="1" constant="true"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="e__C" stoichiometry="1" constant="true"/>
</listOfProducts>
<kineticLaw>
<math xmlns="http://www.w3.org/1998/Math/MathML" xmlns:sbml="http://www.sbml.org/sbml/level3/version1/core">
<apply>
<divide/>
<apply>
<times/>
<ci> scale_f </ci>
<apply>
<divide/>
<ci> Vmax_bC </ci>
<ci> Km_C </ci>
</apply>
<apply>
<minus/>
<ci> c__C </ci>
<ci> e__C </ci>
</apply>
</apply>
<apply>
<plus/>
<cn sbml:units="dimensionless" type="integer"> 1 </cn>
<apply>
<divide/>
<ci> e__C </ci>
<ci> Km_C </ci>
</apply>
<apply>
<divide/>
<ci> c__C </ci>
<ci> Km_C </ci>
</apply>
</apply>
</apply>
</math>
</kineticLaw>
</reaction>
<reaction id="v1" name="v1 (A -> B)" reversible="false" fast="false" compartment="c">
<listOfReactants>
<speciesReference species="c__A" stoichiometry="1" constant="true"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="c__B" stoichiometry="1" constant="true"/>
</listOfProducts>
<kineticLaw>
<math xmlns="http://www.w3.org/1998/Math/MathML" xmlns:sbml="http://www.sbml.org/sbml/level3/version1/core">
<apply>
<times/>
<apply>
<divide/>
<apply>
<times/>
<ci> scale_f </ci>
<ci> Vmax_v1 </ci>
</apply>
<ci> Km_A </ci>
</apply>
<apply>
<minus/>
<ci> c__A </ci>
<apply>
<times/>
<apply>
<divide/>
<cn sbml:units="dimensionless" type="integer"> 1 </cn>
<ci> Keq_v1 </ci>
</apply>
<ci> c__B </ci>
</apply>
</apply>
</apply>
</math>
</kineticLaw>
</reaction>
<reaction id="v2" name="v2 (A -> C)" reversible="false" fast="false" compartment="c">
<listOfReactants>
<speciesReference species="c__A" stoichiometry="1" constant="true"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="c__C" stoichiometry="1" constant="true"/>
</listOfProducts>
<kineticLaw>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<times/>
<apply>
<divide/>
<apply>
<times/>
<ci> scale_f </ci>
<ci> Vmax_v2 </ci>
</apply>
<ci> Km_A </ci>
</apply>
<ci> c__A </ci>
</apply>
</math>
</kineticLaw>
</reaction>
<reaction id="v3" name="v3 (C -> A)" reversible="false" fast="false" compartment="c">
<listOfReactants>
<speciesReference species="c__C" stoichiometry="1" constant="true"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="c__A" stoichiometry="1" constant="true"/>
</listOfProducts>
<kineticLaw>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<times/>
<apply>
<divide/>
<apply>
<times/>
<ci> scale_f </ci>
<ci> Vmax_v3 </ci>
</apply>
<ci> Km_A </ci>
</apply>
<ci> c__C </ci>
</apply>
</math>
</kineticLaw>
</reaction>
<reaction id="v4" name="v4 (C -> B)" reversible="false" fast="false" compartment="c">
<listOfReactants>
<speciesReference species="c__C" stoichiometry="1" constant="true"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="c__B" stoichiometry="1" constant="true"/>
</listOfProducts>
<kineticLaw>
<math xmlns="http://www.w3.org/1998/Math/MathML" xmlns:sbml="http://www.sbml.org/sbml/level3/version1/core">
<apply>
<times/>
<apply>
<divide/>
<apply>
<times/>
<ci> scale_f </ci>
<ci> Vmax_v4 </ci>
</apply>
<ci> Km_A </ci>
</apply>
<apply>
<minus/>
<ci> c__C </ci>
<apply>
<times/>
<apply>
<divide/>
<cn sbml:units="dimensionless" type="integer"> 1 </cn>
<ci> Keq_v4 </ci>
</apply>
<ci> c__B </ci>
</apply>
</apply>
</apply>
</math>
</kineticLaw>
</reaction>
</listOfReactions>
</model>
</sbml>
In [ ]:
Content source: sys-bio/tellurium
Similar notebooks: