Genetic Switch - Synthetic Biology Extension
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
## WHAT IS IT?
It is a multi-agent model of a genetic circuit in a bacterial cell. This model is extension of the Genetic Switch Model in the GenEvo Systems Biology Curriculum. It incorporates synthetic biology aspects of designing and testing a genetic circuit.
## HOW IT WORKS
The components of the model are - a lac promoter with an operator, an RBS, a lacZ gene, a terminator, RNA polymerases, LacI repressor proteins and ONPG molecules.
The model explicitly incorporates transcription and implicitly incorporates translation.
A user can select promoter strength and RBS strength, add IPTG and run the model. The model simulates interactions between the components of the genetic circuit that results in an emergent cellular behavior. The cellular behavior of interest in this model is LacZ (beta-galactosidase) activity which can be observed in a graph and is also represented in the change in the color of the cell to yellow. Beta-galactosidase cleaves ONPG to produce an intensely yellow colored compound.
## HOW TO USE IT
Select the promoter strength and RBS strength.
Press SETUP to initialize the components in the model.
Press GO to run the model. The button ADD ONPG can be pressed to add ONPG.
‘Timed-expt?’ is a switch that runs the model to 2500 time units called ticks. This switch can be used to compare behavior of the cell in different runs of the same condition or different conditions (by varying promoter strength and RBS strengths).
‘Const-ONPG?’ is a switch which keeps ONPG concentration constant in a simulation run. This switch can be used to simulate the situations when ONPG concentration in the medium is excess and not a limiting factor.
## THINGS TO NOTICE
Run the model with a set PROMOTER-STRENGTH and RBS-STRENGTH and observe changes in the scaled transcription and translation rates. Also, observe changes in the LacZ activity in the graph as well as in the simulation.
Run it multiple times and observe the differences.
## THINGS TO TRY
Change the PROMOTER-STRENGTH and RBS-STRENGTH combination and observe the behavior again. See which combination has the most robust and optimum behavior.
Change the parameter values of lacI-bond-leackage, ONPG-degradation-chance, complex-separation-chance, complex-formation-chance, complex-separation-chance, LacZ-degradation-chance, and see how that affects the behavior of the model.
## HOW TO CITE
If you mention this model or the NetLogo software in a publication, we ask that you include the citations below.
For the model itself:
• Dabholkar S. & Wilensky, U. (2016). NetLogo Genetic Switch Synthetic Biology Model. http://ccl.northwestern.edu/netlogo/models/GeneticSwitchSyntheticBiology. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
The above link may be temporarily unavailable. Alternatively, you may find a copy of this model to the following link:
http://modelingcommons.org/browse/one_model/4759#model_tabs_browse_nlw
Please cite the NetLogo software as:
• Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
To cite the GenEvo Systems Biology curriculum as a whole, please use:
Dabholkar S. & Wilensky, U. (2016). GenEvo Curriculum. http://ccl.northwestern.edu/curriculum/genevo/. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
## COPYRIGHT AND LICENSE
Copyright 2016 Uri Wilensky.

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
Commercial licenses are also available. To inquire about commercial licenses, please contact Uri Wilensky at uri@northwestern.edu.
Comments and Questions
breed [ LacIs LacI ] ;; LacI repressior protein (violet proteins) breed [ LacZs LacZ ] ;; LacZ beta-galactosidase emzyme (red proteins) breed [ ONPGs ONPG ] ;; ortho-Nitrophenyl-beta-galactoside (ONPG) molecule (grey molecules) that is cleaved by beta-galactosidase to produce an intensely yellow compound. breed [ LacYs LacY ] ;; permease orange turtles that go to the cell wall and transport lactose inside breed [ RNAPs RNAP ] ;; RNA Polymerases (brown proteins) that bind to promoter part of DNA and synthesize mRNA from the downstream DNA LacIs-own [ partner ;; a partner is a ONPG molecule with which a LacI molecule binds to form a complex inhibitor? ;; a boolean to track if a LacI can bind to DNA as an inhibitor of transcition ] RNAPs-own [on-dna?] ;; a boolean to track if RNAP ONPGs-own [ partner ;; a partner is a lacI molecule with which an ONPG forms a complex ] globals [ promoter-color-list ;; color list to set promoter colors based on their strengths rbs-color-list ;; color list to set rbs colors based on their strengths gene-color ;; color of the gene operon-transcribed? ;; a boolean to see if the operon is transcribed LACZ-PRODUCTION-NUM ;; number of lacZ molecules produced per transcription (this number depends on the rbs strength) lacZ-production-num-list ;; list of numbers to set lacZ molecules produced based on the rbs strength ONPG-degradation-count ;; a variable to keep track of number of ONPG molecules degraded energy-value ;; keeps track of the energy value of the cell lacI-number ;; number of lacI molecules RNAP-number ;; number of RNA Polemerase molecules inhibited? ;; boolean for whether or not the operator is inhibited dna ;; agentset containing the patches that are DNA non-dna ;; agentset excluding the patches that are DNA lacZ-gene ;; agentset containing the patches that are LacZ gene promoter ;; agentset containing the patches that are for the promoter operator ;; agentset containing the patches that are for the operator rbs ;; agentset containing the patches that are for the rbs terminator ;; agentset containing the patches that are for the terminator total-transcripts ;; a variable to keep track of the number of transciption events total-proteins ;; a veriable to keep track of the number of proteins produced ini-ONPG-number ;; a veriable to set initial ONPG number. This number is set to 0 in the setup procedure. It is set to 200 in the 'Add ONPG' button. ] to set-global-variables set promoter-color-list [62 64 65 68] set rbs-color-list [12 14 15 17] set gene-color 95 set lacI-number 30 set RNAP-number 30 set lacZ-production-num-list [2 3 4 6] set inhibited? false set ONPG-degradation-count 0 set total-transcripts 0 set ini-ONPG-number 0 set operon-transcribed? false end to set-rbs-effect ;; sets number of LacZ molecules produced per transcription event depedning on the rbs strength if rbs-strength = "weak" [ set lacZ-production-num item 0 lacZ-production-num-list ] if rbs-strength = "reference" [ set lacZ-production-num item 1 lacZ-production-num-list ] if rbs-strength = "medium" [ set lacZ-production-num item 2 lacZ-production-num-list ] if rbs-strength = "strong" [ set lacZ-production-num item 3 lacZ-production-num-list ] end to setup ca set-global-variables set-rbs-effect set-DNA-patches add-proteins reset-ticks end to go go-lacIs go-RNAPs go-LacZs if (operon-transcribed?) [ create-lacZs lacZ-production-num [ setxy random-xcor random-ycor setshape ] set total-proteins total-proteins + lacZ-production-num set operon-transcribed? false ] go-ONPGs degrade-lacZ dissociate-complex recolor-patches ask turtles [ setshape ] if timed-expt? [ if ticks = 2500 [ stop ] ] if const-ONPG? [ add-ONPG ( ini-ONPG-number - count ONPGs ) ] tick end to random-walk ;; a random walk procedure for the proteins and ONPG molecules in the cell rt random-float 360 fd 1 end to set-DNA-patches ;; a procedure to set the DNA patches in the cell and assign appropriate colors based on their strengths ask patches [set pcolor white] set dna patches with [ pxcor >= -40 and pxcor < 30 and pycor > 3 and pycor < 6 ] set promoter patches with [ pxcor >= -40 and pxcor < -26 and pycor > 3 and pycor < 6 ] set operator ( patch-set patches with [ pxcor >= -26 and pxcor < -20 and pycor = 4 ] patches with [ pxcor = -26 and pycor = 5 ] patches with [ pxcor = -24 and pycor = 5 ] patches with [ pxcor = -23 and pycor = 5 ] patches with [ pxcor = -21 and pycor = 5 ] ) set rbs patches with [ pxcor >= -20 and pxcor < -15 and pycor > 3 and pycor < 6 ] set lacZ-gene patches with [ pxcor >= -15 and pxcor < 25 and pycor > 3 and pycor < 6 ] set terminator patches with [ pxcor >= 25 and pxcor < 30 and pycor > 3 and pycor < 6 ] ask promoter [ if promoter-strength = "strong" [ set pcolor item 0 promoter-color-list ] if promoter-strength = "medium" [ set pcolor item 1 promoter-color-list ] if promoter-strength = "reference" [ set pcolor item 2 promoter-color-list ] if promoter-strength = "weak" [ set pcolor item 3 promoter-color-list ] ] ask operator [ set pcolor orange ] ask rbs [ if rbs-strength = "strong" [ set pcolor item 0 rbs-color-list ] if rbs-strength = "medium" [ set pcolor item 1 rbs-color-list ] if rbs-strength = "reference" [ set pcolor item 2 rbs-color-list ] if rbs-strength = "weak" [ set pcolor item 3 rbs-color-list ] ] ask lacZ-gene [ set pcolor gene-color ] ask terminator [ set pcolor gray ] set non-dna patches with [pcolor = white] end to add-proteins ;; part of the setup procedure to create and randomly place proteins inside the cell create-lacIs lacI-number [ setxy random-xcor random-ycor set inhibitor? false set partner nobody setshape ] create-RNAPs RNAP-number [ setxy random-xcor random-ycor set on-dna? false setshape ] end to setshape ;; a procedure to set shapes of the molecules if breed = LacIs [ set size 10 ifelse partner = nobody [ set shape "laci"] [ set shape "laci-onpg-complex" set size 10 ] ] if breed = RNAPs [ set size 6 set shape "RNAPol" set color brown] if breed = ONPGs [ ifelse partner = nobody [ set shape "pentagon" set color gray set hidden? false ] [ set hidden? true ] ] if breed = LacZs [ set shape "protein" set color red set size 6] end to go-lacIs ;; If there is a LacI at the operator, set the transcription is inhibited. if not inhibited? [ ask LacIs with [ member? patch-ahead 2 operator and partner = nobody] [ set inhibitor? true set inhibited? true set heading 0 setxy -23 6 ] ] ask LacIs with [inhibitor?] [ if (random-float 10 < lacI-bond-leakage) [ set inhibitor? false set inhibited? false fd 3 ] ] ask LacIs with [not inhibitor?] [ random-walk ] ask LacIs [ if partner != nobody [ stop ] set partner one-of (other ONPGs-here with [partner = nobody]) if partner = nobody [ stop ] if [partner] of partner != nobody [ set partner nobody stop ] ;; just in case two lacIs grab the same partner ifelse random-float 1 < complex-formation-chance [ ask partner [ set partner myself ] setshape ask partner [ setshape ] if (inhibitor?) [ set inhibited? false set inhibitor? false fd 1 ] ] [set partner nobody] ] end to go-RNAPs ;; If a RNAP is close or on the promoter (green) and the operator is open, change heading and move on the DNA towards the terminator. if not inhibited? [ ask RNAPs [ if promoter-strength = "strong" [ if member? patch-here promoter or member? patch-ahead 9 promoter [ start-transcription ] ] if promoter-strength = "medium" [ if member? patch-here promoter or member? patch-ahead 3 promoter [ start-transcription ] ] if promoter-strength = "reference" [ if member? patch-here promoter or member? patch-ahead 2 promoter [ start-transcription ] ] if promoter-strength = "weak" [ if member? patch-here promoter or member? patch-ahead 1 promoter [ start-transcription ] ] ] ] if any? RNAPS with [on-dna?] [ ask RNAPs with [on-dna?] [ fd 1 if (member? patch-here terminator) [ set operon-transcribed? true set on-dna? false rt random-float 360 set total-transcripts total-transcripts + 1 ] ] ] ask RNAPs with [not on-dna?] [ random-walk ] end to start-transcription ;; a procedure for RNAPs setxy xcor 5 set heading 90 set on-dna? true end to add-ONPG [ONPG-number] create-ONPGs ONPG-number [ set partner nobody setxy random-xcor random-ycor setshape ] end to go-lacZs ask lacZs [ rt random-float 360 fd 1 if count ONPGs-here != 0 [ if random-float 1 < ONPG-degradation-chance [ ask one-of ONPGs-here [ die ] set ONPG-degradation-count ONPG-degradation-count + 1 ] ] ] end to go-ONPGs ask ONPGs [ random-walk ] end to recolor-patches ;; Change the color of the cell based on ONPG degradation ask non-dna [ set pcolor scale-color yellow ( 1000 - ONPG-degradation-count ) 0 1000 ] end to dissociate-complex ;; Dissociate the LacI-ONPG complex ask LacIs with [partner != nobody] [ if random-float 1 < complex-separation-chance [ let temp-x xcor let temp-y xcor ask partner [ set partner nobody setxy temp-x temp-y setshape fd 1 ] set partner nobody setshape fd -1 ] ] end to degrade-LacZ ask LacZs [ if random-float 1 < LacZ-degradation-chance [ die ] ] end to-report number-of-transcripts-per-tick report precision ( total-transcripts / ticks * 1000 ) 1 end to-report number-of-proteins-per-tick report precision ( total-proteins / ticks * 1000 ) 1 end
There are 2 versions of this model.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Genetic Switch - Synthetic Biology Extension.png | preview | Preview for 'Genetic Switch - Synthetic Biology Extension' | almost 2 years ago, by Sugat Dabholkar | Download |
This model does not have any ancestors.
This model does not have any descendants.