Programming Languages for Molecular and Genetic Devices
Computational nucleic acid devices show great potential for enabling a broad range of biotechnology applications, including smart probes for molecular biology research, in vitro assembly of complex compounds, high-precision in vitro disease diagnosis and, ultimately, computational therapeutics inside living cells. This diversity of applications is supported by a range of implementation strategies, including nucleic acid strand displacement, localisation to substrates, and the use of enzymes with polymerase, nickase and exonuclease functionality. However, existing computational design tools are unable to account for these different strategies in a unified manner. This talk presents a programming language that allows a broad range of computational nucleic acid systems to be designed and analysed. We also demonstrate how similar approaches can be incorporated into a programming language for designing genetic devices that are inserted into cells to reprogram their behaviour. The language is used to characterise the genetic components for programming populations of cells that communicate and self-organise into spatial patterns. More generally, we anticipate that languages and software for programming molecular and genetic devices will accelerate the development of future biotechnology applications.