# Multi-tube design example for orthogonal systems (simple)¶

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:

• (Step 0: Reactants) x N orthogonal systems
• (Step 1: Products) x N orthogonal systems
• Global crosstalk

Material: RNA
Temperature: 23 C

In [1]:
# Import Python NUPACK module
from nupack import *

In [2]:
# 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

Out[2]:
Domain 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 results:
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 function:
Objective type Value
Weighted ensemble defect 0.0187
Ensemble defect: 0.0140

On-target complex defects:
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 defects:
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
Complex contributions to tube defects:
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
On-target complex concentrations:
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
Significant off-target complex concentrations (≥ 1% max complex concentration in tube):
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