Although it isn’t very real-world practical, researchers at Cal Tech have produced a DNA-based programmable computer. Spectrum reports that the system executes programs using a set of instructions written in DNA using six bits. Like any programmable computer, this one can execute many programs, but so far they have run 21 different programs.
Using DNA for computation isn’t new — your body does it all the time. But, in general, DNA computers were akin to some logic gates that would do one set of things, not a general-purpose reprogrammable computer.
DNA has two parts composed of four different chemicals — you can think of each part as a ladder cut vertically down the middle with each “rung” being one of the four chemicals. Each part will try to pair up with a part that has a complementary set of rungs. The researchers created DNA strands to act like logic gates that have two inputs and two outputs. They combine five of these gates to create a layer with six inputs and six outputs. A program contains a stack of these six-bit layers.
The computer’s complete set of instructions uses 355 different types of components known as tiles. Each one uses multiple DNA strands for redundancy which helps combat errors. Despite this, the error rate is still relatively high compared to an electronic computer. The team reports they have programs that do copying, sorting, recognizing palindromes and multiples of three, random walking, obtaining an unbiased choice from a biased random source, electing a leader, simulating cellular automata, generating deterministic and randomized patterns, and counting to 63. The overall per tile error rate of less than 1 in 3,000.
A custom compiler takes input and produces the information required to “run” the DNA computer. The compiler produces a list of DNA sequences to add, when to add them, and at what temperature. It takes about a day for a program to complete, so this isn’t going to power the next wave of supercomputers.
It takes one or two hours for the DNA origami nanotube to grow and another day or so for the computation to complete. However, it does have possible applications for creating self-assembling programmable matter.