genetic code
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
The genetic code was deciphered in the 1960s mainly by a series of ingenious experiments invented by Marshall Nirenberg's team. This model allows you to crack genetic code based on the synthesized mRNA, like Dr. Nirenberg.
HOW IT WORKS
This model generates an 18-base mRNA based on the nucleotides input by users. Only letters A, C, G, and U are accepted to generate the mRNA. There is no limit to the number of input nucleotides, as the mRNA will be generated based on the proportions of the nucleotides in the input. This gives users some control over the generated sequence. For example, an input of "UUUUA" will generate an mRNA containing more "U" than an input of "UA." E.g., 1) A means 100% of A, and A is equivalent to AA, AAA, etc. 2) UG means 50% of U and 50% of G, and UG is equivalent to GU, GGUU, or UGUG. 3) CGGA means 25% of C, 50% of G, and 25% of A.
Once correct nucleotides are input, the model will synthesize the mRNA in the simulation window. Six codons are displayed in the monitors under the simulation window.
The model will translate the sequence and provide the types of amino acids involved in the peptide synthesis. Note the displayed amino acids are not aligned with the coding order. This is what happened in the actual experiments: scientists only knew the types of amino acids and had to infer the genetic code. You need to infer the genetic code just like a scientist.
HOW TO USE IT
Input nucleotides. It must be the letters A, C, G, and U.
Press on "STEP-2 Synthesize mRNA"
Press on "STEP-3 Translate mRNA"
THINGS TO NOTICE
- No start codon is needed in this model.
- Translation will be terminated when the ribosome encounters a stop codon.
- The mRNA is read from the 5' end to the 3' end.
THINGS TO TRY
Try different compositions of A, C, G, and U to help you strategically determine the genetic code.
CREDITS AND REFERENCES
This model is made by Dr. Lin Xiang at Weber State University in 2018 and revised at the University of Kentucky in 2022. If you mention this model in a publication, we ask that you include the citations below.
Xiang, L. (2022). Genetic Code. Department of STEM Education, Unversity of Kentucky, Lexington, KY.
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 License. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0/.
Comments and Questions
globals [ n ;RNA PXCOR POSITION p1 ;PEPTISE PXCORPOSITION RNA ;RNA string first-base ; item position of 1st base in RNA codon ;codon variable s-base ;starting base item position of a codon f-base ;final base item position of a codon amino-acid ; translated amino acid amino-acid-result ; report the types of amino acids protein-length ;peptide length base-candidates ;nucleotides input from users aa1 ; amino acid 1 aa-num ; assign a number for shuffle AAs aa-num-list filtered-list ; find % of input nucleotides a-% c-% g-% u-% check-index ;record the position of the nucleotide under check ] Patches-own [base] breed [nucleotides nucleotide] breed [units unit] breed [peptides peptide] breed [primes prime] to setup ca set base-candidates STEP-1-Input-Nucleotides ;user-input "Nucleotides (Capital A C U or G only.No space)" ifelse length base-candidates = 0 [user-message "no nucleotide is tested" stop][capitalize-bases] find-percentages set RNA "5'-" ;create 5' end set-default-shape nucleotides "x" ;set default shape as X in case having an invalid base set n 7 ;set the first base position in the world set first-base 3 set s-base 3 set f-base 6 set p1 10 set protein-length 0 set amino-acid-result "" set aa-num-list 0 set aa1 0 ask patches [set pcolor 9.5 + random-float 0.4 ] ask patches with [pycor <= min-pycor + 2 ] [set pcolor 2] repeat 18 [ set RNA word RNA item random (length base-candidates) base-candidates] ;synthesize the RNA set RNA word RNA "-3'" ;attach 3' end repeat 18 [ ask patches with [pxcor = n and pycor = 4] ;assign base to patches [set base item first-base RNA] set n n + 1 set first-base first-base + 1] ask patches with [base != 0] ;let assigned patches produce bases [sprout-nucleotides 1 [ if base = "A" [set shape "nn-a"] if base = "C" [set shape "nn-c"] if base = "G" [set shape "nn-g"] if base = "U" [set shape "nn-u"] ]] create-primes 1 ;MAKE 5' END [set shape "5'" set size 1.5 set color 0 setxy 6.3 4.5] create-primes 1 ;MAKE 3' END [set shape "3'" set size 1.5 set color 0 setxy 24.7 4.5] if any? nucleotides with [shape = "x"] [user-message "Please input correct nucleotide(s) (A, U, C, G)" stop] ribosome reset-ticks end to translate if f-base > 21 [user-message "Translation has been completed" stop] repeat 6 [ ask units ;move ribosome one codon [set heading 90 forward 4 wait 0.3] set codon substring RNA s-base f-base ;detetmine the range (the codon) if codon = "AUG" [set amino-acid "Met" set aa-num 1] ;translate if codon = "UUU" or codon = "UUC" [set amino-acid "Phe" set aa-num 2] if codon = "UUA" or codon = "UUG" or codon = "CUU" or codon = "CUC" or codon = "CUA" or codon = "CUG"[set amino-acid "Leu" set aa-num 3] if codon = "AUU" or codon = "AUC" or codon = "AUA" [set amino-acid "Ile" set aa-num 4] if codon = "GUU" or codon = "GUC" or codon = "GUA" or codon = "GUG" [set amino-acid "Val" set aa-num 5] if codon = "UCU" or codon = "UCC" or codon = "UCA" or codon = "UCG" or codon = "AGU" or codon = "AGC" [set amino-acid "Ser" set aa-num 6] if codon = "CCU" or codon = "CCC" or codon = "CCA" or codon = "CCG" [set amino-acid "Pro" set aa-num 7] if codon = "ACU" or codon = "ACC" or codon = "ACA" or codon = "ACG" [set amino-acid "Thr" set aa-num 8] if codon = "GCU" or codon = "GCC" or codon = "GCA" or codon = "GCG" [set amino-acid "Ala" set aa-num 9] if codon = "UAU" or codon = "UAC" [set amino-acid "Tyr" set aa-num 10] if codon = "CAU" or codon = "CAC" [set amino-acid "His" set aa-num 11] if codon = "CAA" or codon = "CAG" [set amino-acid "Gln" set aa-num 12] if codon = "AAU" or codon = "AAC" [set amino-acid "Asn" set aa-num 13] if codon = "AAA" or codon = "AAG" [set amino-acid "Lys" set aa-num 14] if codon = "GAU" or codon = "GAC" [set amino-acid "Asp" set aa-num 15] if codon = "GAA" or codon = "GAG" [set amino-acid "Glu" set aa-num 16] if codon = "UGU" or codon = "UGC" [set amino-acid "Cys" set aa-num 17] if codon = "UGG" [set amino-acid "Trp" set aa-num 18] if codon = "CGU" or codon = "CGC" or codon = "CGA" or codon = "CGG" or codon = "AGA" or codon = "AGG" [set amino-acid "Arg" set aa-num 19] if codon = "GGU" or codon = "GGC" or codon = "GGA" or codon = "GGG" [set amino-acid "Gly" set aa-num 20 ] if codon = "UAA" or codon = "UAG" or codon = "UGA" [set amino-acid "" user-message "Translation is terminated" ask units [die]] set aa-num-list sentence aa-num-list aa-num ;assign number to aa for removing duplication and shuffle set aa-num-list remove-duplicates aa-num-list ifelse amino-acid != "" ;if not encounter a stop codon, [ create-peptides 1 ; make amino acid [set size 2 set shape "protein-unit" setxy p1 min-pycor + 1 set color white] set p1 p1 + 2 ;set amino acids position set s-base s-base + 3 set f-base f-base + 3] [set aa-num-list remove 0 aa-num-list set aa-num-list shuffle aa-num-list show-aa stop] ] set aa-num-list remove 0 aa-num-list set aa-num-list shuffle aa-num-list show-aa end to ribosome create-units 1 [ set shape "l-unit" set size 7 set color 27 setxy 3.5 3] end to show-aa repeat length aa-num-list [set aa-num item aa1 aa-num-list num-to-aa set amino-acid-result word amino-acid-result " " set amino-acid-result word amino-acid-result amino-acid set aa1 aa1 + 1] end to num-to-aa if aa-num = 1 [set amino-acid "Met"] if aa-num = 2 [set amino-acid "Phe"] if aa-num = 3 [set amino-acid "Leu"] if aa-num = 4 [set amino-acid "Ile"] if aa-num = 5 [set amino-acid "Val"] if aa-num = 6 [set amino-acid "Ser"] if aa-num = 7 [set amino-acid "Pro"] if aa-num = 8 [set amino-acid "Thr"] if aa-num = 9 [set amino-acid "Ala"] if aa-num = 10 [set amino-acid "Tyr"] if aa-num = 11 [set amino-acid "His"] if aa-num = 12 [set amino-acid "Gln"] if aa-num = 13 [set amino-acid "Asn"] if aa-num = 14 [set amino-acid "Lys"] if aa-num = 15 [set amino-acid "Asp"] if aa-num = 16 [set amino-acid "Glu"] if aa-num = 17 [set amino-acid "Cys"] if aa-num = 18 [set amino-acid "Trp"] if aa-num = 19 [set amino-acid "Arg"] if aa-num = 20 [set amino-acid "Gly"] end to find-percentages ifelse member? "A" base-candidates [set filtered-list remove "A" base-candidates set a-% ((length base-candidates) - (length filtered-list)) * 100 / (length base-candidates)] [set a-% 0] ifelse member? "C" base-candidates [set filtered-list remove "C" base-candidates set c-% ((length base-candidates) - (length filtered-list)) * 100 / (length base-candidates)] [set c-% 0] ifelse member? "G" base-candidates [set filtered-list remove "G" base-candidates set g-% ((length base-candidates) - (length filtered-list)) * 100 / (length base-candidates)] [set g-% 0] ifelse member? "U" base-candidates [set filtered-list remove "U" base-candidates set u-% ((length base-candidates) - (length filtered-list)) * 100 / (length base-candidates)] [set u-% 0] end to capitalize-bases set check-index 0 Repeat length base-candidates [ (ifelse item check-index base-candidates = "a" [set base-candidates (replace-item check-index base-candidates "A")] item check-index base-candidates = "g" [set base-candidates (replace-item check-index base-candidates "G")] item check-index base-candidates = "c" [set base-candidates (replace-item check-index base-candidates "C")] item check-index base-candidates = "u" [set base-candidates (replace-item check-index base-candidates "U")]) set check-index check-index + 1] end
There are 13 versions of this model.
This model does not have any ancestors.
This model does not have any descendants.