1. 程式人生 > >新程式語言CRN++誕生:用來程式設計化學反應

新程式語言CRN++誕生:用來程式設計化學反應

德克薩斯大學奧斯汀分校的研究人員創造了一種新的程式語言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++進行了評估,並證明了其在一系列離散和實值計算演算法上的可行性。新語言還可以輕鬆擴充套件,以支援新的命令或實現,使其成為開發更高階的分子程式的理想基礎。

nainaitea.com

“從CRN++翻譯成化學的程式包含一些錯誤,這些錯誤在某些類別的程式中可能非常低,但在其他程式中可能很高,或隨著時間的推移錯誤會逐漸增加,”Vasic說:“因此,我們計劃進一步調查錯誤來源並設計程式,以確保錯誤不會超過一定的界限。”

 

Vasic和他的同事們也希望通過包含新的模組來擴充套件他們的程式語言,這些模組被定義為可以執行基本操作的化學反應集。