If we consider the computational implications of two carbon atoms acting in concert we see that the logical processing is a result of this dynamic relationship. The “software” is a result of the geometry of the atoms and the laws of chemistry and thermodynamics. Selective evolution acts as the programmer. Molecules (the “hardware”) with just the right sequence of atoms and thus sequential transition properties will tend to be preserved and propagated to the next generation. This is in contrast to The Von Neumann architecture design model that uses a proccesing unit and a separate storage area to hold instructions and data. Thus the logical processing occuring within cells driven by metabolism is "Bioware".
Languages for describing, and possibly programming, biological systems
A living cell is, to a rather surprising extent, an information processing device . One can envision describing precisely such complex biological systems, and then driving simulation and analysis from such descriptions. One can even imagine one day “compiling” bioware languages into real biological systems, just like silicon chips are today compiled from hardware languages. … represent biological systems with a graphical (rather than textual) notation; this is somewhat natural because of the aspect and hierarchical structure of many such systems. It is also possible to provide a formal textual notation and related semantics, using standard techniques from process calculi. Moreover, it is possible to provide a formal graphical notation and related semantics, as a special case of Milner’s BiGraphs.
…many drugs and natural defenses work by subverting natural pathways. We need to model biological systems in order to understand them, but also to study how they can or cannot be tampered with at any level of abstraction.
Similarity between a Machine Dump and DNA
(a) An Octal Dump
0020000 002310 045062 006520 436001 660023 023005 006001 000000
0020020 023001 100121 032000 001110 000200 010304 065000 000000
0020040 034100 000000 023001 007760 000000 014000 004012 166007
0020060 701032 000100 020400 000000 321000 057000 000000 023310
0020100 000000 000000 000001 111100 234000 221500 020020 000100
0020140 003427 000000 000000 023100 066010 000000 100777 004000
0020160 000250 020000 001000 430056 256000 000000 000000 000010
0020200 021450 001000 000000 110010 000000 000000 000000 003042
0020220 550210 034011 002200 023570 000010 000000 000000 200543
(b) A DNA String Extracted from GenBank
1021 GCTGAAGGTC GCCTCGTCGC GGGTGTAACG CAGACCGCCC GACAGGGTCA GCTTGTCGGT
1081 CAGGTCATAG TCGACCTGGC CGAACACGGC GAAGCTGTTG CGCGTCTGCT TGTGCAGGTT
1141 GTCGTACTGG GTCCGGGCCG TATAGCTGGT CCAGTGGGTG TCGAAGTCGA TATCGTCCGA
1201 GACGTAGAAG GCGCCCACGA TCCAGTCCAG ACGACCGTCG TTGTCGTCGC TCAAACGCAT
1261 TTCCAGCGAG GTCTGGTTCA GCGTCTCATC GGCATCGAAG CGCGAGGCCG GATAGGGCGA
1321 GCCGTCGCCG TTGCCCTGCA CCGAGCGAGT CGTGCCCTGG ACGTTGCCGA TCACCGCCAG
1381 ATTCAGGTCA TCGCCCAGAC GATGCTGCAA CGCCGCCGAC ACGCCATAGA TGTCGATGCT
• DNA is made of 4 bases (called nucleotides)
One can initially think of DNA as strings using 4 letters A,C,G, and T
• The complements of A, C, G, T are respectively T, G, C, A.
The notion of complement is useful in cell reproduction and in biological computing.
• There is something like a BVM (Biological Virtual Machine.)
Think of its code as consisting of triplets containing the letters A,C,G, and T.
There are 4*4*4 = 64 such triplets, called "codons" by biologists.
There are exactly 20 aminoacids that are encoded by the 64 triplets. Therefore,
there is redundancy in the code, that is, several triplets generate the same aminoacid.
A parts catalogue for biological computers
The first major goal of the MIT group is to develop design rules and a parts catalogue for biological computers, like the comparable tools that facilitate design of electronic integrated circuits. An engineer planning the layout of a silicon chip does not have to define the geometry of each transistor individually; those details are specified in a library of functional units, so that the designer can think in terms of higher-level abstractions such as logic gates and registers. A similar design discipline will be needed before biocomputing can become practical.
The elements of the MIT biocomputing design library will be repressor proteins. The basic NOT gate in RRL will be a gene encoding some repressor protein (call it Y), with transcription of the Y gene regulated in turn by a different repressor (call it X). Thus whenever X is present in the cell, it binds near the promoter site for Y and blocks the progress of RNA polymerase. When X is absent, transcription of Y proceeds normally. Because the Y protein is itself a repressor, it can serve as the input to some other logic gate, controlling the production of yet another repressor protein, say Z. In this way, gates can be linked together in a chain or cascade.
Going beyond the NOT gate to other logical operations calls for just a little more complexity. a NOR gate, NAND gate (NOT AND) is also universal. Thus, all that is really needed to build the information-processing circuitry of a computer is the ability to make and connect NOR gates or NAND gates.
Pairs of NAND gates can also be coupled to form the computer memory element known as a flip-flop, or latch.
Underneath the computer revolution that has changed our lives are the fundamental principles of computer science---they have allowed us to master electronic systems with billions of components and software with millions of lines of code to do amazingly complex tasks.
In the Molecular Programming Project (MPP) at the California Institute of Technology and the University of Washington, we will develop new computer science principles for programming information-bearing molecules like DNA and RNA to create artificial biomolecular programs of similar complexity.
The team aims to create analogous molecular programs using non-living chemistry, in which computing and decision-making will carried out by chemical processes themselves. Through the creation of molecular programming languages, theory for analyzing them, and experiments for validating them, our long-term vision is to establish "molecular programming" as a subdiscipline of computer science---one that will enable a yet-to-be imagined array of applications from chemical circuitry for interacting with biological molecules to molecular robotics and nanoscale computing.