Analysis of implementation networks¶
Besides the top-down interface of Nuskell to translate CRNs to DSD systems, there also exists a modular, bottom-up interface where users can analyze, simulate and verify handcrafted or alternatively designed DSD systems.
nuskell --readpil zhang2007_catalyst.pil --verify bisimulation < formal_crn.in
The option --readpil <file> tells Nuskell to load domain-level
specifications from a text file, as opposed to automated design via translation
schemes. The input format is a variation of the pepper internal language
(PIL) kernel notation which allows the specification of constant or
initial concentrations in M, mM, uM, nM, pM.
# Use '#' for comments.
# Domains
length d1 = 10
length d2a = 6
# Complexes # Concentratios
C = d4 d5 @initial 2 nM
OB = d1 d2a d2b d2c @constant 100 nM
The concentration specification (e.g. @initial 10 nM) is optional, but
relevant for both verification and simulation of DSD systems. Nuskell’s
verification has to be provided with the information of which species correspond
to signal and fuel species.
A complex with a corresponding name in the formal CRN, is always
interpreted as a signal species, independent of whether or not constant or
initial concentrations have been specified. Species that are not present in
formal CRN default to fuel species if: (i) they have no concentration specified,
or (ii) their concentration is higher than 0. Variant (i) allows a compact
DSD system specification, which is equivalent to the format of a PIL file when
using option --pilfile, and compatible with input for the
peppercornenumerator.
Variant (ii) enables us to define named intermediate complexes as those which
are explicitly initially not present, i.e are followed by the @initial 0
nM tag. Note, do not use @constant 0 nM to specify an intermediate
species, as the behavior of Nuskell is currently undefined and might change in
future versions.
The following PIL file shows a complete DSD system specification, including
initial concentrations for signal species, formal species and all enumerated
intermediate species:
#
# Zhang, Turberfield, Yurke, Winfree (2007)
# "Engineering Entropy-Driven Reactions and Networks Catalyzed by DNA"
#
# A DSD implementation of the catalyst reaction (Figure 1A + 1D)
# Note: Domain 2 is actually contains two toeholds (2a, 2b)
#
# CRN:
# C + S -> C + OB
# OB -> ROX
#
# verify:
# echo "C + S -> C + OB; OB -> ROX" | nuskell --readpil zhang2007_catalyst.pil --verify pathway bisimulation
# => not pathway equivalent
# => bisimulation equivalent
# echo "C -> C + OB; OB -> ROX" | nuskell --readpil zhang2007_catalyst.pil --verify pathway bisimulation
# => not pathway equivalent
# => bisimulation equivalent
#
# Coded by Stefan Badelt (badelt@caltech.edu)
# Domains
length d1 = 10
length d2a = 6
length d2b = 6
length d2c = 12
length d3 = 4
length d4 = 16
length d5 = 6
length d6 = 16
# Species
C = d4 d5 @initial 2 nM # defaults to fuel
OB = d1 d2a d2b d2c @initial 0 nM # defaults to intermediate
ROX = d1 d2a @initial 0 nM # defaults to intermediate
S = d1 d2a( d2b( d2c( + d6 d3( d4( + d5* ) ) ) ) ) @initial 100 nM # defaults to fuel
F = d2a d2b d2c d3 d4 @initial 100 nM # defaults to fuel
OR = d1( d2a( + d2b* ) ) @initial 100 nM # defaults to fuel
SB = d6 d3 d4 @initial 0 nM # defaults to intermediate