Enzymatic Cycle
From BioNetWiki
A simple enzymatic cycle based on Example B from Kuwahara 2008. Species S1 and S4 are enzymes that bind reversibly to substrates S2 and S5, respectively. S1 catalyzes the transformation of substrate S2 into S5. S4 catalyzes the reverse transformation.
Reaction Network in BNGL
# Kuwahara JPC 2008, example B
begin parameters
# kinetic parameters (units: molecules/time)
k1 1.0
k2 1.0
k3 0.1
k4 1.0
k5 1.0
k6 0.1
# initial conditions (units: molecules)
S1_init 1
S2_init 50
S4_init 1
S5_init 50
end parameters
begin molecule types
# declaration of molecule types
S1
S2
S3
S4
S5
S6
end molecule types
begin seed species
# initial conditions
S1 S1_init
S2 S2_init
S3 0
S4 S4_init
S5 S5_init
S6 0
end seed species
begin reaction rules
# E1-S reversible binding
S2 + S1 <-> S3 k1, k2
# s2 -> s5, catalyzed by E1
S3 -> S5 + S1 k3
# E4-S reversible binding
S5 + S4 <-> S6 k4, k5
# s5 -> s2, catalyzed by E4
S6 -> S2 + S4 k6
end reaction rules
# actions
generate_network({overwrite=>1})
simulate_ssa({t_start=>0,t_end=>100,n_steps=>1000,print_end=>1})
Rule-based Implementation (BNGL style)
The next model is equivalent to the reaction network above. But this time we've written a rule-based model in "BNGL style". The substrate has a binding site for enzyme and two state configurations labeled "2" and "5". The enzymes bond to the susbtrate and cataylze a change in the configuration.
# Kuwahara JPC 2008, example B
# coded in BNGL style by J.Hogg
begin parameters
# kinetic parameters
k1 1.0 # /molecule/time
k2 1.0 # /time
k3 0.1 # /time
k4 1.0 # /molecule/time
k5 1.0 # /time
k6 0.1 # /time
# initial conditions (units: molecule)
E1_init 1
E4_init 1
S2_init 50
S5_init 50
end parameters
begin molecule types
S(e,c~2~5) # substrate, two configurations (2,5) and enzyme binding site
E1(s) # enzyme A, binds substrate in config 5
E4(s) # enzyme B, binds substrate in config 2
end molecule types
begin seed species
# initial conditions
E1(s) E1_init # S1
S(e,c~2) S2_init # S2
S(e!0,c~2).E1(s!0) 0 # S3
E4(s) E4_init # S4
S(e,c~5) S5_init # S5
S(e!0,c~5).E4(s!0) 0 # S6
end seed species
begin observables
# conservation of mass (check)
Molecules Total_Mols E1() E4() S()
end observables
begin reaction rules
# E1-S reversible binding
S(e,c~2) + E1(s) <-> S(e!0,c~2).E1(s!0) k1, k2
# s2 -> s5, catalyzed by E1
S(e!0,c~2).E1(s!0) -> S(e,c~5) + E1(s) k3
# E4-S reversible binding
S(e,c~5) + E4(s) <-> S(e!0,c~5).E4(s!0) k4, k5
# s5 -> s2, catalyzed by E4
S(e!0,c~5).E4(s!0) -> S(e,c~2) + E4(s) k6
end reaction rules
# actions
generate_network({overwrite=>1})
simulate_ssa({t_start=>0,t_end=>100,n_steps=>1000,print_end=>1})
Michaelis-Menten Implementation
The final version of the model describes the same enzymatic cycle with Michaelis-Menten kinetics. Simulating this model in BNG requires the Network3 simulator. Network3 is packaged with the latest test distribution. To use Network3, download the test distribution and compile Network3 by executing 'make network' from the BNG root directory (requires Cmake and a C++ compiler).
# Kuwahara JPC 2008, example B
# Michaelis-Menten variant
# coded in BNGL by J.Hogg
begin parameters
# kinetic parameters
k1 1.0 # units: /time/molecule
k2 1.0 # units: /time
k3 0.1 # units: /time
k4 1.0 # units: /time/molecule
k5 1.0 # units: /time
k6 0.1 # units: /time
# total enzyme and substrate (units: molecules)
E1_tot 1
E4_tot 1
S2_tot 50
S5_tot 50
# derived parameters (units: molecules)
Km2 (k2 + k3)/k1 # units: molecules
Km5 (k5 + k6)/k4 # units: molecules
# calculate initial free S2 and S5,
# assuming quasi-equillibrium enzyme binding
S2_free0 (S2_tot + E1_tot - Km2)/2 + sqrt((S2_tot + E1_tot - Km2)^2 + 4*Km2)/2
S5_free0 (S5_tot + E4_tot - Km5)/2 + sqrt((S5_tot + E4_tot - Km5)^2 + 4*Km5)/2
end parameters
begin molecule types
S(c~2~5)
E1()
E4()
end molecule types
begin seed species
# initial conditions
E1() E1_tot # S1+S3 (total enzyme A)
S(c~2) S2_free0 # S2 (free substrate in config 2)
E4() E4_tot # S4+S6 (total enzyme B)
S(c~5) S5_free0 # S5 (free substrate in config 5)
end seed species
begin observables
# free substrate (required for functional ratelaw)
Molecules S2_free S(c~2)
Molecules S5_free S(c~5)
end observables
begin reaction rules
# s2 -> s5, catalyzed by E1
S(c~2) + E1() -> S(c~5) + E1() k3/(Km2 + S2_free)
# s5 -> s2, catalyzed by E4
S(c~5) + E4() -> S(c~2) + E4() k6/(Km5 + S5_free)
end reaction rules
# actions
generate_network({overwrite=>1})
simulate_ode({t_start=>0,t_end=>100,n_steps=>1000,print_end=>1})
Notice that the Michaelis-Menten model is posed in terms of free substrate, not total substrate. Consequently, initial free substrate must be calculated as a quasi-equilibrium of total substrate and total enzyme. If it is necessary to pose a model in terms of total substrate, a variant of the Michaelis-Menten ratelaw would be required. See the BioNetGen chapter (see Note #20).
