Genetic Switch - Synthetic Biology Extension
Model was written in NetLogo 6.0-M6
•
Viewed 604 times
•
Downloaded 91 times
•
Run 0 times
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
Info tab cannot be displayed because of an encoding error
Comments and Questions
Please start the discussion about this model!
(You'll first need to log in.)
Click to Run Model
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' | over 8 years ago, by Sugat Dabholkar | Download |
This model does not have any ancestors.
This model does not have any descendants.