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".
-
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.
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:
-
(mvr)
-
(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:
-
(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:
-
(mvr)
-
(ina ing)
-
(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:
-
(mvr)
-
(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.
|