Repressilator_Synthetic_Biology
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 consisting of several agents in a cell. This model demonstrates a repressilator of 3 genes that regulate each other and how CRIPR technology can regulate the expression of genes. Biologists can use this model to visualize certain aspects of using CRISPR technology in order to regulate gene expression.
HOW IT WORKS
The genetic circuit modelled here has the following components: 1. Promoter – RNA Polymerase binds to the promoter and transcription starts. Cas9 protein also can bind to the promoter and blocks binding of the RNA polymerase if gRNA binds to the Cas9 protein and matches the sequence of promoter. 2. Gene1, Gene2, and Gene3 – A gene that is transcribed under the control of a promoter. Gene 1 expresses the inhibitory signal molecule Tetracycline, Gene 2 expresses the inhibitory signal molecule LacI, and Gene 3 expresses the inhibitory signal molecule Lambda. 3. Terminator – RNA polymerase separates from the DNA when it reaches this region. 4. RNA polymerases - These are represented by brown circles in the model. 5. Cas9 proteins - The pentagons in the model represent Cas9 proteins. Cas9 has the ability to bind to target DNA based on the gRNA targeting sequence. When Cas9 binds to the promoter region, it causes blocking of the transcription initiation and gene expression will be repressed or knocked down.
HOW TO USE IT
Select the four different 4nt sequences promoter sequences and the gRNA sequence using the four choosers, set the half-life of each molecule or protein, set the number of available RNAPs in the system, and change the location of each gene by changing the X and/or Y coordinates. Press SETUP to initialize the components in the model. Press GO to run the model.
THINGS TO NOTICE
This model runs on the assumption that mRNA is instantaneously translated into the proteins. Changing each gene's locations will affect transcription rate at varrying degrees. Bug exists where the genes will not express sometimes and cannot reproduce the bug. If you find it please let the author know
THINGS TO TRY
Change the PROMOTER-SEQUNECE and gRNA-SEQUENCE combination and observe the behaviors again. Change the X and Y coordinates of the genes and observe the behaviors. See which combination has the most robust and optimum behavior. Change the parameter values of Cas9s-max, Tetrs-max, LacIs-max, Lams-max and notice how these changes affects the behavior of the model. Add Cas9 proteins to disrupt equilibrium and see how it affects the behavior of the model.
Author: Arren Liu
Comments and Questions
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 over 6 years ago by Arren Liu.
Attached files
No files
This model does not have any ancestors.
This model does not have any descendants.