Repressilator_Synthetic_Biology

No preview image

1 collaborator

Default-person Arren Liu (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by everyone
Model was written in NetLogo 6.0.4 • Viewed 66 times • Downloaded 6 times • Run 0 times
Download the 'Repressilator_Synthetic_Biology' modelDownload this modelEmbed this model

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

globals [
  promoter-color-list                                                                                                 ; color list to set promoter colors based on their sequences
  gRNA-color-list                                                                                                     ; color list to set gRNA colors based on their sequences
  gene-color                                                                                                          ; color of the gene
  promoter-transcribed?                                                                                               ; a boolean to see if the promoter is transcribed
  cas9-number                                                                                                         ; number of cas9 molecules
  RNAPs-number                                                                                                        ; number of RNA polymerase molecules
  gRNA-number                                                                                                         ; number of gRNA molecules
  non-dna                                                                                                             ; agentset excluding the patches that are DNA

  dna                                                                                                                 ; agentset containing the patches that are Gene1/Tet
  CDS                                                                                                                 ; agentset containing the patches that are CDS for Gene1/Tet
  promoter                                                                                                            ; agentset containing the patches that are for the promoter for Gene1/Tet
  terminator                                                                                                          ; agentset containing the patches that are for the terminator for Gene1/Tet
  pro_seq_1                                                                                                           ; agentset containing the user-defined sequence for promoter_1
  pro-1-transcribed?                                                                                                  ; boolean for whether or not Gene2/Tet is transcribed
  inhibited-pro1?                                                                                                     ; boolean for whether or not the promoter is inhibited

  dna_2                                                                                                               ; agentset containing the patches that are Gene2/LacI
  CDS_2                                                                                                               ; agentset containing the patches that are CDS for Gene2/LacI
  promoter_2                                                                                                          ; agentset containing the patches that are for the promoter_2 for Gene2/LacI
  pro_seq_2                                                                                                           ; agentset containing the user-defined sequence for promoter_2
  terminator_2                                                                                                        ; agentset containing the patches that are for the terminator_2
  pro-2-transcribed?                                                                                                  ; boolean for whether or not Gene2/LacI is transcribed
  inhibited-pro2?                                                                                                     ; boolean for whether or not the promoter for Gene2/LacI is inhibited

  dna_3                                                                                                               ; agentset containing the patches that are DNA_3
  CDS_3                                                                                                               ; agentset containing the patches that are mRNA gene_3
  promoter_3                                                                                                          ; agentset containing the patches that are for the promoter_3
  pro_seq_3                                                                                                           ; agentset containing the user-defined sequence for promoter_3
  terminator_3                                                                                                        ; agentset containing the patches that are for the terminator_3
  pro-3-transcribed?                                                                                                  ; boolean for whether or not Gene3/Lam is transcribed
  inhibited-pro3?                                                                                                     ; boolean for whether or not the promoter for Gene3/Lam is inhibited

  temp_Tet                                                                                                            ; temporary boolean for whether or not the RNAP is physically on a promoter
  Tet_count                                                                                                           ; boolean for whether or not the RNAP is physically on the promoter for Tet
  temp_LacI                                                                                                           ; temporary  boolean for whether or not the RNAP is physically on the promoter for LacI
  LacI_count                                                                                                          ; boolean for whether or not the RNAP is physically on the promoter for LacI
  Lam_count                                                                                                           ; temporary  boolean for whether or not the RNAP is physically on the promoter for Lam
  temp_Lam                                                                                                            ; boolean for whether or not the RNAP is physically on the promoter for LacI

  cas9-bound-1?
  cas9-bound-2?
  cas9-bound-3?

]

breed [ cas9s cas9 ]                                                                                                  ; cas9 repressor protein (violet pentagon proteins)
breed [ mRNAs mRNA ]                                                                                                  ; mRNA  ( red circle proteins)
breed [ gRNAs gRNA ]                                                                                                  ; gRNA molecule (cyan triangle molecules) that bind to Cas9 to direct it to promoter.
breed [ RNAPs RNAP ]                                                                                                  ; RNA Polymerases (brown proteins) that bind to promoter part of DNA and synthesize mRNA from the downstream DNA
breed [ Tetrs Tetr ]                                                                                                  ; Tetrocycline signal produced by gene 1
breed [ LacIs LacI ]                                                                                                  ; LacI signal produced by gene 2
breed [ Lams Lam ]                                                                                                    ; LacI signal produced by gene 2

cas9s-own [
  partner                                                                                                             ; a partner is an gRNA molecule with which a cas9 molecule binds to form a complex
  on-promoter?                                                                                                        ; a boolean to track if a cas9 is bound to DNA as an inhibitor of transcription
  life
]

RNAPs-own [                                                                                                           ; a boolean to track if a RNAPs is transcribing on the DNA
  on-dna?
]

Tetrs-own [
  on-promoter?                                                                                                        ; a boolean to track if Tetr is near promoter_3
  life
]

LacIs-own [
  on-promoter?                                                                                                        ; a boolean to track if Tetr is near promoter_3
  life
]

Lams-own [
  on-promoter?                                                                                                        ; a boolean to track if Tetr is near promoter_3
  life
]



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;; Setup Procedures ;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

to setup
  clear-all
  set-global-variables
  set-DNA-patches
  set-DNA-patches_2
  set-DNA-patches_3
  add-proteins
  reset-ticks
end 

to set-global-variables
  set promoter-color-list [ 42 44 45 48 ]
  set gene-color 115
  set cas9-number 10
  set RNAPs-number number-of-RNAPs
  set promoter-transcribed? false
  set pro-1-transcribed? false
  set pro-2-transcribed? false
  set pro-3-transcribed? false
  set temp_tet false
  set temp_LacI false
  set temp_Lam false
  set Lam_count count Lams
  set Tet_count count Tetrs
  set LacI_count count LacIs
  set inhibited-pro1? false
  set inhibited-pro2? false
  set inhibited-pro3? false
  set cas9-bound-1? false
  set cas9-bound-2? false
  set cas9-bound-3? false
end 

to set-DNA-patches                                                                                                   ; a procedure to set the DNA patches in the cell and assign appropriate colors based on their sequences
  ask patches [set pcolor white]

  set dna patches with [
    pxcor >= Tet-X-Axis and pxcor < Tet-X-Axis + 50 and pycor > Tet-Y-Axis and pycor < Tet-Y-Axis + 4
  ]
  set promoter patches with [
    pxcor >= Tet-X-Axis and pxcor < Tet-X-Axis + 10 and pycor > Tet-Y-Axis and pycor < Tet-Y-Axis + 4
   ]
  set CDS patches with [
    pxcor >= Tet-X-Axis + 10 and pxcor < Tet-X-Axis + 45 and pycor > Tet-Y-Axis and pycor < Tet-Y-Axis + 4
  ]
  set terminator patches with [
    pxcor >= Tet-X-Axis + 45 and pxcor < Tet-X-Axis + 50 and pycor > Tet-Y-Axis and pycor < Tet-Y-Axis + 4
  ]

  ask dna [ set pcolor gray ]
  ask promoter [ set pcolor orange + 2 ]
  ask CDS [ set pcolor orange ]
  ask terminator [ set pcolor gray ]

  ask promoter [
    set pro_seq_1 Tet-promoter-sequence
  ]
end 

to set-DNA-patches_2                                                                                                   ; a procedure to set the DNA patches in the cell and assign appropriate colors based on their sequences

  set dna_2 patches with [
    pxcor >= LacI-X-Axis and pxcor < LacI-X-Axis + 50 and pycor > LacI-Y-Axis and pycor < LacI-Y-Axis + 4
  ]
  set promoter_2 patches with [
    pxcor >= LacI-X-Axis and pxcor < LacI-X-Axis + 10 and pycor > LacI-Y-Axis and pycor < LacI-Y-Axis + 4
  ]
  set CDS_2 patches with [
    pxcor >= LacI-X-Axis + 10 and pxcor < LacI-X-Axis + 45 and pycor > LacI-Y-Axis and pycor < LacI-Y-Axis + 4
  ]
  set terminator_2 patches with [
    pxcor >= LacI-X-Axis + 45 and pxcor < LacI-X-Axis + 50 and pycor > LacI-Y-Axis and pycor < LacI-Y-Axis + 4
 ]

  ask dna_2 [ set pcolor gray ]
  ask promoter_2 [ set pcolor blue + 2 ]
  ask CDS_2 [ set pcolor blue ]
  ask terminator_2 [ set pcolor gray ]

  ask promoter_2 [
    set pro_seq_2 LacI-promoter-sequence
  ]
end 

to set-DNA-patches_3                                                                                                   ; a procedure to set the DNA patches in the cell and assign appropriate colors based on their sequences

  set dna_3 patches with [
    pxcor >= Lam-X-Axis and pxcor < Lam-X-Axis + 50 and pycor > Lam-Y-Axis and pycor < Lam-Y-Axis + 4
  ]
  set promoter_3 patches with [
    pxcor >= Lam-X-Axis and pxcor < Lam-X-Axis + 10 and pycor > Lam-Y-Axis and pycor < Lam-Y-Axis + 4
  ]
  set CDS_3 patches with [
    pxcor >= Lam-X-Axis + 10 and pxcor < Lam-X-Axis + 45 and pycor > Lam-Y-Axis and pycor < Lam-Y-Axis + 4
  ]
  set terminator_3 patches with [
    pxcor >= Lam-X-Axis + 45 and pxcor < Lam-X-Axis + 50 and pycor > Lam-Y-Axis and pycor < Lam-Y-Axis + 4
 ]

  ask dna_3 [ set pcolor gray ]
  ask promoter_3 [ set pcolor green + 2 ]
  ask CDS_3 [ set pcolor green ]
  ask terminator_3 [ set pcolor gray ]

  ask promoter_3 [
    set pro_seq_3 Lambda-promoter-sequence
  ]

  set non-dna patches with [ pcolor = white ]
end 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;; RUNTIME PROCEDURES ;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

to go
  go-cas9s
  go-RNAPs
  go-Tetrs
  go-LacIs
  go-Lams
  check-transcription
  tick
end 

to move                                    ; a random walk procedure for the proteins and gRNA molecules in the cell
  rt random-float 360
  fd 1
end 

to setshape                                ; a procedure to set shapes of the molecules
  if breed = cas9s [
    set size 10
    ifelse partner = nobody
    [ set shape "Cas9"]
    [ set shape "cas9-gRNA-complex" set size 6 ]
  ]
  if breed = RNAPs [
    set size 6
    set shape "circle"
    set color brown]

  if breed = Tetrs [
    set shape "pentagon"
    set color orange
    set size 3]

  if breed = LacIs [
    set shape "pentagon"
    set color blue
    set size 3]

    if breed = Lams [
    set shape "pentagon"
    set color green
    set size 3]
end 

to go-RNAPs                                ; If an RNAPs is close or on the promoter (green) and the promoter is open and is not inhibited,
                                           ; start-transcription and change heading and move on the DNA towards the terminator.
  if (inhibited-pro1? = false) and (not any? Lams-on promoter)[
    ask RNAPs [
      start-transcription
    ]
  ]
  if (inhibited-pro2? = false) and (not any? Tetrs-on promoter_2) [
    ask RNAPs [
      start-transcription
    ]
  ]
  if (inhibited-pro3? = false) and (not any? LacIs-on promoter_3) [
    ask RNAPs [
      start-transcription
    ]
  ]

  if any? RNAPs with [ on-dna? ] [
    ask RNAPs with [ on-dna? ] [
      set heading 90
      fd 1
      if member? patch-here terminator [
        set promoter-transcribed? true
        set on-dna? false
        rt random-float 360
        set pro-1-transcribed? true
      ]

      if member? patch-here terminator_2 [
        set promoter-transcribed? true
        set on-dna? false
        rt random-float 360
        set pro-2-transcribed? true
      ]

      if member? patch-here terminator_3 [
        set promoter-transcribed? true
        set on-dna? false
        rt random-float 360
        set pro-3-transcribed? true
        ]
      ]
    ]

  ask RNAPs with [ not on-dna? ] [
    move
  ]
end 

to produce-Cas9s                                ; procedure to synthesize Cas9 proteins
  create-cas9s cas9-number [
    set on-promoter? false
    setxy random-xcor random-ycor
    set partner nobody
    setshape
  ]
end 

to add-proteins                                 ; procedure to add RNAPs for set-up
  create-RNAPs RNAPs-number [
    setxy random-xcor random-ycor
    set on-dna? false
    setshape
  ]
end 

to produce-Tetrs                                ; procedure to synthesize Tet molecules
  create-Tetrs 1 [
    setshape
;    setxy -11 17
    setxy Tet-X-Axis + 45 Tet-Y-Axis + 3
    set on-promoter? false
  ]
end 

to produce-LacIs                                ; procedure to synthesize LacI molecules
  create-LacIs 1 [
    setshape
;    setxy -11 3
    setxy LacI-X-Axis + 45 LacI-Y-Axis + 3
    set on-promoter? false
  ]
end 

to produce-Lams                                 ; procedure to synthesize Lam molecules
  create-Lams 1 [
    setshape
    setxy Lam-X-Axis + 45 Lam-Y-Axis + 3
    set on-promoter? false
  ]
end 

to produce-RNAPs                                ; procedure to synthesize RNAP proteins
    create-RNAPs 1 [
    setxy random-xcor random-ycor
    set on-dna? false
    setshape
  ]
end 

to start-transcription                           ; a turtle procedure for RNAPs that checks if inhibitory signal molecules are on each promoter;
  if (member? patch-here promoter or member? patch-ahead 9 promoter) and (not any? cas9s-on promoter) [
      ask Lams [
        if on-promoter? = true [
          set temp_Lam True
        ]
      ]
      if temp_Lam = False [
       set on-dna? true
      ]
      if on-dna? = true [
        if Lam_count < 50 [
          setxy xcor Tet-Y-Axis + 1
          set heading 90
          set on-dna? True
        ]
      ]
    ]
  if (member? patch-here promoter_2 or member? patch-ahead 9 promoter_2) and (not any? cas9s-on promoter_2) [
      ask Tetrs [
        if on-promoter? = true [
          set temp_Tet True
        ]
      ]
      if temp_Tet = False [
       set on-dna? true
      ]
      if on-dna? = true [
        if Tet_count < 80 [
          setxy xcor LacI-Y-Axis + 1
          set heading 90
          set on-dna? True
        ]
      ]
    ]
  if (member? patch-here promoter_3 or member? patch-ahead 9 promoter_3) and (not any? cas9s-on promoter_3) [
    ask LacIs [
      if on-promoter? = true [
       set temp_LacI True
      ]
    ]
    if temp_LacI = False [
     set on-dna? true
    ]
    if on-dna? = true [
      if LacI_count < 100 [
        setxy xcor Lam-Y-Axis + 1
        set heading 90
        set on-dna? True
      ]
    ]
  ]
end 

to go-Tetrs                           ; a turtle procedure for Tetrs that checks if they're near promoter_2 and binds if true
  set Tet_count count Tetrs
  ask Tetrs [
    set life life + 1
    ask one-of Tetrs-here [
      if life >= Tet-max [
        die
      ]
      set Tet_count count Tetrs
    ]
      if member? patch-here promoter_2 or member? patch-ahead 15 promoter_2[
        setxy LacI-X-Axis + 1 LacI-Y-Axis + 3
        set on-promoter? true
    ]
  ]

  ask Tetrs with [ not on-promoter? ] [
    move
  ]
end 

to go-LacIs                           ; a turtle procedure for LacIs that checks if they're near promoter_3 and binds if true
  set LacI_count count LacIs
  ask LacIs [
    set life life + 1
    ask one-of LacIs-here [
      if life >= LacI-max [
        die
        ]
      set LacI_count count LacIs
    ]
    if member? patch-here promoter_3 or member? patch-ahead 15 promoter_3[
      setxy Lam-X-Axis + 1 Lam-Y-Axis + 3
      set on-promoter? true
    ]
  ]

  ask LacIs with [ not on-promoter? ] [
    move
  ]
end 

to go-Lams                           ; a turtle procedure for Lams that checks if they're near promoter_1 and binds if true
  set Lam_count count Lams
  ask Lams [
    set life life + 1
    ask one-of Lams-here [
      if life >= Lam-max [
        die
      ]
      set Lam_count count Lams
    ]
    if member? patch-here promoter or member? patch-ahead 15 promoter [
      setxy Tet-X-Axis + 1 Tet-Y-Axis + 3
      set on-promoter? true
    ]
  ]
  ask Lams with [ not on-promoter? ] [
    move
  ]
end 

to go-cas9s                           ; a turtle procedure for Cas9s that checks if they're near a promoter with similar sequence to the user-defined gRNA and binds if true
  ask cas9s [
    set life life + 1
    ask one-of Cas9s-here [
      if life >= Cas9s-max [
        die
      ]
    ]
    if (member? patch-here promoter or member? patch-ahead 9 promoter) and pro_seq_1 = gRNA-sequence [
;      check-promoter
      if cas9-bound-1? = false [
        setxy Tet-X-Axis + 1 Tet-Y-Axis + 3
        set on-promoter? true
        set heading 0
        set inhibited-pro1? true
      ]
    ]
    if (member? patch-here promoter_2 or member? patch-ahead 9 promoter_2) and pro_seq_2 = gRNA-sequence [
      if cas9-bound-2? = false [
        setxy LacI-X-Axis + 1 LacI-Y-Axis + 3
        set on-promoter? true
        set heading 0
        set inhibited-pro2? true
      ]
    ]
    if (member? patch-here promoter_3 or member? patch-ahead 9 promoter_3) and pro_seq_3 = gRNA-sequence [
      if cas9-bound-3? = false [
        setxy Lam-X-Axis + 1 Lam-Y-Axis + 3
        set on-promoter? true
        set heading 0
        set inhibited-pro3? true
      ]
    ]
  ]
  ask Cas9s with [ not on-promoter? ] [
    move
  ]
  ask promoter_3 [
    set pro_seq_3 Lambda-promoter-sequence
  ]
  ask promoter_2 [
    set pro_seq_2 LacI-promoter-sequence
  ]
  ask promoter [
    set pro_seq_1 Tet-promoter-sequence
  ]
end 

to check-transcription                           ; a patch procedure that checks if the CDS was transcribed and produces the corresponding inhibitory signal protein
  if pro-1-transcribed? [
    produce-Tetrs
    set pro-1-transcribed? false
    ]
  if pro-2-transcribed? [
    produce-LacIs
    set pro-2-transcribed? false
  ]
   if pro-3-transcribed? [
      produce-Lams
    set pro-3-transcribed? false
    ]
   ask promoter_3 [
     if any? LacIs-on promoter_3 [
        set temp_LacI False
      ]
    ]
    ask promoter_2 [
      if any? Tetrs-on promoter_2 [
        set temp_Tet False
      ]
    ]
    ask promoter [
      if any? Lams-on promoter [
        set temp_Lam False
      ]
  ]
end 

to add-tet                           ; a procedure to add tet in a user-defined location
  while [mouse-down?] [
    create-Tetrs 1 [
      setshape
      setxy mouse-xcor mouse-ycor
      set on-promoter? false
    ]
    print ""
  ]
end 

to add-LacI                          ; a procedure to add LacI in a user-defined location
  while [mouse-down?] [
    create-LacIs 1 [
      setshape
      setxy mouse-xcor mouse-ycor
      set on-promoter? false
    ]
    print ""
  ]
end 

to add-Lambda                         ; a procedure to add Lam in a user-defined location
  while [mouse-down?] [
    create-Lams 1 [
      setshape
      setxy mouse-xcor mouse-ycor
      set on-promoter? false
    ]
    print ""
  ]
end 

to add-dCas9-gRNA                       ; a procedure to add Cas9-gRNA complexes at a user-defined location
  while [mouse-down?] [
    create-Cas9s 1 [
      setxy mouse-xcor mouse-ycor
      set on-promoter? false
      set partner nobody
      setshape
    ]
    print ""
  ]
end 

to add-RNAP                             ; a procedure to add RNAPs complexes at a user-defined location
  while [mouse-down?] [
    create-RNAPs 1 [
    setxy mouse-xcor mouse-ycor
    set on-dna? false
    setshape
    ]
    print ""
  ]
end 

; Acknowledgements to Uri Wilensky's 2016 Genetic Switch Synthetic Biology Extension and Farzaneh Moghadam's CRISPR repression Model

There is only one version of this model, created about 5 years ago by Arren Liu.

Attached files

No files

This model does not have any ancestors.

This model does not have any descendants.