A new molecular programming language: CRN++

CRN++: A new molecular programming language
The Euclid's algorithm and how it will be written in CRN++. Credit: Vasic et al.

Synthetic biology is a relatively new area of research that could significantly impact a number of fields, including biology, nanofabrication and medicine. A primary challenge in this emerging field is that of embedding computation in molecular contexts, in situations where electronic micro-controllers cannot be inserted. Doing this requires the development of methods that can effectively represent computations using molecular components.

A team of researchers at The University of Texas at Austin has created CRN++, a new for programming deterministic (mass-action) kinetics in performing computations. In their paper, pre-published on arXiv, the researchers outline this new language and build a compiler that translates CRN++ programs into .

"A key technical challenge of is to design a chemical controller that interacts within a cellular environment, achieving a particular task," Marko Vasic, one of the researchers who carried out the study, told Tech Xplore. "To achieve this, it is necessary to both engineer synthetic molecules and them. Molecules interact via chemical reactions, and by programming molecules, we mean defining interaction rules (chemical reactions) between them."

Recent improvements in DNA synthesis have opened up new, exciting possibilities for molecule engineering. However, researchers in synthetic biology first need to devise ways to design the interaction rules (chemical reactions) to achieve a desired goal. The main objective of this recent study was to design a higher-level language that could express the behaviour of chemical reactions in a more intuitive way.

"In software engineering, a programmer writes in a high-level language that is easy to understand, and such a program is compiled down to the machine code, which is hard to understand by a human, but understandable by a machine," Vasic explained. "We tried to build an analogy in molecular programming by defining a high-level language that is easier to reason about and is compiled down to 'complex' chemistry."

CRN++: A new molecular programming language
The output of the compiler as well as simulation results for the CRN++ program. Credit: Vasic et al.

CRN++ is based on two ideas: modularity and the use of an oscillator. Modularity means that the language includes a set of chemical reactions called modules that can be composed with no interference between different sets of reactions. To achieve this, the researchers mapped basic operations of CRN++ to these modules. They also used a chemical oscillator for temporal ordering, which allowed them to translate ordered imperative commands of the language into chemistry.

"To the best of our knowledge, we are the first to provide an imperative programming language that complies with chemical networks," Vasic said. "We open-sourced our code, including CRN++, as well as simulation framework, as we hope that this will make it easier for researchers to try out new approaches, and thus advance the area further."

The researchers evaluated CRN++ and proved its feasibility on a series of algorithms for discrete and real-value computation. The new language can also be easily extended to support new commands or implementations, making it the ideal basis for the development of more advanced molecular programs.

"Programs translated from CRN++ to chemistry contain some amount of error, which can be very low in some classes of programs but can be high or build up over time in other ones," Vasic said. "We hence plan to investigate sources of error further and design programs that guarantee that error does not build up over certain bound."

Vasic and his colleagues are also looking to broaden their programming language by including new modules, defined as sets of chemical reactions that can carry out basic operations.

Explore further

First-of-its-kind chemical oscillator offers new level of molecular control

More information: CRN++: Molecular Programming Language. arXiv:1809.07430 [cs.ET]. arxiv.org/abs/1809.07430

© 2018 Tech Xplore

Citation: A new molecular programming language: CRN++ (2018, October 5) retrieved 21 October 2018 from https://techxplore.com/news/2018-10-molecular-language-crn.html
This document is subject to copyright. Apart from any fair dealing for the purpose of private study or research, no part may be reproduced without the written permission. The content is provided for information purposes only.

Feedback to editors

User comments

Oct 05, 2018
Every object is set of objects defined w/ only 1 object w/ 2 attributes; allowing memory to be an object and a function of every other object; then just cut, paste, slice, calculate, play human.

Oct 05, 2018
Attributes may may "defined" even metaphorically

Oct 05, 2018
Necessary and sufficient isomorphic or Onto Reality.

Oct 05, 2018
The thing about computers as physical systems is how religiously discrete, error free and deterministic they are. If these folks invents some new constructs to deal with stochastic behavior and error, they'll be doing computer science a favor as well as chemistry.

Please sign in to add a comment. Registration is free, and takes less than a minute. Read more