Repressilator_Synthetic_Biology
No preview image
Model was written in NetLogo 6.0.4
•
Viewed 66 times
•
Downloaded 6 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
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.