Design N orthogonal strand displacement gates.
See the accompanying design specification (PDF file). See also the LaTeX spec file that you can edit to make your own design specs in a standardized format.
This is a 1-step reaction. To design N orthogonal gates, there are 2 elementary step tubes per gate plus 1 global crosstalk tube.
Target test tubes:
Material: RNA
Temperature: 23 C
# Import Python NUPACK module
from nupack import *
# Define physical model
my_model = Model(material='rna', celsius=23)
# Set number of orthogonal systems
systems = 4
# Initialize working variables
crosstalk_targets = {}
crosstalk_excludes = []
step_tubes = []
# Loop over orthogonal systems
for i in range(systems):
# Define sequence domains
da = Domain('N10', name=['da', i])
db = Domain('N8', name=['db', i])
# Define strands containing these domains
sX = TargetStrand([da, db], name=['sX', i])
sA = TargetStrand([~db, ~da], name=['sA', i])
sB = TargetStrand([da], name=['sB', i]) # ~dgate is the reverse complement of dgate
sA_toe = TargetStrand([~db], name=['sA_toe', i])
# Define target complexes
cX = TargetComplex([sX], 'U18', name=['cX', i])
cAB = TargetComplex([sA, sB], 'U8D10+', name=['cAB', i])
cXA = TargetComplex([sX, sA], 'D18+', name=['cXA', i])
cB = TargetComplex([sB], 'U10', name=['cB', i])
cA_toe = TargetComplex([sA_toe], 'U8', name=['cA_toe', i])
# Define 2 elementary step tubes for each orthogonal system
step0_tube = TargetTube(on_targets={cX: 1e-08, cAB: 1e-08},
off_targets=SetSpec(max_size=2, exclude=[cXA]), name=['reactants', i])
step1_tube = TargetTube(on_targets={cXA: 1e-08, cB: 1e-08},
off_targets=SetSpec(max_size=2), name=['products', i])
step_tubes += [step0_tube, step1_tube]
# Store contributions to global crosstalk tube
crosstalk_targets.update({cX: 1e-08, cAB: 1e-08, cA_toe: 1e-08, cB:1e-8})
crosstalk_excludes += [cXA, [sX, sA_toe]]
# Define 1 global crosstalk tube
crosstalk_tube = TargetTube(on_targets=crosstalk_targets,
off_targets=SetSpec(max_size=2, exclude=crosstalk_excludes), name='crosstalk')
# Define tube set
my_tubes = step_tubes + [crosstalk_tube]
# Define defect weight of N for global crosstalk tube
# (maintain balance between elementary step tubes and global crosstalk tube as number of
# orthogonal systems increases)
my_weights = Weights(my_tubes)
my_weights[:,:,:,crosstalk_tube] *= systems
# Set a stop condition of 2%
# Set seed for random number generation to get a reproducible result for this demo
my_options = DesignOptions(f_stop=0.02, seed=93)
# Define and run the test tube design job
my_design = tube_design(tubes=my_tubes, defect_weights=my_weights, model=my_model, options=my_options)
my_results = my_design.run(trials=1)[0]
# Display the design results
my_results
Domain | Sequence |
---|---|
da[0] | CAUACUCCGA |
da[0]* | UCGGAGUAUG |
da[1] | CACAUGAUUC |
da[1]* | GAAUCAUGUG |
da[2] | GAACAAGCUA |
da[2]* | UAGCUUGUUC |
da[3] | CCUUUCUCUC |
da[3]* | GAGAGAAAGG |
db[0] | AACCCAAC |
db[0]* | GUUGGGUU |
db[1] | AGAAACGC |
db[1]* | GCGUUUCU |
db[2] | AACCACAG |
db[2]* | CUGUGGUU |
db[3] | CUUUCUAC |
db[3]* | GUAGAAAG |
Strand | Sequence |
---|---|
sA_toe[2] | CUGUGGUU |
sB[2] | GAACAAGCUA |
sX[1] | CACAUGAUUCAGAAACGC |
sX[2] | GAACAAGCUAAACCACAG |
sA[2] | CUGUGGUUUAGCUUGUUC |
sA_toe[1] | GCGUUUCU |
sA_toe[0] | GUUGGGUU |
sA_toe[3] | GUAGAAAG |
sX[0] | CAUACUCCGAAACCCAAC |
sA[3] | GUAGAAAGGAGAGAAAGG |
sB[0] | CAUACUCCGA |
sX[3] | CCUUUCUCUCCUUUCUAC |
sA[0] | GUUGGGUUUCGGAGUAUG |
sB[3] | CCUUUCUCUC |
sA[1] | GCGUUUCUGAAUCAUGUG |
sB[1] | CACAUGAUUC |
Objective type | Value |
---|---|
Weighted ensemble defect | 0.0187 |
Complex | Complex defect (nt) | Normalized complex defect |
---|---|---|
cX[3] | 0.00298 | 0.000165 |
cAB[2] | 0.689 | 0.0246 |
cXA[3] | 0.189 | 0.00526 |
cX[1] | 0.659 | 0.0366 |
cA_toe[1] | 0.0149 | 0.00186 |
cB[0] | 0.0309 | 0.00309 |
cXA[2] | 0.226 | 0.00629 |
cB[2] | 0.0699 | 0.00699 |
cAB[0] | 0.587 | 0.0209 |
cX[0] | 0.191 | 0.0106 |
cAB[3] | 0.139 | 0.00497 |
cA_toe[3] | 0.00258 | 0.000323 |
cXA[0] | 0.254 | 0.00707 |
cA_toe[2] | 0.0107 | 0.00134 |
cXA[1] | 0.191 | 0.00531 |
cA_toe[0] | 0.00142 | 0.000177 |
cX[2] | 0.383 | 0.0213 |
cB[3] | 0.00 | 0.00 |
cAB[1] | 0.191 | 0.00681 |
cB[1] | 0.0377 | 0.00377 |
Tube | Tube defect (M) | Normalized tube defect |
---|---|---|
reactants[0] | 8.52e-09 | 0.0185 |
products[0] | 2.85e-09 | 0.00620 |
reactants[1] | 1.53e-08 | 0.0333 |
products[1] | 2.32e-09 | 0.00504 |
reactants[2] | 1.57e-08 | 0.0341 |
products[2] | 3.06e-09 | 0.00666 |
reactants[3] | 1.81e-09 | 0.00394 |
products[3] | 1.89e-09 | 0.00412 |
crosstalk | 3.62e-08 | 0.0141 |
Tube | On-target complex | Structural defect (M) | Concentration defect (M) | Total defect (M) |
---|---|---|---|---|
reactants[0] | cX[0] | 1.91e-09 | 6.42e-13 | 1.91e-09 |
reactants[0] | cAB[0] | 5.85e-09 | 7.63e-10 | 6.61e-09 |
products[0] | cXA[0] | 2.54e-09 | 4.72e-14 | 2.54e-09 |
products[0] | cB[0] | 3.09e-10 | 1.20e-13 | 3.09e-10 |
reactants[1] | cX[1] | 6.54e-09 | 1.31e-09 | 7.85e-09 |
reactants[1] | cAB[1] | 1.87e-09 | 5.59e-09 | 7.46e-09 |
products[1] | cXA[1] | 1.91e-09 | 3.87e-14 | 1.91e-09 |
products[1] | cB[1] | 3.77e-10 | 2.90e-11 | 4.06e-10 |
reactants[2] | cX[2] | 3.83e-09 | 1.44e-10 | 3.97e-09 |
reactants[2] | cAB[2] | 6.76e-09 | 4.97e-09 | 1.17e-08 |
products[2] | cXA[2] | 2.26e-09 | 4.94e-14 | 2.26e-09 |
products[2] | cB[2] | 6.98e-10 | 9.88e-11 | 7.97e-10 |
reactants[3] | cX[3] | 2.98e-11 | 3.17e-16 | 2.98e-11 |
reactants[3] | cAB[3] | 1.39e-09 | 3.94e-10 | 1.78e-09 |
products[3] | cXA[3] | 1.89e-09 | 1.15e-13 | 1.89e-09 |
products[3] | cB[3] | 0.00 | 3.22e-14 | 3.22e-14 |
crosstalk | cX[0] | 1.89e-09 | 1.55e-09 | 3.44e-09 |
crosstalk | cAB[0] | 5.86e-09 | 2.84e-10 | 6.14e-09 |
crosstalk | cA_toe[0] | 1.41e-11 | 2.41e-10 | 2.55e-10 |
crosstalk | cB[0] | 3.09e-10 | 0.00 | 3.09e-10 |
crosstalk | cX[1] | 6.52e-09 | 1.74e-09 | 8.26e-09 |
crosstalk | cAB[1] | 1.91e-09 | 1.26e-10 | 2.03e-09 |
crosstalk | cA_toe[1] | 1.47e-10 | 6.18e-10 | 7.66e-10 |
crosstalk | cB[1] | 3.77e-10 | 3.48e-11 | 4.12e-10 |
crosstalk | cX[2] | 3.82e-09 | 6.33e-10 | 4.45e-09 |
crosstalk | cAB[2] | 6.88e-09 | 9.08e-11 | 6.97e-09 |
crosstalk | cA_toe[2] | 1.07e-10 | 1.11e-10 | 2.18e-10 |
crosstalk | cB[2] | 6.98e-10 | 1.62e-10 | 8.60e-10 |
crosstalk | cX[3] | 2.98e-11 | 5.26e-11 | 8.24e-11 |
crosstalk | cAB[3] | 1.39e-09 | 6.26e-13 | 1.39e-09 |
crosstalk | cA_toe[3] | 2.57e-11 | 2.40e-10 | 2.65e-10 |
crosstalk | cB[3] | 0.00 | 3.05e-10 | 3.05e-10 |
Tube | Complex | Concentration (M) | Target concentration (M) |
---|---|---|---|
reactants[0] | cX[0] | 1.00e-08 | 1.00e-08 |
reactants[0] | cAB[0] | 9.97e-09 | 1.00e-08 |
products[0] | cXA[0] | 1.00e-08 | 1.00e-08 |
products[0] | cB[0] | 1.00e-08 | 1.00e-08 |
reactants[1] | cX[1] | 9.93e-09 | 1.00e-08 |
reactants[1] | cAB[1] | 9.80e-09 | 1.00e-08 |
products[1] | cXA[1] | 1.00e-08 | 1.00e-08 |
products[1] | cB[1] | 1.00e-08 | 1.00e-08 |
reactants[2] | cX[2] | 9.99e-09 | 1.00e-08 |
reactants[2] | cAB[2] | 9.82e-09 | 1.00e-08 |
products[2] | cXA[2] | 1.00e-08 | 1.00e-08 |
products[2] | cB[2] | 9.99e-09 | 1.00e-08 |
reactants[3] | cX[3] | 1.00e-08 | 1.00e-08 |
reactants[3] | cAB[3] | 9.99e-09 | 1.00e-08 |
products[3] | cXA[3] | 1.00e-08 | 1.00e-08 |
products[3] | cB[3] | 1.00e-08 | 1.00e-08 |
crosstalk | cX[0] | 9.91e-09 | 1.00e-08 |
crosstalk | cAB[0] | 9.99e-09 | 1.00e-08 |
crosstalk | cA_toe[0] | 9.97e-09 | 1.00e-08 |
crosstalk | cB[0] | 1.00e-08 | 1.00e-08 |
crosstalk | cX[1] | 9.90e-09 | 1.00e-08 |
crosstalk | cAB[1] | 1.00e-08 | 1.00e-08 |
crosstalk | cA_toe[1] | 9.92e-09 | 1.00e-08 |
crosstalk | cB[1] | 1.00e-08 | 1.00e-08 |
crosstalk | cX[2] | 9.96e-09 | 1.00e-08 |
crosstalk | cAB[2] | 1.00e-08 | 1.00e-08 |
crosstalk | cA_toe[2] | 9.99e-09 | 1.00e-08 |
crosstalk | cB[2] | 9.98e-09 | 1.00e-08 |
crosstalk | cX[3] | 1.00e-08 | 1.00e-08 |
crosstalk | cAB[3] | 1.00e-08 | 1.00e-08 |
crosstalk | cA_toe[3] | 9.97e-09 | 1.00e-08 |
crosstalk | cB[3] | 9.97e-09 | 1.00e-08 |
Tube | Complex | Concentration (M) |
---|---|---|
reactants[1] | (sA[1]) | 2.00e-10 |
reactants[1] | cB[1] | 2.00e-10 |
reactants[2] | (sA[2]) | 1.77e-10 |
reactants[2] | cB[2] | 1.77e-10 |
products[3] | — | — |
reactants[0] | — | — |
reactants[3] | — | — |
products[2] | — | — |
products[1] | — | — |
products[0] | — | — |
crosstalk | — | — |