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