Genetic Switch - Synthetic Biology Extension

Genetic Switch - Synthetic Biology Extension preview image

1 collaborator

My_photo_2 Sugat Dabholkar (Author)

Tags

(This model has yet to be categorized with any tags)
Part of project 'GenEvo Curriculum'
Visible to everyone | Changeable by everyone
Model was written in NetLogo 6.0-M6 • Viewed 302 times • Downloaded 59 times • Run 0 times
Download the 'Genetic Switch - Synthetic Biology Extension' modelDownload this modelEmbed this model

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.

![CC BY-NC-SA 3.0](http://ccl.northwestern.edu/images/creativecommons/byncsa.png)

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

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.

Uploaded by When Description Download
Sugat Dabholkar almost 2 years ago Added the link to access the model on web Download this version
Sugat Dabholkar almost 2 years ago Initial upload Download this version

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.