Programming language for biochemistry

Computer scientists that think of nature as literally computing, often take the stance that biological organisms are nothing more than protein interaction networks. For example, this is the stance that Leslie Valiant (2009) takes when defining ecorithms: biology is just a specialization of computer science focused on evolvable circuits. User @exploderator summarized the realist computational view of biology on Reddit while answering what theoretical computer science can offer biology:

[B]iology is primarily chemo-computation, chemical information systems and computational hardware.
Theoretical comp sci is the only field that is actually specifically dedicated to studying the mathematics / logic of computation. Therefore, although biology is an incredibly hard programming problem (only a fool thinks nature simple), it is indeed more about programming and less about the hardware it’s running on.

Although it is an easy stance for a theoretician to take, it is a little bit more involved for a molecular biologist, chemist, or engineer. Yet for the last 30 years, even experimentalists have been captivated by this computational realism and promise of engineering molecular devices (Drexler, 1981). Half a year ago, I even reviewed Bonnet et al. (2013) taking steps towards building transcriptors. They are focusing on the hardware side of biological computation and building a DNA-analogue of the von Neumann architecture. However, what we really need is a level of abstraction: a chemical programming language that can be compiled into biocompatible reactions.

bioCompThree days ago, Chen et al. (2013) announced progress toward this ambitious goal. Instead of pigeonholing biological computation into the usual logic gate view of computers, the authors used the formalism of chemical reactions networks (CRNs) (parts of which many of us experienced in high-school chemistry through stoichiometry) as a programming language that could be compiled into a sequence of DNA strand displacement reactions. They also developed the technology to build the DNA gates, using custom plasmids to grow them instead of the more delicate task of building synthetic DNA (although they still implemented some debugging and data-collection code by chemically synthesizing DNA). This more stable approach to building DNA gates, also allows them to build “hard-drives” of sorts since the plasmids can be replicated and stored as bacterial glycerol stocks before activating with enzymatic processing.

Chen et al. (2013) tested their procedure by showing that it can be used to implement example reactions from the three major reaction classes — non-catalytic, catalytic, and autocatalytic — that serve as the building blocks for complex CRNs. As a final benchmark, the authors implemented the Angluin, Aspnes, and Eisenstat (2008) approximate majority algorithm from distributed computing that can be implemented with two autocatalytic and one non-catalytic couplied reactions. The goal of approximate majority is to figure out how to switch a cell from expressing some A and B to expressing only A or only B depending on which is in the majority of the initial configuration. This is a good benchmark candidate because the approximate majority algorithm is optimal for a fault-tolerant implementation where agents are drawn uniformly at random to interact, and achieves a sub-task that is useful for amplification and clean-up in many other biological settings. Of course, we shouldn’t lose both our socks over this de novo implementation of approximate majority, since Caredelli & Csikász-Nagy (2012; notice that this is the same Cardelli as in Chen et al. (2013)) previously showed that the common biochemical cell cycle switch makes the same computation. However, loosing one sock is still justified, since this is getting us very close to being able to program our own cells. Although not part of the current study, the devices considered are complete biocompatible and the underlying displacement logic gates can recognize miRNA profiles in living mammalian cells (Hemphill & Deiters, 2013), so in the future this can be used for sensing and smart drug-delivery in vivo.


Angluin, D., Aspnes, J., & Eisenstat, D. (2008). A simple population protocol for fast robust approximate majority. Distributed Computing, 21(2): 87-102.

Bonnet J, Yin P, Ortiz ME, Subsoontorn P, & Endy D (2013). Amplifying Genetic Logic Gates. Science.

Cardelli, L., & Csikász-Nagy, A. (2012). The cell cycle switch computes approximate majority. Scientific Reports, 2.

Chen, Y.J., Dalchau, N., Srinivas, N., Phillips, A., Cardelli, L., Soloveichik, D., & Seelig, G. (2013). Programmable chemical controllers made from DNA. Nature nanotechnology PMID: 24077029

Drexler, K. E. (1981). Molecular engineering: An approach to the development of general capabilities for molecular manipulation. Proceedings of the National Academy of Sciences, 78(9): 5275-5278.

Hemphill, J. & Deiters, A. (2013). DNA computation in mammalian cells: microRNA logic operations. J. Am. Chem. Soc., 135: 10512-10518.

Valiant, L.G. (2009) Evolvability. Journal of the ACM, 56(1): 3

About Artem Kaznatcheev
From the Department of Computer Science at Oxford University and Department of Translational Hematology & Oncology Research at Cleveland Clinic, I marvel at the world through algorithmic lenses. My mind is drawn to evolutionary dynamics, theoretical computer science, mathematical oncology, computational learning theory, and philosophy of science. Previously I was at the Department of Integrated Mathematical Oncology at Moffitt Cancer Center, and the School of Computer Science and Department of Psychology at McGill University. In a past life, I worried about quantum queries at the Institute for Quantum Computing and Department of Combinatorics & Optimization at University of Waterloo and as a visitor to the Centre for Quantum Technologies at National University of Singapore. Meander with me on Google+ and Twitter.

5 Responses to Programming language for biochemistry

  1. Pingback: Programming language for biochemistry | Bioinfo...

  2. Pingback: Cataloging a year of blogging: the algorithmic world | Theory, Evolution, and Games Group

  3. Pingback: Why academics should blog and an update on readership | Theory, Evolution, and Games Group

  4. ” Instead of pigeonholing biological computation into the usual logic gate view of computers, the authors used the formalism of chemical reactions networks (CRNs) (parts of which many of us experienced in high-school chemistry through stoichiometry) as a programming language that could be compiled into a sequence of DNA strand displacement reactions.”
    Could you explain more about what this means? I understood the article fully up to this point. Specifically: what are DNA strand displacement reactions?

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s