Programming DNA circuits
Programming DNA circuits

Molecular devices made of nucleic acids show great potential for applications ranging from bio-sensing to intelligent nanomedicine. They allow computation to be performed at the molecular scale, while also interfacing directly with the molecular components of living systems. They form structures that are stable inside cells, and their interactions can be precisely controlled by modifying their nucleotide sequences.

However, designing correct and robust nucleic acid devices is a major challenge, due to high system complexity and the potential for unwanted interference between molecules in the system. To help address these challenges we have developed the DNA Strand Displacement tool (DSD), a programming language for designing and simulating computational devices made of DNA. The language uses DNA strand displacement as the main computational mechanism, which allows devices to be designed solely in terms of nucleic acids, without the need for additional components. DSD is a first step towards the design of modelling and simulation tools for DNA strand displacement, which complements the emergence of novel implementation strategies for DNA computing.

Publications

Download

Acknowledgements

  • DSD was developed by Matthew Lakin, Filippo Polo, Simon Youssef, Kathryn Gray, Rasmus Petersen and Andrew Phillips at Microsoft Research.
  • Luca Cardelli assisted with the design of the DSD language and extensive testing of DSD. 
  • Neil Dalchau assisted with the development of an ODE solver for DSD.
  • Erik Winfree and his group have provided valuable feedback on DSD, together with Georg Seelig and his group. 
  • The core DSD language was developed in F#.
  • DSD uses Dynamic Data Display for visualising simulation plots.
  • DSD uses Microsoft Automatic Graph Layout for visualising networks.

Selected Publications using DSD