{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Multi-tube design example (advanced) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Design small conditional RNAs (scRNAs) for conditional Dicer substrate formation (Hochrein et al., J Am Chem Soc, 2013; see Figure 3). \n",
"\n",
"See the accompanying design specification (PDF files). See also the LaTeX spec file that you can edit to make your own design specs in a standardized format. \n",
"\n",
"This is a 2-step reaction. To design one scRNA system, there are 3 elementary step tubes plus 1 global crosstalk tube. \n",
"\n",
"Target test tubes: \n",
"- Step 0: Reactants \n",
"- Step 1: Intermediates\n",
"- Step 2: Products\n",
"- Global crosstalk \n",
"\n",
"Material: RNA \n",
"Temperature: 23 C"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# Import Python NUPACK module\n",
"from nupack import *"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"Domain results:\n",
"
\n",
" \n",
" \n",
" | Domain | \n",
" Sequence | \n",
"
\n",
" \n",
" \n",
" \n",
" | a | \n",
" AUGAGG | \n",
"
\n",
" \n",
" | a* | \n",
" CCUCAU | \n",
"
\n",
" \n",
" | b | \n",
" AGAA | \n",
"
\n",
" \n",
" | b* | \n",
" UUCU | \n",
"
\n",
" \n",
" | c | \n",
" GAUGGAGC | \n",
"
\n",
" \n",
" | c* | \n",
" GCUCCAUC | \n",
"
\n",
" \n",
" | s | \n",
" AACAC | \n",
"
\n",
" \n",
" | s* | \n",
" GUGUU | \n",
"
\n",
" \n",
" | w | \n",
" CG | \n",
"
\n",
" \n",
" | w* | \n",
" CG | \n",
"
\n",
" \n",
" | x | \n",
" AGGAGGAGAUGA | \n",
"
\n",
" \n",
" | x* | \n",
" UCAUCUCCUCCU | \n",
"
\n",
" \n",
" | y | \n",
" GAGA | \n",
"
\n",
" \n",
" | y* | \n",
" UCUC | \n",
"
\n",
" \n",
" | z | \n",
" GCU | \n",
"
\n",
" \n",
" | z* | \n",
" AGC | \n",
"
\n",
" \n",
"
Strand results:\n",
"\n",
" \n",
" \n",
" | Strand | \n",
" Sequence | \n",
"
\n",
" \n",
" \n",
" \n",
" | sC_out | \n",
" CGAGGAGGAGAUGAGAGAAACAC | \n",
"
\n",
" \n",
" | sC | \n",
" CGAGGAGGAGAUGAGAGAAACACCCUCAUAGCUCUCUCAUCUCCUCCUCG | \n",
"
\n",
" \n",
" | sC_loop | \n",
" AACACCCUCAUAGC | \n",
"
\n",
" \n",
" | sA_toe | \n",
" GCUCCAUC | \n",
"
\n",
" \n",
" | sB | \n",
" AGGAGGAGAUGAGAGAGCUAUGAGGAGAA | \n",
"
\n",
" \n",
" | sX | \n",
" AUGAGGAGAAGAUGGAGC | \n",
"
\n",
" \n",
" | sA | \n",
" GCUCCAUCUUCUCCUCAUAGCUCUC | \n",
"
\n",
" \n",
"
Objective function:\n",
" \n",
" \n",
" | Objective type | \n",
" Value | \n",
"
\n",
" \n",
" \n",
" \n",
" | Weighted ensemble defect | \n",
" 0.0532 | \n",
"
\n",
" \n",
"
Ensemble defect: 0.0532
On-target complex defects:\n",
" \n",
" \n",
" | Complex | \n",
" Complex defect (nt) | \n",
" Normalized complex defect | \n",
"
\n",
" \n",
" \n",
" \n",
" | C | \n",
" 1.18 | \n",
" 0.0237 | \n",
"
\n",
" \n",
" | XA | \n",
" 0.788 | \n",
" 0.0183 | \n",
"
\n",
" \n",
" | AB | \n",
" 1.32 | \n",
" 0.0245 | \n",
"
\n",
" \n",
" | BC | \n",
" 1.81 | \n",
" 0.0229 | \n",
"
\n",
" \n",
" | A_toe | \n",
" 0.00620 | \n",
" 0.000775 | \n",
"
\n",
" \n",
" | B | \n",
" 2.16 | \n",
" 0.0746 | \n",
"
\n",
" \n",
" | X | \n",
" 0.154 | \n",
" 0.00853 | \n",
"
\n",
" \n",
" | C_out | \n",
" 0.639 | \n",
" 0.0278 | \n",
"
\n",
" \n",
" | C_loop | \n",
" 0.110 | \n",
" 0.00788 | \n",
"
\n",
" \n",
"
Tube defects:\n",
" \n",
" \n",
" | Tube | \n",
" Tube defect (M) | \n",
" Normalized tube defect | \n",
"
\n",
" \n",
" \n",
" \n",
" | Step_0 | \n",
" 2.67e-08 | \n",
" 0.0219 | \n",
"
\n",
" \n",
" | Step_1 | \n",
" 8.14e-08 | \n",
" 0.113 | \n",
"
\n",
" \n",
" | Step_2 | \n",
" 1.97e-08 | \n",
" 0.0249 | \n",
"
\n",
" \n",
" | Crosstalk | \n",
" 1.04e-07 | \n",
" 0.0529 | \n",
"
\n",
" \n",
"
Complex contributions to tube defects:\n",
" \n",
" \n",
" | Tube | \n",
" On-target complex | \n",
" Structural defect (M) | \n",
" Concentration defect (M) | \n",
" Total defect (M) | \n",
"
\n",
" \n",
" \n",
" \n",
" | Step_0 | \n",
" C | \n",
" 1.18e-08 | \n",
" 3.88e-11 | \n",
" 1.19e-08 | \n",
"
\n",
" \n",
" | Step_0 | \n",
" X | \n",
" 1.54e-09 | \n",
" 9.12e-15 | \n",
" 1.54e-09 | \n",
"
\n",
" \n",
" | Step_0 | \n",
" AB | \n",
" 1.32e-08 | \n",
" 4.05e-11 | \n",
" 1.33e-08 | \n",
"
\n",
" \n",
" | Step_1 | \n",
" XA | \n",
" 7.29e-09 | \n",
" 3.23e-08 | \n",
" 3.96e-08 | \n",
"
\n",
" \n",
" | Step_1 | \n",
" B | \n",
" 2.00e-08 | \n",
" 2.18e-08 | \n",
" 4.18e-08 | \n",
"
\n",
" \n",
" | Step_2 | \n",
" BC | \n",
" 1.80e-08 | \n",
" 1.67e-09 | \n",
" 1.97e-08 | \n",
"
\n",
" \n",
" | Crosstalk | \n",
" AB | \n",
" 1.32e-08 | \n",
" 2.28e-10 | \n",
" 1.34e-08 | \n",
"
\n",
" \n",
" | Crosstalk | \n",
" C | \n",
" 1.15e-08 | \n",
" 1.46e-08 | \n",
" 2.61e-08 | \n",
"
\n",
" \n",
" | Crosstalk | \n",
" X | \n",
" 1.46e-09 | \n",
" 8.54e-09 | \n",
" 1.00e-08 | \n",
"
\n",
" \n",
" | Crosstalk | \n",
" B | \n",
" 2.14e-08 | \n",
" 3.43e-09 | \n",
" 2.48e-08 | \n",
"
\n",
" \n",
" | Crosstalk | \n",
" C_out | \n",
" 6.06e-09 | \n",
" 1.19e-08 | \n",
" 1.79e-08 | \n",
"
\n",
" \n",
" | Crosstalk | \n",
" C_loop | \n",
" 1.03e-09 | \n",
" 8.67e-09 | \n",
" 9.70e-09 | \n",
"
\n",
" \n",
" | Crosstalk | \n",
" A_toe | \n",
" 6.08e-11 | \n",
" 1.57e-09 | \n",
" 1.64e-09 | \n",
"
\n",
" \n",
"
On-target complex concentrations:\n",
"\n",
" \n",
" \n",
" | Tube | \n",
" Complex | \n",
" Concentration (M) | \n",
" Target concentration (M) | \n",
"
\n",
" \n",
" \n",
" \n",
" | Step_0 | \n",
" C | \n",
" 1.00e-08 | \n",
" 1.00e-08 | \n",
"
\n",
" \n",
" | Step_0 | \n",
" X | \n",
" 1.00e-08 | \n",
" 1.00e-08 | \n",
"
\n",
" \n",
" | Step_0 | \n",
" AB | \n",
" 1.00e-08 | \n",
" 1.00e-08 | \n",
"
\n",
" \n",
" | Step_1 | \n",
" XA | \n",
" 9.25e-09 | \n",
" 1.00e-08 | \n",
"
\n",
" \n",
" | Step_1 | \n",
" B | \n",
" 9.25e-09 | \n",
" 1.00e-08 | \n",
"
\n",
" \n",
" | Step_2 | \n",
" BC | \n",
" 9.98e-09 | \n",
" 1.00e-08 | \n",
"
\n",
" \n",
" | Crosstalk | \n",
" AB | \n",
" 1.00e-08 | \n",
" 1.00e-08 | \n",
"
\n",
" \n",
" | Crosstalk | \n",
" C | \n",
" 9.71e-09 | \n",
" 1.00e-08 | \n",
"
\n",
" \n",
" | Crosstalk | \n",
" X | \n",
" 9.53e-09 | \n",
" 1.00e-08 | \n",
"
\n",
" \n",
" | Crosstalk | \n",
" B | \n",
" 9.88e-09 | \n",
" 1.00e-08 | \n",
"
\n",
" \n",
" | Crosstalk | \n",
" C_out | \n",
" 9.48e-09 | \n",
" 1.00e-08 | \n",
"
\n",
" \n",
" | Crosstalk | \n",
" C_loop | \n",
" 9.38e-09 | \n",
" 1.00e-08 | \n",
"
\n",
" \n",
" | Crosstalk | \n",
" A_toe | \n",
" 9.80e-09 | \n",
" 1.00e-08 | \n",
"
\n",
" \n",
"
\n",
"\n",
"Significant off-target complex concentrations (≥ 1% max complex concentration in tube):\n",
"\n",
" \n",
" \n",
" | Tube | \n",
" Complex | \n",
" Concentration (M) | \n",
"
\n",
" \n",
" \n",
" \n",
" | Step_1 | \n",
" AB | \n",
" 7.51e-10 | \n",
"
\n",
" \n",
" | Step_1 | \n",
" X | \n",
" 7.51e-10 | \n",
"
\n",
" \n",
" | Crosstalk | \n",
" (sA_toe+sB) | \n",
" 1.22e-10 | \n",
"
\n",
" \n",
" | Crosstalk | \n",
" (sC_out+sC) | \n",
" 2.92e-10 | \n",
"
\n",
" \n",
" | Crosstalk | \n",
" (sC_loop+sC_out) | \n",
" 1.45e-10 | \n",
"
\n",
" \n",
" | Crosstalk | \n",
" (sC_loop+sX) | \n",
" 4.74e-10 | \n",
"
\n",
" \n",
" | Step_2 | \n",
" — | \n",
" — | \n",
"
\n",
" \n",
" | Step_0 | \n",
" — | \n",
" — | \n",
"
\n",
" \n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Define physical model\n",
"my_model = Model(material='rna', celsius=37)\n",
"\n",
"# Define sequence domains\n",
"a = Domain('N6', name='a')\n",
"c = Domain('N8', name='c')\n",
"b = Domain('N4', name='b')\n",
"w = Domain('N2', name='w')\n",
"y = Domain('N4', name='y')\n",
"x = Domain('N12', name='x')\n",
"z = Domain('N3', name='z')\n",
"s = Domain('N5', name='s')\n",
"\n",
"# Define strands containing these domains\n",
"sC_out = TargetStrand([w, x, y, s], name='sC_out')\n",
"sA = TargetStrand([~c, ~b, ~a, ~z, ~y], name='sA')\n",
"sA_toe = TargetStrand([~c], name='sA_toe')\n",
"sC = TargetStrand([w, x, y, s, ~a, ~z, ~y, ~x, ~w], name='sC')\n",
"sC_loop = TargetStrand([s, ~a, ~z], name='sC_loop')\n",
"sB = TargetStrand([x, y, z, a, b], name='sB')\n",
"sX = TargetStrand([a, b, c], name='sX')\n",
"\n",
"# Define target complexes\n",
"C = TargetComplex([sC], 'D2 D12 D4( U5 U6 U3 )', name='C')\n",
"B = TargetComplex([sB], 'U12 U4 U3 U6 U4', name='B')\n",
"C_loop = TargetComplex([sC_loop], 'U14', name='C_loop')\n",
"AB = TargetComplex([sA, sB], 'U8 D4 D6 D3 D4(+ U12)', name='AB')\n",
"X = TargetComplex([sX], 'U18', name='X')\n",
"XA = TargetComplex([sX, sA], 'D6 D4 D8(+) U3 U4', name='XA')\n",
"C_out = TargetComplex([sC_out], 'U23', name='C_out')\n",
"BC = TargetComplex([sB, sC], 'D12 D4 D3 D6 (U4 + U2 U12 U4 U5) U2', name='BC')\n",
"A_toe = TargetComplex([sA_toe], 'U8', name='A_toe')\n",
"\n",
"# Define elementary step tubes\n",
"Step_0 = TargetTube(on_targets={C: 1e-08, X: 1e-08, AB: 1e-08}, \n",
" off_targets=SetSpec(max_size=2, include=[[sA], BC], exclude=[XA]), name='Step_0')\n",
"Step_1 = TargetTube(on_targets={XA: 1e-08, B: 1e-08}, \n",
" off_targets=SetSpec(max_size=2, include=[X, AB]), name='Step_1')\n",
"Step_2 = TargetTube(on_targets={BC: 1e-08}, \n",
" off_targets=SetSpec(max_size=2, include=[B, C]), name='Step_2')\n",
"\n",
"# Define global crosstalk tube\n",
"Crosstalk = TargetTube(on_targets={\n",
" AB: 1e-08,\n",
" C: 1e-08,\n",
" X: 1e-08,\n",
" B: 1e-08,\n",
" C_out: 1e-08,\n",
" C_loop: 1e-08,\n",
" A_toe: 1e-08,\n",
"}, off_targets=SetSpec(max_size=2, exclude=[XA, BC, [sX, sA_toe], [sB, sC_loop]]), name='Crosstalk')\n",
"\n",
"# Define hard sequence constraints\n",
"\n",
"# GC content constraints\n",
"hard = [\n",
" Similarity(d, 'S'*d.nt(), limits=(0.45, 0.55)) \n",
" for d in [sC_out, sA, sC, sC_loop, sB, sX]\n",
"]\n",
"\n",
"# Biological sequences \n",
"# Note: biological sequence constraints often require a higher stop condition\n",
"tpm3 = 'GAACACTATTAGCTATTTGTAGTACTCTAAAGAGGACTGCAGAACGCATCGCAGTAGTGGTGAAAAGCCGTGCGTGCGCGTGAAACATCTGATCCTCACGTTACTTCCACTCGCTCTGCGTTTGACTTGTTGGCGGGGCGTTGGTGCCTTGGACTTTTTTTTCCTCCTTCTCTTCTTCGCGGCTCGGTCCACTACGCTGCTCGAGAGGAATCTGCTTTATTCGACCACACTACTCCTAAAGTAACACATTAAAATGGCCGGATCAAACAGCATCGATGCAGTTAAGAGAAAAATCAAAGTTTTACAACAGCAAGCAGATGAGGCAGAAGAAAGAGCCGAGATTTTGCAGAGACAGGTCGAGGAGGAGAAGCGTGCCAGGGAGCAGGCTGAGGCAGAGGTGGCTTCTCTGAACAGGCGTATCCAGCTGGTTGAGGAGGAGTTGGATCGTGCTCAGGAGAGACTGGCCACAGCCCTGCAAAAGCTGGAGGAAGCCGAGAAGGCCGCAGATGAGAGCGAGAGAGGGATGAAGGTGATTGAGAACAGGGCTCTGAAGGATGAGGAGAAGATGGAGCTGCAGGAGATCCAGCTTAAGGAGGCCAA'\n",
"desm = 'CATTTACACAGCGTACAAACCCAACAGGCCCAGTCATGAGCACGAAATATTCAGCCTCCGCCGAGTCGGCGTCCTCTTACCGCCGCACCTTTGGCTCAGGTTTGGGCTCCTCTATTTTCGCCGGCCACGGTTCCTCAGGTTCCTCTGGCTCCTCAAGACTGACCTCCAGAGTTTACGAGGTGACCAAGAGCTCCGCTTCTCCCCATTTTTCCAGCCACCGTGCGTCCGGCTCTTTCGGAGGTGGCTCGGTGGTCCGTTCCTACGCTGGCCTTGGTGAGAAGCTGGATTTCAATCTGGCTGATGCCATAAACCAGGACTTCCTCAACACGCGTACTAATGAGAAGGCCGAGCTCCAGCACCTCAATGACCGCTTCGCCAGCTACATCGAGAAGGTGCGCTTCCTCGAGCAGCAGAACTCTGCCCTGACGGTGGAGATTGAGCGTCTGCGGGGTCGCGAGCCCACCCGTATTGCAGAGCTGTACGAGGAGGAGATGAGAGAGCTGCGCGGACAGGTGGAGGCACTGACCAATCAGAGATCCCGTGTGGAGATCGAGAGGGACAACCTAGTCGATGACCTACAGAAACTAAAGCTCAGACTTC'\n",
"\n",
"# Window constraints on detection target 'a-b-c' and silencing target 'w-x-y-z'\n",
"hard += [Window([a, b, c], [tpm3])] \n",
"hard += [Window([w, x, y, z], [desm])] \n",
"\n",
"# Diversity constraint\n",
"hard += [Diversity(word=4, types=2)]\n",
"\n",
"# Set a stop condition of 8% \n",
"# Set seed for random number generation to get a reproducible result for this demo\n",
"my_options = DesignOptions(f_stop=0.08, seed=93)\n",
"\n",
"# Define and run the test tube design job\n",
"des = tube_design(tubes=[Step_0, Step_1, Step_2, Crosstalk], model=my_model, hard_constraints=hard, options=my_options)\n",
"result = des.run(trials=1)[0]\n",
"\n",
"# Display the result\n",
"result"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.8"
}
},
"nbformat": 4,
"nbformat_minor": 4
}