一个将CRN++程序翻译成化学反应的编译器。

电子说

1.3w人已加入

描述

德克萨斯大学奥斯汀分校的研究人员创造了一种新的编程语言CRN++,旨在设计合成分子并对其进行编程,通过编程分子定义它们之间的化学反应。研究人员还开源代码,包括CRN ++,以及模拟框架。

合成生物学是一个相对较新的研究领域,可能会对生物学、纳米制造、医学等许多领域产生重大影响。这个新兴领域的一个主要挑战是在无法插入电子微控制器的情况下,在分子环境中嵌入计算。要做到这一点,需要开发出可以使用分子成分有效表示计算的方法。

德克萨斯大学奥斯汀分校的一组研究人员创造了一种新的编程语言CRN++,这是一种在执行计算时编程确定性(质量作用)化学动力学的新语言。他们在arXiv预印版论文中描述了这种新语言,并构建了一个将CRN++程序翻译成化学反应的编译器。

论文地址:https://arxiv.org/pdf/1809.07430.pdf

“合成生物学的一个关键技术挑战就是设计一种在细胞环境中相互作用的化学控制器,以完成特定的任务,”这项研究的研究人员之一Marko Vasic说:“为了实现这一目标,有必要设计合成分子并对其进行编程。分子通过化学反应相互作用,而通过编程分子,我们可以定义它们之间的相互作用规则(化学反应)。”

编程语言

Euclid算法以及如何用CRN++编写  图片来源:Vasic et al.

最近,DNA合成取得的进展为分子工程开辟了新的、令人兴奋的可能性。然而,合成生物学的研究人员首先需要找到设计相互作用规则(化学反应)的方法,以达到预期目标。这项研究的主要目的是设计一种能够以更直观的方式表达化学反应行为的高级语言。

Vasic解释说:“在软件工程中,程序员用一种易于理解的高级语言编写程序,这样的程序被编译成机器代码,这些代码人类难以理解,但机器可以理解。” “我们试图通过定义一种高级语言来建立分子编程中的类比,这种语言更容易理解,也更容易编译成‘复杂的’化学。”

编程语言

编译器的输出以及CRN++程序的模拟结果。 图片来源:Vasic et al.

CRN++基于两个想法:模块化和振荡器(oscillator)的使用。模块化意味着该语言包含一组称为模块(modules)的化学反应,这些化学反应可以在不同的反应集之间不受干扰地组成。为了实现这一点,研究人员将CRN++的基本操作映射到这些模块。他们还使用了一个化学振荡器(chemical oscillator)来进行时间排序,这样他们就能够将语言中的有序命令翻译成化学。

“据我们所知,我们是第一个提供符合化学反应网络的命令式编程语言的团队,”Vasic说。“我们开源了代码,包括CRN++,以及模拟框架,因为我们希望这将帮助研究人员更容易尝试新的方法,从而进一步推进该领域的研究。”

研究人员对CRN++进行了评估,并证明了其在一系列离散和实值计算算法上的可行性。新语言还可以轻松扩展,以支持新的命令或实现,使其成为开发更高级的分子程序的理想基础。

“从CRN++翻译成化学的程序包含一些错误,这些错误在某些类别的程序中可能非常低,但在其他程序中可能很高,或随着时间的推移错误会逐渐增加,”Vasic说:“因此,我们计划进一步调查错误来源并设计程序,以确保错误不会超过一定的界限。”

Vasic和他的同事们也希望通过包含新的模块来扩展他们的编程语言,这些模块被定义为可以执行基本操作的化学反应集。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分