Typogenetics Simulator

Here I describe a computer program that simulates the typogenetics system described in GEB. The program also searches for what I call "palindromic" self-replicators. I say that a strand is "palindromic" if it consists of an even number of bases, and if the second half of the strand is obtained by complementing and then mirror-reflecting the first half of the strand. I decided to focus the search for self-replicators on strands that are palindromic because this type of strand seemed like it would be particularly easy to replicate.

Note: in the example at the bottom of page 508, it is stated that the enzyme (rpu inc cop mvr mvl swi lpu int) binds to "g". I think this is a mistake; according to the rules of typogenetics, it seems like it should bind to "t".


Files

geb-typogenetics.scm

Typogenetics simulator, written in scheme. The simulator defines functions that decode strands to obtain enzymes, that apply enzymes to strands, and that search for self-replicating strands.

simply.zip

Library used by "geb-typogenetics.scm".

typogenetics-examples.txt

This file illustrates the typogenetics simulator using the various examples from GEB.


Self-replicating strands

Here are some palindromic self-replicators discovered by the typogenetics simulator:

Length 18

Define "sr18" to be the following strand:
(c a a a a a a a c g t t t t t t t g)
Strand sr18 encodes two enzymes:
  1. (mvr)
  2. (cop lpu lpu lpu lpy)
The second enzyme binds to "g". If we bind this enzyme to the rightmost "g" in strand sr18 and allow it to act, we obtain two copies of sr18. Strand sr18 is the shortest self-replicating strand that is palindromic.

Length 20

Define "sr20" to be the following strand:
(c g t c t c t c t a t a g a g a g a c g)
Strand sr20 encodes a single enzyme:
  1. (cop rpu rpu rpu rpy rpy ina ina ina cop)
This enzyme binds to "c". If we bind this enzyme to the leftmost "c" in strand sr20 and allow it to act, we obtain two copies of sr20.

Length 22

Define "sr22" to be the following strand:
(c a a a g a g g a a c g t t c c t c t t t g)
Strand sr22 encodes three enzymes:
  1. (mvr)
  2. (ina ing)
  3. (cop lpu mvl rpu lpu lpy)
The third enzyme binds to "g". If bind this enzyme to the rightmost "g" in strand sr22 and allow it to act, we obtain two copies of sr22.

Length 24

Define "sr24" to be the following strand:
(c a a a a a a a a a c g c g t t t t t t t t t g)
Strand sr24 encodes two enzymes:
  1. (mvr)
  2. (cop cop lpu lpu lpu lpu lpy)
The second enzyme binds to "g". If we let this enzyme bind to the rightmost "g" in strand sr24 and allow it to act, we obtain two copies of sr24.


David Boozer

Last modified 25 January 2009
boozer at caltech dot edu