Gene Expression: Lac Operon

Gene Expression: Lac Operon preview image

1 collaborator

Brewer-2011-gr Steven Brewer (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by everyone
Model was written in NetLogo 5.1.0 • Viewed 312 times • Downloaded 24 times • Run 0 times
Download the 'Gene Expression: Lac Operon' 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?

This is a model of the regulation of gene expression based on the lac operon: a bacterial gene that produces an enzyme that breaks down lactose, a complex sugar, into simpler sugars: glucose and galactose. This gene is only transcribed when lactose is in the environment. This system was one of the first models of gene expression described.

HOW IT WORKS

In this system, there are two genes: the lacI gene produces a repressor molecule which in turn binds to the operon of the lacZ gene which codes for beta-galactosidase, an enzyme. As long as the repressor is bound to the operon, the beta-galactosidase gene is turned off.

When a gene is active, RNAs (represented by circles) are produced and diffuse to ribosomes (represented by squares) where they are translated into proteins. When an inducer is added the system, it binds to the repressor molecules and prevents them from binding to the lacZ operon. This causes the lacZ gene to begin transcribing RNAs which are translated into beta-galactosidase. The beta-galactosidase molecules bind to and cleave the inducer molecules. When inducer molecules are no longer available, the repressor molecules bind to the operon again, shutting the system off.

This implementation of the model makes a variety of assumptions. First, the model assumes that proteins are degraded by the cell over time. The number of proteins at any one time are the result of a balance between new proteins being added and old ones being removed through degradation.

In real systems, the coding region for lacZ is followed by lacY and lacA, which code for other proteins and are transcribed at the same time as lacZ. These other proteins do not contribute directly to the regulatory control of lacZ and have not been included in the model for simplicity.

HOW TO USE IT

Click "setup" to create the genes and ribosomes.

Click "go" to start the model.

Switches allow the user to add inducer and select the number of molecules to add per unit time.

Other switches allow turning off (or "knocking out") the lacI and lacZ genes.

Two plots: one showing the current concentration of beta-galactosidase and the other showing levels of repressor, beta-galactosidase, and their complexes with inducer molecules.

THINGS TO NOTICE

There are a few repressor molecules when the model first turns on (as long as the lacI gene hasn't been turned off). Note that very quickly after the model starts, one of the repressors has bound to the lacZ operon.

Every now and then, you'll see the lacZ gene produce RNA even when the repressors are available. What hypotheses can you propose for why this might happen?

THINGS TO TRY

Predict at which level you believe the lacZ gene will begin operating and then try adding various levels of inducer. What differences do you notice between different levels?

Predict the behavior of the system when you turn off each of the genes and then test your predictions.

When the lacZ gene switches on, it produces a distinctive curve in the levels of concentration of beta-galactosidase. What is happening at each stage of the curve? What happens when the gene switches off.

EXTENDING THE MODEL

To simplify this model, a number of factors have been de-paramaterized, including the rates of each gene (dI and dZ) and the coefficients of binding and dissociation (KB and Kd). By adding sliders, you could extend this model and explore the behavior of the system with different values.

CREDITS AND REFERENCES

This model was created as part of the 2004 BioQUEST Curriculum Consortium
Summer Workshop.

Copyright 2004 by Steven Brewer, Pat Ehrman, and Allen Koop. All rights reserved.

This model was inspired by many of the sample Netlogo models and parts were based on functions from the Enzyme Kinetics model. (Wilensky, U. (2001). NetLogo Enzyme Kinetics model. http://ccl.northwestern.edu/netlogo/models/EnzymeKinetics. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.)
Permission to use, modify or redistribute this model is hereby granted,
provided that both of the following requirements are followed:
a) this copyright notice is included.
b) this model will not be redistributed for profit without permission from the authors.
Contact the authors for appropriate licenses for redistribution for
profit.

To refer to this model in academic publications, please use:
Brewer, S.D. Ehrman, P., and Koop, A. (2004). A Netlogo Model of lac operon Gene Expression. http://bcrc.bio.umass.edu/netlogo/models/LacOperon
Biology Computer Resource Center

In other publications, please use:
Copyright 2004 by Steven Brewer, Pat Ehrman, and Allen Koop. All rights reserved. See
http://bcrc.bio.umass.edu/netlogo/models/LacOperon
for terms of use.

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

globals [ dI dZ Kd KB i rbound ]
patches-own [ x y ]
turtles-own [age bound partner]
breed [ rna ]
breed [ inducer ]
breed [ repressor ]
breed [ beta ]

to setup
;; (for this model to work with NetLogo's new plotting features,
  ;; __clear-all-and-reset-ticks should be replaced with clear-all at
  ;; the beginning of your setup procedure and reset-ticks at the end
  ;; of the procedure.)
  __clear-all-and-reset-ticks
; setup variables
set rbound false ; set the bound state of the operon to false
set dI 10 ; rate of repressor
set dZ 15 ; rate of beta-galactosidase
set Kd 4 ; dissociation coefficient
set KB 100 ; binding coefficient
; create a few repressor molecules to shut lacZ off fast
if ( lacI-gene = true ) [
crt 5 [
        set breed repressor
        set shape "repressor"
        set color red
        set partner nobody
        set age random 25
        set heading random 360
        fd random 50
      ]]

      ; create binding sites  
      ; red - lacI
      ask patches with [(pxcor = -10) and (pycor = 0)] [ set pcolor red set plabel "I" ]
      ; create "gene"
      ask patches with [(pxcor > -10) and (pxcor <= 0) and (pycor = 0)] [ set pcolor white ]

      ; blue - lacZ
      ask patches with [(pxcor = 1) and (pycor = 0)] [ set pcolor blue set plabel "Z" ]
      ; create "gene"
      ask patches with [(pxcor > 1) and (pxcor <= 16) and (pycor = 0)] [ set pcolor white ]
      
      ; create ribosomes
      ask patches with [ ((pxcor < -12) or (pxcor > 13)) or ((pycor < -3) or (pycor > 5))] [ if random 10 = 1 [set pcolor cyan] ]
  plot-history
  plot-levels               
end 

to go 
; add inducers
if (add-inducer = true) [
  crt inducers-to-add [
  set breed inducer
    set shape "inducer" 
    set partner nobody
    set color black ;;so people don't see what's happening
    set heading 320 
    fd 10 ;; this just moves them up to near gene 1 before they start to diffuse
    set heading random 360 ;; this sets them up to diffuse in all directions
    fd random 5 ;; this makes them not all appear at the same point, or in an obvious circle
    set color green]] ;; this make them visible

; do gene transcription
  ask patches [
    if (plabel = "I")[
     if (lacI-gene = true and random 100 < dI ) [
       sprout 1 [
        set breed rna
        set shape "rna"
        set color red
        set partner nobody
        set age random 30
        set heading random 360
        fd 2
      ]
    ]
  ]
  if (plabel = "Z" and rbound = false) [
    if lacZ-gene = true and random 100 < dZ [
      sprout 1 [
        set breed rna
        set partner nobody
        set shape "rna"
        set color blue
        set bound false
        set age random 30
        set heading random 360
        fd 2
      ]
    ]
  ]
]
; this was a bit tricky to get the order of events right
ask repressor [
    without-interruption [bind-site]
    form-complex]
ask turtles 
    [wander ;; both rnas and proteins check to see if they bind and otherwise move around
     grow-old] ;; both also are recycled by the cell machinery after a while.
ask repressor [dissociate]
ask beta [eat-inducer cleave]
plot-history
plot-levels
end 
 
; bind repressor to lacZ operon

to bind-site
  if (rbound = false and partner = nobody)
  [if (random 100 < Kb and breed = repressor) [
    set bound true 
    set rbound true 
    setxy 1 0  
    set heading 180]]
end 

; unbind repressor from lacZ operon

to unbind-site
  if ((random 100 < Kd) or (partner != nobody)) [
    set rbound false 
    set bound false  
    setxy random world-width random world-height
]
end 

; have RNAs, proteins, and inducers move around the environment

to wander
  if (pcolor = cyan and shape = "rna") [  ;; this is the ribosome translating
     hatch 1 [
     set shape "repressor"
     ifelse (color = blue) [set breed beta set shape "repressor" ] [set breed repressor set shape "repressor" ]
     set bound false
     set age 0
     set heading random 360
   ]
] 
  ifelse (bound = true) [without-interruption [unbind-site]] [rt random 90 - random 90 fd 1 ]
end 

to grow-old ;; cells break down rnas and proteins after a while.  
   set age age + 1
   if (age > (40 + random 100))  [if not (bound = true or breed = inducer) [die]]
end 

to plot-history ;; this creates the line graph
  set-current-plot "Betagalactosidase Levels"
    set-current-plot-pen "B"
  plot ( count turtles with [color = blue and shape = "repressor" ] + count turtles with [shape = "b-complex"]  )
end 

to plot-levels ;; this creates creates the bar graph 
    set-current-plot "Protein and Complex Concentrations"
    clear-plot
    set-current-plot-pen "R"
    plot-pen-down
    plotxy 1 count turtles with [color = red and shape = "repressor"] 
    set-current-plot-pen "R+I"
    plot-pen-down
    plotxy 2 count turtles with [color = red and shape = "r-complex"] 
    set-current-plot-pen "B"
    plot-pen-down
    plotxy 3 count turtles with [color = blue and shape = "repressor"] 
    set-current-plot-pen "B+I"
    plot-pen-down
    plotxy 4 count turtles with [shape = "b-complex"] 
end 

to form-complex  ; based on function from Enzyme Kinetics
  if partner != nobody [ stop ]
  set partner one-of (inducer with [partner = nobody])
  if partner = nobody [ stop ]
  if [partner] of partner != nobody [ set partner nobody stop ] ; in case two enzymes grab the same partner
  ifelse ((([breed] of partner) = inducer) and (random 50 < Kb))
    [ ask partner [set partner myself ]
      setshape
      ask partner [ setshape ] ]
    [ set partner nobody ]
end  

to eat-inducer  ; based on function from Enzyme Kinetics
  if partner != nobody [ stop ]
  set partner one-of (inducer with [partner = nobody])
  if partner = nobody [ stop ]
  if [partner] of partner != nobody [ set partner nobody stop ] ; in case two enzymes grab the same partner
  ifelse (random 100 < Kb)
    [ ask partner [set partner myself ]
      setshape
      ask partner [ setshape ] ]
    [ set partner nobody ]
end  

to cleave ; based on function from Enzyme Kinetics
if partner != nobody [
if random 3 < 1 [
ask partner [ die ] 
      set partner nobody
      setshape]]
end 

;; enzyme procedure that controls the rate at which complexed turtles break apart

to dissociate ; based on function from Enzyme Kinetics
  let old-partner 0
   
  if partner != nobody
    [ if (random 100 < Kd)
      [ ask partner [set partner nobody ]
        set old-partner partner
        set partner nobody
        setshape
        ask old-partner [ setshape ] ] ]
end 

to setshape ; based on function from Enzyme Kinetics
  ifelse breed = repressor
    [ set color red
      ifelse partner = nobody
        [ set shape "repressor" ]
        [ if ([breed] of (partner) = inducer)
            [ set shape "r-complex" ]
             ] ]
    [ ifelse breed = beta
    [ set color blue
      ifelse partner = nobody
        [ set shape "repressor" ]
        [ if ([breed] of (partner) = inducer)
            [ set shape "b-complex" ]
             ] ]
    [ if breed = inducer
        [ set color green
          set shape "inducer"
          set hidden? (partner != nobody) ]
 ] 
 ] 
end 


; This model was created as part of the 2004 BioQUEST Curriculum Consortium
; Summer Workshop.  
;
; Copyright 2004 by Steven Brewer, Pat Ehrman, and Allen Koop.  All rights reserved.
; This model was inspired by many of the sample Netlogo models and parts 
; were based on functions from the Enzyme Kinetics model.  (Wilensky, U. (2001).  
; NetLogo Enzyme Kinetics model. http://ccl.northwestern.edu/netlogo/models/EnzymeKinetics. 
; Center for Connected Learning and Computer-Based Modeling, Northwestern University, 
; Evanston, IL.) 
;
; Permission to use, modify or redistribute this model is hereby granted,
; provided that both of the following requirements are followed:
; a) this copyright notice is included.
; b) this model will not be redistributed for profit without permission
;    from the authors.
; Contact the authors for appropriate licenses for redistribution for
; profit.
;
; To refer to this model in academic publications, please use:
; Brewer, S.D., Ehrman, P., and Koop, A. (2004).  A Netlogo Model of lac operon 
; Gene Expression.  http://bcrc.bio.umass.edu/netlogo/models/GeneExpression
; Biology Computer Resource Center
;
; In other publications, please use:
; Copyright 2004 by Steven Brewer, Pat Ehrman, and Allen Koop.  All rights reserved.  See
; http://bcrc.bio.umass.edu/netlogo/models/GeneExpression
; for terms of use.

There is only one version of this model, created over 9 years ago by Steven Brewer.

Attached files

File Type Description Last updated
Gene Expression: Lac Operon.png preview Preview for 'Gene Expression: Lac Operon' over 9 years ago, by Steven Brewer Download

This model does not have any ancestors.

This model does not have any descendants.