A BIONETGEN Tutorial
Outline
• Downloading BNG• Installing BNG• Running BNG
– text-based interface– graphical interface – RULEBUILDER– web-based interface – GETBONNIE
• Simple example• Extending the example• Detailed model of TLR4 signaling
Creating a BNG model6. Create a BioNetGen model (with .bngl extension) in a text file using your favorite editor.
Running BNG7. Open a terminal window, navigate to the file location, and type path to BNG2.pl followed by filename.
The BNG logfile8. (optional) Piping output to a logfile.
~/BioNetGen2/Perl2/BNG2.pl example1.bngl > & example1.log
BioNetGen version 2.0.48readFile::Reading from file example1.bnglRead 11 parameters.Read 3 species.Adding P as allowed state of component Y of molecule RRead 3 observable(s).Read 5 reaction rule(s).Iteration 0: 3 species 0 rxns 0.00e+00 CPU sIteration 1: 4 species 1 rxns 1.00e-02 CPU sIteration 2: 5 species 3 rxns 0.00e+00 CPU sIteration 3: 6 species 5 rxns 1.00e-02 CPU sIteration 4: 9 species 9 rxns 1.00e-02 CPU sIteration 5: 12 species 20 rxns 3.00e-02 CPU sIteration 6: 14 species 32 rxns 3.00e-02 CPU sIteration 7: 14 species 36 rxns 2.00e-02 CPU sCumulative CPU time for each ruleRule 1: 6 reactions 3.00e-02 CPU s 5.00e-03 CPU s/rxnRule 2: 12 reactions 5.00e-02 CPU s 4.17e-03 CPU s/rxnRule 3: 3 reactions 0.00e+00 CPU s 0.00e+00 CPU s/rxnRule 4: 5 reactions 2.00e-02 CPU s 4.00e-03 CPU s/rxnRule 5: 10 reactions 1.00e-02 CPU s 1.00e-03 CPU s/rxnTotal : 36 reactions 1.10e-01 CPU s 3.06e-03 CPU s/rxnWrote network to example1.net.CPU TIME: generate_network 0.1 s.Network simulation using ODEsRunning run_network on phoebe
Overview of inputs and outputs
BIONETGENODE
NETWORK
SSA
.net
.gdat
.cdat
BNGL
.log
Elements of a BNGL file
• parameters• molecule types• seed species• reaction rules• observables• actions
A simple example:Ligand-receptor binding
EGF
EGFR
VVo
A simple example:parameters
EGF
EGFR
VVo
begin parameters # Physical and geometric constants
NA 6.0e23 #Avogadro’s num f 1 #scaling factor Vo f*1e-10 # L V f*3e-12 # L # Initial concentrations EGF0 2e-9*NA*Vo #nM EGFR0 f*1.8e5 #copy per cell
# Rate constants kp1 9.0e7/(NA*Vo) #input /M/sec km1 0.06 #/sec end parameters
A simple example:parameters
EGF
EGFR
VVo
Summary
Concentration units : copies per cell• Multiply concentrations by NA*Vrxn
• Don’t scale first order rate constants• Divide second order rate constants by NA*Vrxn
Following this recipe allows switching between ODE and stochastic simulation without parameter modification.
A simple example:molecule types
EGF
EGFR
begin molecule types
EGF(R) EGFR(L,CR1,Y1068~U~P)
end molecule types
R
L
CR1
Y1068 UP
A simple example:seed species
EGF
EGFR
begin seed species
EGF(R) EGF0 EGFR(L,CR1,Y1068~U) EGFR0
end seed species
R
L
CR1
Y1068~U
EGF
EGFR
Pattern basicsBasic Definition: A set of molecules that may be partially specified and selects a set of species through its allowed mappings.
Basic Definition: A set of molecules that may be partially specified and selects a set of species through its allowed mappings.
EGF(R)Pattern
Species
Mapping
EGF(R)
EGFR(L)
EGFR(L,CR1,Y1068~U) EGFR(L,CR1,Y1068~P)
A simple example:reaction rules
EGF
begin reaction rules
EGF(R) + EGFR(L) <-> EGF(R!1).EGFR(L!1) kp1, km1
end reaction rules
EGF
EGFR
+EGFEGF
EGFR
k+1
k-1
A simple example:actions
begin parameters …end parameters
begin molecule types EGF(R) EGFR(L,CR1,Y1068~U~P)end molecule types
begin seed species EGF(R) EGF0 EGFR(L,CR1,Y1068~U) EGFR0end seed species
begin reaction rules EGF(R) + EGFR(L) <-> EGF(R!1).EGFR(L!1) kp1, km1end reaction rules
# actionsgenerate_network({overwrite=>1});
Generates network of species and reactions by iterative application of rules starting with seed species
A simple example:Application of the forward binding rule
EGF(R) + EGFR(L) -> EGF(R!1).EGFR(L!1) kp1
Step 1: Match patterns onto reactant species.Step 2: Copy selected species to product side.Step 3: Apply transformation specified by rule.
Add bond
Reaction rule
A simple example:Application of the forward binding rule
EGF(R) + EGFR(L) -> EGF(R!1).EGFR(L!1) kp1
Step 1: Match patterns onto reactant species.
Add bond
Reaction rule
EGF(R) EGFR(L,CR1,Y1068~U) +
A simple example:Application of the forward binding rule
EGF(R) + EGFR(L) -> EGF(R!1).EGFR(L!1) kp1
Step 1: Match patterns onto reactant species.
Add bond
Reaction rule
EGF(R) EGFR(L,CR1,Y1068~U) +
Step 2: Copy selected species to product side.
-> EGF(R) + EGFR(L,CR1,Y1068~U)
A simple example:Application of the forward binding rule
EGF(R) + EGFR(L) -> EGF(R!1).EGFR(L!1) kp1
Step 1: Match patterns onto reactant species.
Add bond
Reaction rule
EGF(R) EGFR(L,CR1,Y1068~U) +
Step 2: Copy selected species to product side.
-> EGF(R) + EGFR(L,CR1,Y1068~U)
Step 3: Apply transformation specified by rule.
-> EGF(R!1).EGFR(L!1,CR1,Y1068~U) kp1
New species
A simple example:Application of the forward binding rule
EGF(R) + EGFR(L) -> EGF(R!1).EGFR(L!1) kp1
Add bond
Reaction rule
EGF(R) EGFR(L,CR1,Y1068~U) +
-> EGF(R!1).EGFR(L!1,CR1,Y1068~U) kp1
New species
New reaction
A simple example:Application of the reverse binding rule
EGF(R!1).EGFR(L!1) -> EGF(R) + EGFR(L) km1
Reaction rule
Delete bond
EGF(R!1).EGFR(L!1,CR1,Y1068~U)
A simple example:Application of the reverse binding rule
EGF(R!1).EGFR(L!1) -> EGF(R) + EGFR(L) km1
Reaction rule
Delete bond
EGF(R!1).EGFR(L!1,CR1,Y1068~U)
-> EGF(R!1).EGFR(L!1,CR1,Y1068~U)
A simple example:Application of the reverse binding rule
EGF(R!1).EGFR(L!1) -> EGF(R) + EGFR(L) km1
Reaction rule
Delete bond
EGF(R!1).EGFR(L!1,CR1,Y1068~U)
-> EGF(R) + EGFR(L,CR1,Y1068~U) km1
New reaction2
A simple example: Overview of generate_network
seed species EGF(R) EGFR(L,CR1,Y1068~U)
rule1f: EGF(R) + EGFR(L) -> EGF(R!1).EGFR(L!1) kp1
Iteration 1:
A simple example: Overview of generate_network
seed species EGF(R) EGFR(L,CR1,Y1068~U)
rule1f: EGF(R) + EGFR(L) -> EGF(R!1).EGFR(L!1) kp1
Iteration 1:
new reaction: EGF(R) + EGFR(L,CR1,Y1068~U) -> EGF(R!1).EGFR(L!1,CR1,Y1068~U) kp1
new species: EGF(R!1).EGFR(L!1,CR1,Y1068~U)
A simple example: Overview of generate_network
seed species EGF(R) EGFR(L,CR1,Y1068~U)
rule1f: EGF(R) + EGFR(L) -> EGF(R!1).EGFR(L!1) kp1
Iteration 1:
new reaction: EGF(R) + EGFR(L,CR1,Y1068~U) -> EGF(R!1).EGFR(L!1,CR1,Y1068~U) kp1
new species: EGF(R!1).EGFR(L!1,CR1,Y1068~U)
Network after Iteration 1species 1 EGF(R) 2 EGFR(L,CR1,Y1068~U) 3 EGF(R!1).EGFR(L!1,CR1,Y1068~U)
reactions 1 1,2 3 kp1
A simple example: Overview of generate_network
Iteration 2:
species 1 EGF(R) 2 EGFR(L,CR1,Y1068~U) 3 EGF(R!1).EGFR(L!1,CR1,Y1068~U)
From iteration 1
rule1r: EGF(R!1).EGFR(L!1) -> EGF(R) + EGFR(L) km1
new reaction: EGF(R!1).EGFR(L!1,CR1,Y1068~U) -> EGF(R) + EGFR(L,CR1,Y1068~U) km1
Network after Iteration 2species 1 EGF(R) 2 EGFR(L,CR1,Y1068~U) 3 EGF(R!1).EGFR(L!1,CR1,Y1068~U)
reactions 1 1,2 3 kp1 # rule1f 2 3 1,2 km1 # rule1r
A simple example: Overview of generate_network
Iteration 2:
species 1 EGF(R) 2 EGFR(L,CR1,Y1068~U) 3 EGF(R!1).EGFR(L!1,CR1,Y1068~U)
From iteration 1
rule1r: EGF(R!1).EGFR(L!1) -> EGF(R) + EGFR(L) km1
new reaction: EGF(R!1).EGFR(L!1,CR1,Y1068~U) -> EGF(R) + EGFR(L,CR1,Y1068~U) km1
Network after Iteration 2 - finalspecies 1 EGF(R) 2 EGFR(L,CR1,Y1068~U) 3 EGF(R!1).EGFR(L!1,CR1,Y1068~U)
reactions 1 1,2 3 kp1 # rule1f 2 3 1,2 km1 # rule1r
A simple example: Running BNG2.pl
BNG2.pl .netBNGL
.log
generate_network
A simple example: Running BNG2.pl
phoebe% ~/BioNetGen2/Perl2/BNG2.pl SimpleExample.bngl /Users/faeder/BioNetGen2/Perl2/BNG2.plBioNetGen version 2.0.48readFile::Reading from file SimpleExample.bnglRead 8 parameters.Read 2 molecule types.Read 2 species.Read 1 reaction rule(s).WARNING: Removing old network file SimpleExample.net.Iteration 0: 2 species 0 rxns 0.00e+00 CPU sIteration 1: 3 species 1 rxns 0.00e+00 CPU sIteration 2: 3 species 2 rxns 0.00e+00 CPU sCumulative CPU time for each ruleRule 1: 2 reactions 0.00e+00 CPU s 0.00e+00 CPU s/rxnTotal : 2 reactions 0.00e+00 CPU s 0.00e+00 CPU s/rxnWrote network to SimpleExample.net.
A simple example:The .net file
begin molecule types 1 EGF(R) 2 EGFR(L,CR1,Y1068~U~P)end molecule types begin species 1 EGF(R) EGF0 2 EGFR(CR1,L,Y1068~U) EGFR0 3 EGF(R!1).EGFR(CR1,L!1,Y1068~U) 0end speciesbegin reaction rulesRule1: \ EGF(R) + EGFR(L) <-> EGF(R!1).EGFR(L!1) kp1, km1# Bind(0.0.0,0.1.0)# Reverse# Unbind(0.0.0,0.1.0)end reaction rulesbegin reactions 1 1,2 3 kp1 #Rule1 2 3 1,2 km1 #Rule1rend reactions SimpleExample.net
The .net file
Translation of the network model into ordinary differential equations
species 1 EGF(R) EGF0 2 EGFR(CR1,L,Y1068~U) EGFR0 3 EGF(R!1).EGFR(CR1,L!1,Y1068~U) 0
reactions 1 1,2 3 kp1 #Rule1 2 3 1,2 km1 #Rule1r
Dependent variablesDependent variables
Flux termsFlux terms
f1 f2
Exporting the model
BNG2.pl .netBNGL
.log
generate_network
writeformat
Exporting model equations to Matlab:writeMfile
begin parameters …end parameters
begin molecule types EGF(R) EGFR(L,CR1,Y1068~U~P)end molecule types
begin seed species EGF(R) EGF0 EGFR(L,CR1,Y1068~U) EGFR0end seed species
begin reaction rules EGF(R) + EGFR(L) <-> EGF(R!1).EGFR(L!1) kp1, km1end reaction rules
# actionsgenerate_network({overwrite=>1});
writeMfile();
Ordinary differential equations in the M-file
% M-file for model SimpleExample created by BioNetGen 2.0.48function [t_out,obs_out,x_out]= SimpleExample(tend)
Nspecies=3;Nreactions=2;obs_out=zeros(1);% ParametersNA=6.0e23;f=1;Vo=f*1e-10;V=f*3e-12;EGF0=(2e-9*NA)*Vo;EGFR0=f*1.8e5;kp1=3.0e6/(NA*V);km1=0.06;
% Intial concentrationsx0= [ EGF0; EGFR0; 0;];
% Reaction flux functionfunction f= flux(t,x) f(1)=kp1*x(1)*x(2); f(2)=km1*x(3);end% Derivative functionfunction d= xdot(t,x) f=flux(t,x); d(1,1)= -f(1) +f(2); d(2,1)= -f(1) +f(2); d(3,1)= +f(1) -f(2);endsnames={'EGF(R)','EGFR(CR1,L,Y1068~U)','EGF(R!1).EGFR(CR1,L!1,Y1068~U)'};
% Integrate ODEs[t_out,x_out]= ode15s(@xdot, [0 tend], x0);% plot species concentrationsplot(t_out,x_out);legend(snames);end
SimpleExample.m
Running exported model as a Matlab function
>> SimpleExample(120)
Export to the Systems Biology Markup Language (SBML)
• SBML is an XML specification for biological models
• Many simulation tools read and write SBML• Supports standard reaction network models• generate_network must be invoked prior to
export• Support for rule-based models will appear in
Level 3 (current level is 2+)• Website: http://sbml.org
Running the simulation within BioNetGen
BNG2.plODE
NETWORK
SSA
.net
.gdat
.cdat
BNGL
.log
generate_networksimulate_ode
simulate_ssa
Running the simulation within BioNetGen
begin parameters …end parameters
begin molecule types EGF(R) EGFR(L,CR1,Y1068~U~P)end molecule types
begin seed species EGF(R) EGF0 EGFR(L,CR1,Y1068~U) EGFR0end seed species
begin reaction rules EGF(R) + EGFR(L) <-> EGF(R!1).EGFR(L!1) kp1, km1end reaction rules
# actionsgenerate_network({overwrite=>1});saveConcentrations();
simulate_ode({suffix=>ode,t_end=>120,n_steps=>50});
Running the simulation within BioNetGen
begin parameters …end parameters
begin molecule types EGF(R) EGFR(L,CR1,Y1068~U~P)end molecule types
begin seed species EGF(R) EGF0 EGFR(L,CR1,Y1068~U) EGFR0end seed species
begin reaction rules EGF(R) + EGFR(L) <-> EGF(R!1).EGFR(L!1) kp1, km1end reaction rules
# actionsgenerate_network({overwrite=>1});saveConcentrations();
simulate_ode({suffix=>ode,t_end=>120,n_steps=>50});
BNG, like many other systems biology applications, uses the CVODE library for solving ODE’s.
Sparse option can be used to solve systems up to about 50,000 equations.
BNG, like many other systems biology applications, uses the CVODE library for solving ODE’s.
Sparse option can be used to solve systems up to about 50,000 equations.
The .cdat file
# time 1 2 3 0.0000000000000000e+00 1.2000000000000000e+05 1.8000000000000000e+05 0.0000000000000000e+00 2.3999999999999999e+00 6.9387285118773594e+04 1.2938728511877365e+05 5.0612714881226493e+04 4.7999999999999998e+00 5.0363939566816996e+04 1.1036393956681706e+05 6.9636060433183069e+04 7.1999999999999993e+00 4.1819631802026437e+04 1.0181963180202652e+05 7.8180368197973614e+04
# time 1 2 3 0.0000000000000000e+00 1.2000000000000000e+05 1.8000000000000000e+05 0.0000000000000000e+00 2.3999999999999999e+00 6.9387285118773594e+04 1.2938728511877365e+05 5.0612714881226493e+04 4.7999999999999998e+00 5.0363939566816996e+04 1.1036393956681706e+05 6.9636060433183069e+04 7.1999999999999993e+00 4.1819631802026437e+04 1.0181963180202652e+05 7.8180368197973614e+04
SimpleExample_ode.cdat
Your favorite plotting package
Some useful options• PhiBPlot – Java-based (JFreeChart) plotting utility provided with BNG• xmgrace – Unix / X windows graphing package great for XY plots• Matlab, Mathematica, gnuplot, Excel, etc.
The .cdat file in PhiBPlot
The .cdat file in PhiBPlot
These numbers correspond to indices of species in .net file
These numbers correspond to indices of species in .net file
The .cdat file in PhiBPlot
These numbers correspond to indices of species in .net file
These numbers correspond to indices of species in .net file
begin species 1 EGF(R) EGF0 2 EGFR(CR1,L,Y1068~U) EGFR0 3 EGF(R!1).EGFR(CR1,L!1,Y1068~U) 0end species
Stochastic simulations in BioNetGen
• Network simulation engine uses Gillespie Direct method
• Adequate performance for networks with up to ~50,000 species.
• May be used in ‘on-the-fly’ mode, which generates species and reactions as needed
Stochastic simulations in BioNetGen
• Network simulation engine uses Gillespie Direct method
• Adequate performance for networks with up to ~50,000 species.
• May be used in ‘on-the-fly’ mode, which generates species and reactions as needed
Comparison between ODE and stochastic simulations
begin parameters …end parameters
begin molecule types EGF(R) EGFR(L,CR1,Y1068~U~P)end molecule types
begin seed species EGF(R) EGF0 EGFR(L,CR1,Y1068~U) EGFR0end seed species
begin reaction rules EGF(R) + EGFR(L) <-> EGF(R!1).EGFR(L!1) kp1, km1end reaction rules
# actionsgenerate_network({overwrite=>1});saveConcentrations();simulate_ode({suffix=>ode,t_end=>120,n_steps=>50});resetConcentrations();simulate_ssa({suffix=>ssa,t_end=>120,n_steps=>50});
Viewing comparison in PhiBPlot
Viewing comparison in PhiBPlot
Viewing comparison in PhiBPlot
Noise is minimal because species concentrations are high.
Noise is minimal because species concentrations are high.
Viewing comparison in PhiBPlot
begin parameters # Physical and geometric constants
NA 6.0e23 #Avogadro’s num f 1 #scaling factor Vo f*1e-10 # L V f*3e-12 # L
Viewing comparison in PhiBPlot
begin parameters # Physical and geometric constants
NA 6.0e23 #Avogadro’s num f 0.001 #scaling factor Vo f*1e-10 # L V f*3e-12 # L
Viewing comparison in PhiBPlot
Let’s add another rule: dimerization
EGF
EGFR
k+2
k-2
+
Let’s add another rule: dimerization
EGF
EGFR
k+2
k-2
+
EGF(R!2).EGFR(L!2,CR1) + EGFR(L!3,CR1).EGF(R!3) Selects EGFR with free dimerization domain (CR1) and bound ligand-binding domain (L). Selects EGFR with free dimerization domain (CR1) and bound ligand-binding domain (L).
Let’s add another rule: dimerization
EGF
EGFR
k+2
k-2
+
EGF(R!2).EGFR(L!2,CR1) + EGFR(L!3,CR1).EGF(R!3)
A shorthand way to select the same properties uses the bond wildcard (‘!+’) and omits the EGF binding partner. A shorthand way to select the same properties uses the bond wildcard (‘!+’) and omits the EGF binding partner.
EGFR(L!+,CR1) + EGFR(L!+,CR1)
These patterns select EGFR molecules with free CR1 sites and their L sites bound to anything. These patterns select EGFR molecules with free CR1 sites and their L sites bound to anything.
Let’s add another rule: dimerization
EGF
EGFR
k+2
k-2
+
EGFR(L!+,CR1) + EGFR(L!+,CR1) <-> EGFR(L!+,CR1!1).EGFR(L!+,CR1!1) \ kp2,km2
Full ruleFull rule
Let’s add another rule: dimerization
EGF
EGFR
k+2
k-2
+
EGFR(L!+,CR1) + EGFR(L!+,CR1) <-> EGFR(L!+,CR1!1).EGFR(L!+,CR1!1) \ kp2,km2
Full ruleFull rule
Need to add kp2 and km2 to parameters block.Need to add kp2 and km2 to parameters block.
Application of the dimerization rule
EGFR(L!+,CR1) + EGFR(L!+,CR1)
EGFR(L!1,CR1,Y1068~U).EGF(R!1)
EGFR(L!1,CR1,Y1068~U).EGF(R!1)
add bond
EGF(R!1).EGFR(L!1,CR1!3,Y1068~U).EGFR(L!2,CR1!3,Y1068~U).EGF(R!2)
species 4
reactions … 3 3,3 4 0.5*kp2
New reaction
Application of the dimerization rule
EGFR(L!+,CR1) + EGFR(L!+,CR1)
EGFR(L!1,CR1,Y1068~U).EGF(R!1)
EGFR(L!1,CR1,Y1068~U).EGF(R!1)
add bond
EGF(R!1).EGFR(L!1,CR1!3,Y1068~U).EGFR(L!2,CR1!3,Y1068~U).EGF(R!2)
species 4
reactions … 3 3,3 4 0.5*kp2
New reactionSymmetry factor
An unexpected result…begin seed species EGF(R) EGF0 EGFR(L,CR1,Y1068~U) EGFR0end seed species
begin reaction rules EGF(R) + EGFR(L) <-> EGF(R!1).EGFR(L!1) kp1, km1 EGFR(L!+,CR1) + EGFR(L!+,CR1) <-> \ EGFR(L!+,CR1!1).EGFR(L!+,CR1!1) kp2, km2end reaction rules
generate_network({overwrite=>1});
…Iteration 0: 2 species 0 rxns 0.00e+00 CPU sIteration 1: 3 species 1 rxns 0.00e+00 CPU sIteration 2: 4 species 3 rxns 0.00e+00 CPU sIteration 3: 5 species 5 rxns 1.00e-02 CPU sIteration 4: 6 species 7 rxns 1.00e-02 CPU sIteration 5: 6 species 8 rxns 0.00e+00 CPU s…
.bngl file
logfileExpect network generation to stop here! (+ one more rxn)
Expect network generation to stop here! (+ one more rxn)
Checking species in the .net filebegin species 1 EGF(R) EGF0 2 EGFR(CR1,L,Y1068~U) EGFR0 3 EGF(R!1).EGFR(CR1,L!1,Y1068~U) 0 4 EGF(R!1).EGF(R!2).EGFR(CR1!3,L!1,Y1068~U).EGFR(CR1!3,L!2,Y1068~U) 0 5 EGF(R!1).EGFR(CR1!2,L!1,Y1068~U).EGFR(CR1!2,L,Y1068~U) 0 6 EGFR(CR1!1,L,Y1068~U).EGFR(CR1!1,L,Y1068~U) 0end species
Dimers with 0 or 1 EGF molecule arise because EGF is allowed to dissociate whether or not EGFR is dimerized.Dimers with 0 or 1 EGF molecule arise because EGF is allowed to dissociate whether or not EGFR is dimerized.
EGF(R) + EGFR(L) <-> EGF(R!1).EGFR(L!1) kp1, km1
state of CR1 domain is not specifiedstate of CR1 domain is not specified
Checking species in the .net filebegin species 1 EGF(R) EGF0 2 EGFR(CR1,L,Y1068~U) EGFR0 3 EGF(R!1).EGFR(CR1,L!1,Y1068~U) 0 4 EGF(R!1).EGF(R!2).EGFR(CR1!3,L!1,Y1068~U).EGFR(CR1!3,L!2,Y1068~U) 0 5 EGF(R!1).EGFR(CR1!2,L!1,Y1068~U).EGFR(CR1!2,L,Y1068~U) 0 6 EGFR(CR1!1,L,Y1068~U).EGFR(CR1!1,L,Y1068~U) 0end species
Dimers with 0 or 1 EGF molecule arise because EGF is allowed to dissociate whether or not EGFR is dimerized.Dimers with 0 or 1 EGF molecule arise because EGF is allowed to dissociate whether or not EGFR is dimerized.
EGF(R) + EGFR(L) <-> EGF(R!1).EGFR(L!1) kp1, km1
state of CR1 domain is not specifiedstate of CR1 domain is not specified
“Expected” behavior can be recovered by modifying the rule:“Expected” behavior can be recovered by modifying the rule:
EGF(R) + EGFR(L,CR1) <-> EGF(R!1).EGFR(L!1,CR1) kp1, km1
Only EGFR with free CR1 will bind and release ligand.Only EGFR with free CR1 will bind and release ligand.
Creating an observable: Receptors in dimers
Like rules, Observables select species based on pattern matching.
The concentrations of the matching species are stored in a variable with a specified name, computed by summing the concentrations of matching species.
EGFR(CR1!+)
EGF(R!1).EGF(R!2).EGFR(CR1!3,L!1,Y1068~U).EGFR(CR1!3,L!2,Y1068~U)
matches receptors in dimers
begin observables Molecules Rdim EGFR(CR1!+)end observables
Creating an observable: Receptors in dimers
Like rules, Observables select species based on pattern matching.
EGFR(CR1!+)
EGF(R!1).EGF(R!2).EGFR(CR1!3,L!1,Y1068~U).EGFR(CR1!3,L!2,Y1068~U)
matches receptors in dimers
begin observables Molecules Rdim EGFR(CR1!+)end observables
generate_network
begin groups 1 Rdim 2*4end groups
number of matches
species index.net file
The .gdat file
# time Rdim 0.00000000e+00 0.00000000e+00 2.40000000e+00 1.32882737e+00 4.80000000e+00 5.16753986e+00…
# time Rdim 0.00000000e+00 0.00000000e+00 2.40000000e+00 1.32882737e+00 4.80000000e+00 5.16753986e+00…
The .gdat file
Rdim
Dimers (Species 4)
2x
A state change:Transphosphorylation
P
Kinase domain in cytoplasmic tail of dimerized receptor phosphorylates tyrosines of trans receptor.
EGFR(CR1!+,Y1068~U) -> EGFR(CR1!+,Y1068~P) kp3
State change
A state change:Transphosphorylation
P
Kinase domain in cytoplasmic tail of dimerized receptor phosphorylates tyrosines of trans receptor.
EGFR(CR1!+,Y1068~U) -> EGFR(CR1!+,Y1068~P) kp3
State change
EGF(R!1).EGF(R!2).EGFR(CR1!3,L!1,Y1068~U).EGFR(CR1!3,L!2,Y1068~U)
Because of symmetry, produce two copies of same reaction.
Reaction multiplicity
EGF(R!1).EGF(R!2).EGFR(CR1!3,L!1,Y1068~U).EGFR(CR1!3,L!2,Y1068~U)
Transphosphorylation rule generates
EGF(R!1).EGF(R!2).EGFR(CR1!3,L!1,Y1068~P).EGFR(CR1!3,L!2,Y1068~U)
Species 4
Species 5
kp3
EGF(R!1).EGF(R!2).EGFR(CR1!3,L!1,Y1068~U).EGFR(CR1!3,L!2,Y1068~U)
EGF(R!1).EGF(R!2).EGFR(CR1!3,L!1,Y1068~U).EGFR(CR1!3,L!2,Y1068~P)
Species 4
Species 5
kp3
and
which are combined into
reactions … 5 4 5 2*kp3 #Rule3
Dephosphorylation
P
Phosphatase excess gives rise to first order dephosphorylation process.
EGFR(Y1068~P) -> EGFR(Y1068~U) km3
U
Note the convention that a component without a specified bonding state is required to be unbound.
Dephosphorylation can occur only if the site is unbound.
Binding of another protein to the site protects it from dephosphorylation.
Monitoring site phosphorylation
observables Molecules RP EGFR(Y1068~P!?)
selects site in state ‘P’
wildcard allows site to be bound or unbound
Correct way to specify observable for receptor phosphorylation
Monitoring site phosphorylation
observables Molecules RP EGFR(Y1068~P!?)
Correct way to specify observable for receptor phosphorylation
Incorrect way to specify observable for receptor phosphorylation
observables Molecules RP EGFR(Y1068~P)
Only monitors sites that are phosphorylated and unbound
Adapter and effector binding
P
EGFRGrb2
Sos1
cytosolic proteins recruited to the membrane by receptor phosphorylation
Additional rules 5 EGFR(Y1068~P) + Grb2(SH2) <-> EGFR(Y1068~P!1).Grb2(SH2!1) kp4,km4
6 Grb2(SH3) + Sos1(PxxP) <-> Grb2(SH3!1).Sos1(PxxP!1) kp5,km5
56
Observable
Molecules Sos1_act Sos1(PxxP!+) Selects Sos1 bound to the membraneSelects Sos1 bound to the membrane
Adapter and effector binding
P
EGFRGrb2
Sos1
cytosolic proteins recruited to the membrane by receptor phosphorylation
Additional rules 5 EGFR(Y1068~P) + Grb2(SH2) <-> EGFR(Y1068~P!1).Grb2(SH2!1) kp4,km4
6 Grb2(SH3) + Sos1(PxxP) <-> Grb2(SH3!1).Sos1(PxxP!1) kp5,km5
56
Observable
Molecules Sos1_act Sos1(PxxP!+) Selects Sos1 bound to the membrane - WRONG!!Selects Sos1 bound to the membrane - WRONG!!
Adapter and effector binding
P
EGFRGrb2
Sos1
cytosolic proteins recruited to the membrane by receptor phosphorylation
Additional rules 5 EGFR(Y1068~P) + Grb2(SH2) <-> EGFR(Y1068~P!1).Grb2(SH2!1) kp4,km4
6 Grb2(SH3) + Sos1(PxxP) <-> Grb2(SH3!1).Sos1(PxxP!1) kp5,km5
56
Observable
Molecules Sos1_act Sos1(PxxP!1).Grb2(SH3!1,SH2!2).EGFR(Y1068!2)
Correct observable traces connectivity to membrane bound moleculeCorrect observable traces connectivity to membrane bound molecule
A degradation reaction
begin molecule types … Null()… begin seed species … $Null
Simple receptor degradation
begin reaction rules … EGFR() -> Null kdeg
Deletes any species containing EGFR molecule, including any attached molecules.Deletes any species containing EGFR molecule, including any attached molecules.
A degradation reaction
begin molecule types … Null()… begin seed species … $Null
Selective degradation of ligand and receptor
begin reaction rules …
EGF(R!1).EGF(R!2).EGFR(L!1,CR1!3).EGFR(L!2,CR1!3) -> Trash() kdeg \ DeleteMolecules
This rule causes just the ligand-bound receptor dimer to be degraded, recycling any components that are bound to the cytoplasmic domains of the receptor.
This rule causes just the ligand-bound receptor dimer to be degraded, recycling any components that are bound to the cytoplasmic domains of the receptor.
Running the full model
P
Grb2
Sos1
56
EGFR
EGF
1 1’
2
3
U4
…Iteration 0: 5 species 0 rxns 0.00e+00 CPU sIteration 1: 7 species 2 rxns 0.00e+00 CPU sIteration 2: 8 species 5 rxns 1.00e-02 CPU sIteration 3: 9 species 8 rxns 1.00e-02 CPU sIteration 4: 13 species 14 rxns 2.00e-02 CPU sIteration 5: 18 species 35 rxns 6.00e-02 CPU sIteration 6: 23 species 66 rxns 9.00e-02 CPU sIteration 7: 23 species 86 rxns 9.00e-02 CPU s …
generate_network
Results
Equilibrating Grb2-Sos1 binding prior to ligand addition
Grb2
Sos1
6
Grb2-Sos1 interaction is constitutiveGrb2-Sos1 interaction is constitutive
Equilibrating Grb2-Sos1 binding prior to ligand addition
Grb2
Sos1
6
Grb2-Sos1 interaction is constitutiveGrb2-Sos1 interaction is constitutive
Combination of actions can be used to pre-equilibrate prior to ligand additionCombination of actions can be used to pre-equilibrate prior to ligand addition
setConcentration("EGF(R)",0);
simulate_ode({suffix=>equil,t_end=>10000,n_steps=>50, \ steady_state=>1,sparse=>1});
setConcentration("EGF(R)",EGF0);
Complete summary of actionsAction/parameter Type Description Default
generate_network Generate species and reactions through iterative application of rules to seed species
max_agg int Maximum number of molecules in one species 1e99
max_iter int Maximum number of iterations of rule application
100
max_stoich hash Maximum number of molecules of specified type in one species
-
overwrite 0/1 Overwrite existing .net file 0 (off)
print_iter 0/1 Print .net file after each iteration 0
prefixa string Set basenamec of .net file to string basename of .bngl file
suffixa string Append _string to basename of .net file -
simulate_ode / simulate_ssa Simulate current model/network
t_end float End time for simulation required
t_start float Start time for simulation 0
n_steps int Number of times after t=0 at which to report concentrations/observables
1
sample_times array Times at which to report concentrations/observables (supercedes t_end, n_steps)
-
netfile string Name of .net file used for simulation -
atolb float Absolute error tolerance for ODE’s 1e-8
rtolb float Relative error tolerance for ODE’s 1e-8
steady_stateb 0/1 Perform steady state check on species concentrations
0
sparseb 0/1 Use sparse Jacobian / iterative solver (GMRES) in CVODE
0
readFile Read a .bngl or a .net file
file string Name of file to read required
writeNET / writeSBML / writeMfile Write current model/network in specified format
setConcentration(species,value) Set concentration of species to value.
setParameter(parameter,value) Set parameter to value.
saveConcentrations() Store current species concentrations.
resetConcentratons() Restore species concentrations to value at point of last saveConcentrations command.
see http://bionetgen.org for BioNetGen Chapter
Simulation results with and without equilibration
Higher initial level of Grb2-Sos1 complexHigher initial level of Grb2-Sos1 complex
No effect on Sos1 recruitmentNo effect on Sos1 recruitment
More topics
• Parameter scans• Alternate rate laws• Labels
– Fluorescent labeling– Carbon-fate maps
• Oligomerization– simulate_nf New
• Compartments• GETBONNIE
Detailed model of TLR4 signaling
• Main goals– Represent known players and interactions in
TLR4-mediated signaling– Does model qualitatively reproduce observed
tolerance in response to repeated stimulation (“preconditioning”)?
– Investigate molecular mechanisms leading to tolerance
G. An and J. Faeder, Math. Biosci., to appear.
Approach• Dynamic Knowledge Representation by non-
mathematician• Relatively Detailed Representation of Components • Mechanistic/causal emphasis• Known source and stimulus for production of
compound (particularly inhibitors)• Abstraction of complex molecular events if output
relatively straightforward• Model parameters (component numbers and reaction
rates) qualitatively set based on “realistic” levels
Detailed model of TLR4 signaling
Detailed model of TLR4 signaling
Rules governing assembly of hub complexes
Interactions are ordered to reduce combinatorial complexityInteractions are ordered to reduce combinatorial complexity
Interactions between TLR4-MAL-MyD88 Complex and TRAF6
Regulation of A20 expression
NFkB(Transcription~No,Activation~Yes,Location~Nucleus)+DNA(A20) \ <-> \ NFkB(Transcription~Yes!1,Activation~Yes,Location~Nucleus).DNA(A20!1)\ NFkB_DNA_A20_Bind,NFkB_DNA_A20_Unbind
Binding of NFkB in the nucleus to A20 promoter
A20mRNA(Translation~On) -> A20mRNA(Translation~Off) + A20(TRAF6) \ A20_Translation_Execute
Translation of A20
Degradation of A20A20(TRAF6)->Trash(c) A20_Degrade
DNA(A20!0).NFkB(Transcription~Yes!0,Activation~Yes,Location~Nucleus) \ -> \DNA(A20!0).NFkB(Transcription~Yes!0,Activation~Yes,Location~Nucleus) \+ A20mRNA(Translation~On) \ A20_Transcription_Execute
Transcription of A20 gene
Generating the model/Users/faeder/shared/Projects/BioNetGen/Perl2/BNG2.plBioNetGen version 2.0.47+readFile::Reading from file TLR4_V15_PC.bnglRead 97 parameters.Read 31 molecule types.Read 19 species.Read 41 reaction rule(s).Read 19 observable(s).Iteration 0: 19 species 0 rxns 0.00e+00 CPU sIteration 1: 24 species 5 rxns 4.00e-02 CPU sIteration 2: 27 species 12 rxns 3.00e-02 CPU sIteration 3: 28 species 17 rxns 3.00e-02 CPU sIteration 4: 29 species 19 rxns 1.00e-02 CPU sIteration 5: 31 species 22 rxns 6.00e-02 CPU sIteration 6: 38 species 32 rxns 1.00e-01 CPU sIteration 7: 46 species 58 rxns 3.60e-01 CPU sIteration 8: 53 species 96 rxns 5.40e-01 CPU sIteration 9: 57 species 128 rxns 6.00e-01 CPU sIteration 10: 59 species 145 rxns 4.30e-01 CPU sIteration 11: 62 species 148 rxns 1.00e-02 CPU sIteration 12: 65 species 153 rxns 2.00e-02 CPU sIteration 13: 71 species 168 rxns 5.00e-02 CPU sIteration 14: 76 species 192 rxns 8.00e-02 CPU sIteration 15: 76 species 202 rxns 5.00e-02 CPU s
Dose-dependence of TNF-α response and tolerance
Initial Dose ResponseLPS at 10, 100, 1000, 10000
“Tolerance” ResponseLPS 10000 Redose at 27h
A20 responseInitial Dose ResponseLPS at 10, 100, 1000, 10000
“Tolerance” ResponseLPS 10000 Redose at 27h
A20 ‘memory’ is not mechanism for tolerance
Shutting off NFkB production requires IkB
TNF production is not attenuated in ‘IkB knockout’ even though A20 is produced
TNF production is not attenuated in ‘IkB knockout’ even though A20 is produced
Wild-type TNF production in response to LPS=10,000Wild-type TNF production in response to LPS=10,000
A20 knockout shows normal attenuation of response
Wild-type TNF production in response to LPS=10,000Wild-type TNF production in response to LPS=10,000 A20 knockoutA20 knockout