Crick's comma-free genetic code was elegant only for a noiseless channel

A gene is a string of four letters with no spaces. The cell reads it three letters at a time, each triplet (a codon) naming one amino acid, so the same string means different things depending on where the counting starts: THECATATE reads THE CAT ATE, and shifted by one letter it reads HEC ATA TE. Finding the right starting point is the reading-frame problem.

The cell solves it with a start signal. The ribosome scans the message from its beginning, starts at the first AUG it meets, and from there counts in threes. That raised my question: A, U and G can also appear straddling two codons, as in CAU GCA, where the AU ending one codon and the G starting the next spell AUG:

CAU  G⏟AUGCA\Large \texttt{C}\underbrace{\texttt{AU\ \ G}}_{\textsf{\small AUG}}\texttt{CA}

What stops that AUG from starting a second read, out of step with the first? Nothing in the letters does. The ribosome is already counting by then, and it doesn't look for start signals in the middle of a gene. Francis Crick had asked the deeper version in 1957, before anyone knew the code: could the letters themselves give away the frame, with no start signal at all? He, Griffith and Orgel showed they could [1].

Their answer was a comma-free code, what coding theory now calls a self-synchronizing code. Four letters in triplets give 64 codons for about 20 amino acids, so most triplets can be left as nonsense. Choose the meaningful ones, the codewords, so that every triplet straddling two codewords is nonsense. That rules out my straddling AUG by construction: if CAU and GCA were codewords, the AUG and UGC across their boundary could not be. Then wherever a reader lands, only the in-frame reading makes sense, and no start signal is needed.

Reading frames under two codesThe twelve letters CUUGGACAGUAC read in frames starting at the first, second and third letter. Under a comma-free code, the first frame gives four codewords and the other two give only nonsense. Under the real code, all three frames give amino acids: Leu Gly Gln Tyr, Leu Asp Ser, and Trp Thr Val.Comma-free codeonly one frame makes senseCUUGGACAGUACframe 1codewordcodewordcodewordcodewordframe 2———frame 3———Real codeevery frame reads as proteinCUUGGACAGUACframe 1LeuGlyGlnTyrframe 2LeuAspSerframe 3TrpThrVal
The same twelve letters read from the first, second and third letter. A comma-free code makes the wrong frames nonsense, so the letters give away the frame; the real code reads every frame as protein, so the cell needs a start codon.

How many codewords can such a code have? AAA can't be one, because AAAAAA would also read as AAA starting at the second letter, and the same goes for the other three repeats. The remaining 60 triplets fall into 20 sets of rotations, like ABC, BCA and CAB, and at most one per set can be a codeword: if BCA is, then BCABCA hides CAB and ABC out of frame. So the ceiling is 20, exactly the number of amino acids, and they found codes that reach it.

The authors called their assumptions precarious and published because the result gives "the magic number—20—in a neat manner." Experiment killed it four years later: Nirenberg and Matthaei fed a string of Us to a cell-free system and got a chain of phenylalanine, so UUU was a codeword, and the paper's first step rules it out.

Next to Crick's code, the real code looked ugly to me. It can't find its own frame, so it needs a start signal, and it shares out 61 meaningful codons unevenly, six for leucine and one for tryptophan, with three stop codons besides. It looked like the kind of codec no good information theorist would ship. That was Crick's rubric again, and the question that fixed it was: elegance for what?

The comma-free objective guards against a lost frame and never mentions a wrong letter. In channel-coding terms, it assumes a noiseless channel. Copying DNA is not noiseless, and the design breaks on its most common error, a single wrong letter. Frame safety forces sparsity: 44 of the 64 triplets are nonsense and each amino acid has exactly one codon, so there are no synonyms to land on. Change any letter of a codeword and the protein gets either the wrong amino acid or a nonsense codon.

The real code spends its redundancy the other way. Because the ribosome finds the frame by counting, the code needs no nonsense to mark it: 61 of the 64 triplets code for an amino acid and many single-letter errors are silent: CUU, CUC, CUA and CUG all mean leucine. Synonyms cluster in the third position, and codons one letter apart tend to code chemically similar amino acids. Weighting the errors that actually occur, Freeland and Hurst found only about one random code in a million does this better [2].

Single-letter errors in CUU under two codesThe nine single-letter changes to the codon CUU. In the real code, three third-letter changes still give leucine, three first-letter changes give the similar hydrophobic amino acids phenylalanine, isoleucine and valine, and three second-letter changes give different ones. In a 20-word comma-free code containing CUU, six of the nine are nonsense and three are other codewords, so other amino acids.1st letter2nd letter3rd letterreal codeUUUPheAUUIleGUUValCCUProCAUHisCGUArgCUCLeuCUALeuCUGLeucomma-freeUUU—AUU—GUU—CCU—CAUotherCGUotherCUCotherCUA—CUG—
  • same amino acid
  • similar amino acid
  • different amino acid
  • nonsense
One wrong letter in CUU (leucine), under the real code and under one 20-word comma-free code that contains CUU. The real code absorbs a third of the errors and softens another third; the comma-free code turns most of them into nonsense.

The trade has a cost. A letter inserted or lost puts everything after it in a shifted frame, and the reading-frames figure above shows what that does: under the real code a shifted frame still reads as protein, so the error runs on unflagged, while a comma-free reader would hit nonsense and find the frame again. The cell pays that cost on the rarer error to be robust to the common one.

References

  1. Codes without Commas [link]
    Crick, F. H. C., Griffith, J. S. and Orgel, L. E., 1957. Proceedings of the National Academy of Sciences, Vol 43(5), pp. 416–421. National Academy of Sciences. DOI: 10.1073/pnas.43.5.416

  2. The Genetic Code Is One in a Million [link]
    Freeland, S. J. and Hurst, L. D., 1998. Journal of Molecular Evolution, Vol 47(3), pp. 238–248. Springer Science and Business Media LLC. DOI: 10.1007/pl00006381