Nucleic acid strand displacement compiler
Python TypeScript
Switch branches/tags
Nothing to show

Nuskell: Nucleic acid strand displacement compiler

Nuskell compiles formal chemical reaction networks (CRNs) into domain-level strand displacement (DSD) systems. It provides a library of translation schemes (i.e. variations of CRN-to-DSD translations) to exploit the diversity of DSD circuits implementing the same CRN.

In order to proof/disproof the correctness of a particular translation, Nuskell includes the domain-level reaction enumerator Peppercorn Grun et al. (2014) to find intended and unintended reaction pathways and then provides two notions of stochastic trajectory-type CRN equivalence: bisimulation Johnson et al. (2016) and pathway decomposition Shin et al. (2014).

The domain-level reactions and their approximate rates can be exported in form of an ODE system to simulate the dynamics of the compiled DSD network.


Implement a formal CRN using a particular translation-scheme:

  $ echo "A + B <=> X + Y; X -> A" | nuskell --ts scheme.ts --verify modular-bisimulation

for options see:

  $ nuskell --help

Translation Schemes

Detailed information about translation schemes can be found in the /schemes directory.


  $ python install


  $ python install --user


A preview of the documentation for release v1.0 can be found at: documentation.




  • Seung Woo Shin
  • Qing Dong
  • Robert Johnson
  • Stefan Badelt
  • Erik Winfree




Stefan Badelt, Seung Woo Shin, Robert F. Johnson, Qing Dong, Chris Thachuk, and Erik Winfree (2017) "A General-Purpose CRN-to-DSD Compiler with Formal Verification, Optimization, and Simulation Capabilities" [Badelt et al. (2017)].