CRN++: Molecular Programming Language

CRN++: Molecular Programming Language
复制标题

CRN:分子编程语言

DOI:
10.1007/978-3-030-00030-1_1
复制
发表时间:
2018
期刊:
DNA Computing and Molecular Programming. DNA 2018.
影响因子:
--
通讯作者:
Khurshid, S
Khurshid, S
中科院分区:
--
文献类型:
--
作者:
Vasic, M;Soloveichik, D;Khurshid, S

文献摘要

相似文献

合成生物学是一个迅速兴起的研究领域,预计将对生物学、纳米纤维和医学产生广泛影响。一个关键的技术挑战在于将计算嵌入到电子微控制器无法插入的分子环境中。这需要使用分子组件的计算的有效表示。虽然先前的工作建立了化学反应的图灵完备性,但定义忠实、有效和实用的表示仍然具有挑战性。本文介绍了CRN ++,一种新的语言,用于编程确定性(质量作用)化学动力学进行计算。给出了CRN ++程序的语法和语义,并建立了一个将CRN ++程序翻译成化学反应的编译器,从而为建立一个全面的分子程序设计框架奠定了基础。我们的语言解决了将熟悉的命令结构嵌入到一组同时发生的化学反应中并操纵实值浓度的关键挑战。虽然一些偏离理想的输出值是不可避免的,我们开发的方法,以尽量减少误差,并实现误差分析工具。我们证明了CRN ++在离散和实值计算的一系列著名算法上的可行性,CRN++可以很容易地扩展到支持新的命令或化学反应实现,从而为开发更强大和实用的分子程序提供了基础。
Synthetic biology is a rapidly emerging research area, with expected wide-ranging impact in biology, nanofabrication, and medicine. A key technical challenge lies in embedding computation in molecular contexts where electronic micro-controllers cannot be inserted. This necessitates effective representation of computation using molecular components. While previous work established the Turing-completeness of chemical reactions, defining representations that are faithful, efficient, and practical remains challenging . This paper introducesCRN++, a new language for programming deterministic (mass-action) chemical kinetics to perform computation. We present its syntax and semantics, and build a compiler translatingCRN++ programs into chemical reactions, thereby laying the foundation of a comprehensive framework for molecular programming. Our language addresses the key challenge of embedding familiar imperative constructs into a set of chemical reactions happening simultaneously and manipulating real-valued concentrations. Although some deviation from ideal output value cannot be avoided, we develop methods to minimize the error, and implement error analysis tools. We demonstrate the feasibility of usingCRN++on a suite of well-known algorithms for discrete and real-valued computation.CRN++ can be easily extended to support new commands or chemical reaction implementations, and thus provides a foundation for developing more robust and practical molecular programs.