Writing and compiling code into biochemistry.
This paper presents a methodology for translating iterative arithmetic computation, specified as high-level programming constructs, into biochemical reactions. From an input/output specification, we generate biochemical reactions that produce output quantities of proteins as a function of input quantities performing operations such as addition, subtraction, and scalar multiplication. Iterative constructs such as "while" loops and "for" loops are implemented by transferring quantities between protein types, based on a clocking mechanism. Synthesis first is performed at a conceptual level, in terms of abstract biochemical reactions - a task analogous to high-level program compilation. Then the results are mapped onto specific biochemical reactions selected from libraries - a task analogous to machine language compilation. We demonstrate our approach through the compilation of a variety of standard iterative functions: multiplication, exponentiation, discrete logarithms, raising to a power, and linear transforms on time series. The designs are validated through transient stochastic simulation of the chemical kinetics. We are exploring DNA-based computation via strand displacement as a possible experimental chassis.
Shea
Adam
A
Department of Electrical and Computer Engineering, University of Minnesota, Minneapolis, Minnesota 55455, USA. shea0097@umn.edu
Fett
Brian
B
Riedel
Marc D
MD
Parhi
Keshab
K
D001671:Biochemistry / Q000706:statistics & numerical data*; D019295:Computational Biology; D003198:Computer Simulation; D039301:Computers, Molecular; D008956:Models, Chemical; D012984:Software; D058615:Synthetic Biology