RuleWorld / bionetgen

Rule-based modeling framework
https://bionetgen.org/
MIT License
58 stars 25 forks source link

Question about the Repressillator example #201

Closed marcoxa closed 5 years ago

marcoxa commented 6 years ago

Hi

I would like to use the repressilator example in a course I am teaching, but I need a crash course on how it is rendered in BNGL.

Is there anybody who could help me?

I offer a pizza :)

Cheers

Marco Antoniotti

wshlavacek commented 6 years ago

It would probably look something like the code below, which is from Fig 8 in "Modeling for (physical) biologists: an introduction to the rule-based approach" (2015) Phys Biol.

begin model

A model of a genetic toggle switch

In this model, a transcriptional repressor, X, inhibits the synthesis

of a second repressor, Y, which inhibits the synthesis of X.

Repression is captured using the following function:

1/(1+([repressor]/K)^n).

Reference:

1. Gardner TS, Cantor CR, Collins JJ (2000) Nature 403: 339-342.

begin parameters

Note that parameter values are different from those chosen in Ref 1.

maximum rate of synthesis of repressor X

bx 50 # [=] molecules per cell per unit time

maximum rate of synthesis of repressor Y

by 50 # [=] molecules per cell per unit time

rate constant for clearance of X (through degradation and dilution)

ax 1 # [=] per unit time

rate constant for clearance of Y (through degradation and dilution)

ay 1 # [=] per unit time

parameters in the function characterizing Y's effect on synthesis of X

nyx 3 # [=] dimensionless Kyx 20 # [=] same units as Y()

parameters in the function characterizing X's effect on synthesis of Y

nxy 3 # [=] dimensionless Kxy 20 # [=] same units as X()

initial abundance of X

Xinit 0 # [=] copies per cell

initial abundance of Y

Yinit 0 # [=] copies per cell

end parameters

begin molecule types

Repressor 1

X()

Repressor 2

Y()

end molecule types

begin species X() Xinit Y() Yinit end species

begin observables Molecules X_tot X() Molecules Y_tot Y() end observables

begin reaction rules

synthesis of X according to a user-defined rate law

0 is a source.

0->X() bx/(1+(Y_tot/Kyx)^nyx)

clearance of X (through degradation and dilution)

0 is a sink.

X()->0 ax

synthesis of Y according to a user-defined rate law

0->Y() by/(1+(X_tot/Kxy)^nxy)

clearance of Y

Y()->0 ay

end reaction rules

end model

begin actions

generate_network({overwrite=>1})

Write ODEs for chemical kinetics of the generated network in a MATLAB M-file

writeMfile()

set initial system state close to the stable steady state where

expression of repressor X is off.

setConcentration("X()",0) setConcentration("Y()",50)

find steady states as a function of Kxy, which reflects the strength

of X's repression of Y.

Values of Kxy are scanned from the minimum specified value to the maximum.

Values are also scanned in the opposite direction.

If bistability exists, this procedure will find both steady states at each

tested value of the bifurcation parameter in the bistable region.

bifurcate({parameter=>"Kxy",par_min=>1.0,par_max=>1.0e2,n_scan_pts=>100,\ log_scale=>1,method=>"ode",t_start=>0,t_end=>1000,n_steps=>10,\ steady_state=>1})

end actions

On Fri, Feb 23, 2018 at 5:25 AM, Marco Antoniotti notifications@github.com wrote:

Hi

I would like to use the repressilator example in a course I am teaching, but I need a crash course on how it is rendered in BNGL.

Is there anybody who could help me?

I offer a pizza :) Cheers

Marco Antoniotti

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/RuleWorld/bionetgen/issues/201, or mute the thread https://github.com/notifications/unsubscribe-auth/ASbo9xn6NQQYokRvplLRcxHQWFX3vvH4ks5tXq44gaJpZM4SQzyz .

jrfaeder commented 6 years ago

Hi Marco,

Bill posted some nice code for the toggle switch, which for whatever reason we don't have in the list of models that come with the BioNetGen distribution. I assume, however, that you are referring to the Repressilator.bngl model that is part of the distribution and is found here. I added a comment to provide the reference to the original model and cleaned up the model a bit to reflect slightly more modern BNG usage. I think you were looking for a bit more detailed explanation of how the BNGL code is describing the repressilator components and interactions. If that's true, I'd be happy to provide this information when I have a bit of time in the next several days.

Best regards,

Jim

jrfaeder commented 6 years ago

And I'll return to Milan ASAP to collect my pizza!

lh64 commented 6 years ago

Hi Marco. I wrote the Repressilator.bngl model. I'd be happy to answer any questions about it.

I can tell you that it's comprised of three genes: TetR, CI, and LacI. For each of these gX represents the promoter, mX represents the mRNA, and pX represents the protein product. Each promoter has two binding sites for different proteins: pLacI binds to gTetR, pTetR binds to gCI, and pCI binds to gLacI. In each case, the rate of binding of the two proteins is equivalent but the rate of dissociation of the first protein is greater than that of the second protein (modeling postive cooperativity). For mRNA transcription, the unbound genes transcribe 1000 times faster than the protein-bound genes. mRNA transcribes protein and both mRNA and protein can degrade.

There are also three multiplicative factors: tF, rF, and pF (in the paper Jim linked, these are gamma, eta, and rho). Perhaps these are the source of your question? Very generally, tF controls the intrinsic noise associated with binding at the promoter, rF controls intrinsic noise associated with mRNA transcription, and pF controls intrinsic noise associated with translation. Increasing tF increases the rates of promoter binding and unbinding without affecting the ratio. Small values of tF give very noisy dynamics and the amount of noise decreases with increasing tF. Increasing rF increases the average mRNA levels in the system by increasing the transcription rates. The rate of translation is divided by rF so that increased mRNA levels don't affect the protein levels, therefore isolating that source of noise in the system. Finally, increasing pF increases the average protein levels by increasing the translation rate. To prevent this from affecting the rate of protein binding to the promoter, the binding rate constant is divided by pF. Again, this allows us to isolate that source of noise.

I hope this makes sense and maybe answers your questions. If you have other questions please let me know and I'll be happy to answer them.

--Leonard

lh64 commented 5 years ago

This can be closed too