{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Test tube analysis example\n",
"\n",
"Analyze a test tube containing 2 strand species that interact to form all complex species of up to 4 strands. \n",
"\n",
"Strand a: 5e-6 M \n",
"Strand b: 5e-6 M\n",
"\n",
"Strands a and b are intended to form a bipedal walker complex '(a+b)' with a duplex torso and single-stranded legs (Shin and Pierce, J Am Chem Soc, 2004). \n",
"\n",
"Material: DNA \n",
"Temperature: 23 C \n",
"\n",
"Calculate the partition function, equilibrium pair probability matrix, MFE proxy structure(s), and equilibrium concentration for each complex species in the tube, as well as the ensemble pair fractions for the tube ensemble. "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# Import NUPACK Python module\n",
"from nupack import *"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"Complex results:
\n",
" \n",
" \n",
" Complex \n",
" Pfunc \n",
" ΔG (kcal/mol) \n",
" MFE (kcal/mol) \n",
" \n",
" \n",
" \n",
" \n",
" (a) \n",
" 4.8748e+4 \n",
" -6.353 \n",
" -5.141 \n",
" \n",
" \n",
" (b) \n",
" 8.7537e+6 \n",
" -9.407 \n",
" -8.529 \n",
" \n",
" \n",
" (a+a) \n",
" 9.7092e+16 \n",
" -23.019 \n",
" -22.044 \n",
" \n",
" \n",
" (a+b) \n",
" 4.1688e+30 \n",
" -41.492 \n",
" -38.547 \n",
" \n",
" \n",
" (b+b) \n",
" 2.0381e+18 \n",
" -24.810 \n",
" -22.722 \n",
" \n",
" \n",
" (a+a+a) \n",
" 2.5957e+27 \n",
" -37.148 \n",
" -34.926 \n",
" \n",
" \n",
" (a+a+b) \n",
" 1.2658e+43 \n",
" -58.407 \n",
" -56.167 \n",
" \n",
" \n",
" (a+b+b) \n",
" 8.4192e+42 \n",
" -58.167 \n",
" -53.124 \n",
" \n",
" \n",
" (b+b+b) \n",
" 1.9407e+30 \n",
" -41.042 \n",
" -36.918 \n",
" \n",
" \n",
" (a+a+a+a) \n",
" 5.9410e+39 \n",
" -53.896 \n",
" -51.829 \n",
" \n",
" \n",
" (a+a+a+b) \n",
" 3.9996e+53 \n",
" -72.635 \n",
" -69.048 \n",
" \n",
" \n",
" (a+a+b+b) \n",
" 4.4989e+63 \n",
" -86.255 \n",
" -79.755 \n",
" \n",
" \n",
" (a+b+a+b) \n",
" 4.1249e+68 \n",
" -92.979 \n",
" -90.290 \n",
" \n",
" \n",
" (a+b+b+b) \n",
" 1.4056e+55 \n",
" -74.729 \n",
" -68.553 \n",
" \n",
" \n",
" (b+b+b+b) \n",
" 2.9430e+42 \n",
" -57.548 \n",
" -52.288 \n",
" \n",
" \n",
"
Concentration results: \n",
" \n",
" \n",
" Complex \n",
" Tube t1 (M) \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" (a+b) \n",
" 1.901e-06 \n",
" \n",
" \n",
" \n",
" (a+b+a+b) \n",
" 1.549e-06 \n",
" \n",
" \n",
" \n",
" (a+a+b+b) \n",
" 1.690e-11 \n",
" \n",
" \n",
" \n",
" (b) \n",
" 5.793e-12 \n",
" \n",
" \n",
" \n",
" (a+a+b) \n",
" 3.978e-12 \n",
" \n",
" \n",
" \n",
" (a) \n",
" 1.860e-12 \n",
" \n",
" \n",
" \n",
" (a+b+b) \n",
" 4.589e-14 \n",
" \n",
" \n",
" \n",
" (a+a) \n",
" 2.553e-18 \n",
" \n",
" \n",
" \n",
" (a+a+a+b) \n",
" 8.663e-20 \n",
" \n",
" \n",
" \n",
" (b+b) \n",
" 1.612e-20 \n",
" \n",
" \n",
" \n",
" (a+b+b+b) \n",
" 9.155e-22 \n",
" \n",
" \n",
" \n",
" (a+a+a) \n",
" 4.705e-26 \n",
" \n",
" \n",
" \n",
" (b+b+b) \n",
" 1.834e-28 \n",
" \n",
" \n",
" \n",
" (a+a+a+a) \n",
" 7.421e-32 \n",
" \n",
" \n",
" \n",
" (b+b+b+b) \n",
" 3.324e-36 \n",
" \n",
" \n",
" \n",
"
"
],
"text/plain": [
"Result(tubes={Tube({: 5e-06, : 5e-06}, complexes=[, , , , , , , , , , , , , , ], name='Tube t1'): }, complexes={: nupack.analysis.ComplexResult({model: Model('stacking', 'dna04.json', T=296.15 K), pfunc: 3.999565962E+53, free_energy: -72.63459952709994, mfe_stack: -66.72545623779297, pairs: [[0.2671 0.0000 0.0000 ... 0.0000 0.0001 0.7328]\n",
" [0.0000 0.0039 0.0000 ... 0.0000 0.9956 0.0002]\n",
" [0.0000 0.0000 0.0004 ... 0.9992 0.0000 0.0000]\n",
" ...\n",
" [0.0000 0.0000 0.9992 ... 0.0003 0.0000 0.0000]\n",
" [0.0001 0.9956 0.0000 ... 0.0000 0.0039 0.0000]\n",
" [0.7328 0.0002 0.0000 ... 0.0000 0.0000 0.2668]], mfe: [StructureEnergy(Structure('((((((((((((((((((((..(((((((.(....).)))...+.((.(....).))...((((......(((.(....).)))...+.((.(....).))...))))..))))(((.(....).)))...+..........(.(....).)...))))))))))))))))))))'), energy=-69.04837036132812, stack_energy=-66.72545623779297)], subopt: [StructureEnergy(Structure('((((((((((((((((((((..(((((((.(....).)))...+.((.(....).))...((((......(((.(....).)))...+.((.(....).))...))))..))))(((.(....).)))...+..........(.(....).)...))))))))))))))))))))'), energy=-69.04837036132812, stack_energy=-66.72545623779297)]}), : nupack.analysis.ComplexResult({model: Model('stacking', 'dna04.json', T=296.15 K), pfunc: 4.168803923E+30, free_energy: -41.49232746555886, mfe_stack: -38.32350540161133, pairs: [[0.2668 0.0000 0.0000 ... 0.0000 0.0001 0.7331]\n",
" [0.0000 0.0038 0.0000 ... 0.0000 0.9961 0.0001]\n",
" [0.0000 0.0000 0.0003 ... 0.9997 0.0000 0.0000]\n",
" ...\n",
" [0.0000 0.0000 0.9997 ... 0.0003 0.0000 0.0000]\n",
" [0.0001 0.9961 0.0000 ... 0.0000 0.0038 0.0000]\n",
" [0.7331 0.0001 0.0000 ... 0.0000 0.0000 0.2668]], mfe: [StructureEnergy(Structure('((((((((((((((((((((((.((.....)))).........+..........(.(....).)...))))))))))))))))))))'), energy=-38.547306060791016, stack_energy=-38.32350540161133)], subopt: [StructureEnergy(Structure('((((((((((((((((((((((.((.....)))).........+..........(.(....).)...))))))))))))))))))))'), energy=-38.547306060791016, stack_energy=-38.32350540161133)]}), : nupack.analysis.ComplexResult({model: Model('stacking', 'dna04.json', T=296.15 K), pfunc: 1.940706802E+30, free_energy: -41.0423736411166, mfe_stack: -35.10665512084961, pairs: [[0.9812 0.0000 0.0000 ... 0.0000 0.0079 0.0030]\n",
" [0.0000 0.7951 0.0000 ... 0.0000 0.0000 0.0000]\n",
" [0.0000 0.0000 0.4116 ... 0.2230 0.0000 0.0000]\n",
" ...\n",
" [0.0000 0.0000 0.2230 ... 0.0202 0.0000 0.0000]\n",
" [0.0079 0.0000 0.0000 ... 0.0000 0.2451 0.0000]\n",
" [0.0030 0.0000 0.0000 ... 0.0000 0.0000 0.9517]], mfe: [StructureEnergy(Structure('.........(((((...(((..(.....)..)))...(((((.+.........)))))...(((..(((((.(..(((.(.(((((.+.........))))).).)))..))))).)..)))...))))).'), energy=-36.918025970458984, stack_energy=-35.10665512084961), StructureEnergy(Structure('.........(((((...(((..(((((.(..(((.(.(((((.+.........))))).).)))..))))).)..)))...(((((.+.........)))))...(((..(.....)..)))...))))).'), energy=-36.91802978515625, stack_energy=-35.10665512084961), StructureEnergy(Structure('.........(((((.(.(((..(((((.(..(((...(((((.+.........)))))...(((..(.....)..)))...(((((.+.........)))))...)))..))))).)..))).).))))).'), energy=-36.91802978515625, stack_energy=-35.10664749145508)], subopt: [StructureEnergy(Structure('.........(((((...(((..(.....)..)))...(((((.+.........)))))...(((..(((((.(..(((.(.(((((.+.........))))).).)))..))))).)..)))...))))).'), energy=-36.918025970458984, stack_energy=-35.10665512084961), StructureEnergy(Structure('.........(((((...(((..(((((.(..(((.(.(((((.+.........))))).).)))..))))).)..)))...(((((.+.........)))))...(((..(.....)..)))...))))).'), energy=-36.91802978515625, stack_energy=-35.10665512084961), StructureEnergy(Structure('.........(((((.(.(((..(((((.(..(((...(((((.+.........)))))...(((..(.....)..)))...(((((.+.........)))))...)))..))))).)..))).).))))).'), energy=-36.91802978515625, stack_energy=-35.10664749145508)]}), : nupack.analysis.ComplexResult({model: Model('stacking', 'dna04.json', T=296.15 K), pfunc: 8753715.629, free_energy: -9.407172237608915, mfe_stack: -8.158368110656738, pairs: [[0.9964 0.0000 0.0000 ... 0.0000 0.0007 0.0028]\n",
" [0.0000 0.8864 0.0000 ... 0.0000 0.0000 0.0000]\n",
" [0.0000 0.0000 0.8372 ... 0.0180 0.0000 0.0000]\n",
" ...\n",
" [0.0000 0.0000 0.0180 ... 0.0033 0.0000 0.0000]\n",
" [0.0007 0.0000 0.0000 ... 0.0000 0.0371 0.0000]\n",
" [0.0028 0.0000 0.0000 ... 0.0000 0.0000 0.9901]], mfe: [StructureEnergy(Structure('.........(((((.(.(((..(.....)..))).).))))).'), energy=-8.528949737548828, stack_energy=-8.158368110656738)], subopt: [StructureEnergy(Structure('.........(((((.(.(((..(.....)..))).).))))).'), energy=-8.528949737548828, stack_energy=-8.158368110656738)]}), : nupack.analysis.ComplexResult({model: Model('stacking', 'dna04.json', T=296.15 K), pfunc: 8.419211276E+42, free_energy: -58.16684358934462, mfe_stack: -52.678043365478516, pairs: [[0.2677 0.0000 0.0000 ... 0.0000 0.0001 0.7322]\n",
" [0.0000 0.0043 0.0000 ... 0.0000 0.9948 0.0001]\n",
" [0.0000 0.0000 0.0003 ... 0.9984 0.0000 0.0000]\n",
" ...\n",
" [0.0000 0.0000 0.9984 ... 0.0003 0.0000 0.0000]\n",
" [0.0001 0.9948 0.0000 ... 0.0000 0.0039 0.0000]\n",
" [0.7322 0.0001 0.0000 ... 0.0000 0.0000 0.2677]], mfe: [StructureEnergy(Structure('((((((((((((((((((((((.((.....)))).((((((..+.....((...(.(....).)..))))).)))(((.(.(((((.+.........))))).).)))...))))))))))))))))))))'), energy=-53.124027252197266, stack_energy=-52.678043365478516)], subopt: [StructureEnergy(Structure('((((((((((((((((((((((.((.....)))).((((((..+.....((...(.(....).)..))))).)))(((.(.(((((.+.........))))).).)))...))))))))))))))))))))'), energy=-53.124027252197266, stack_energy=-52.678043365478516)]}), : nupack.analysis.ComplexResult({model: Model('stacking', 'dna04.json', T=296.15 K), pfunc: 4.1248746065E+68, free_energy: -92.97883820051862, mfe_stack: -89.08015441894531, pairs: [[0.2668 0.0000 0.0000 ... 0.0000 0.0001 0.7331]\n",
" [0.0000 0.0038 0.0000 ... 0.0000 0.9961 0.0001]\n",
" [0.0000 0.0000 0.0003 ... 0.9997 0.0000 0.0000]\n",
" ...\n",
" [0.0000 0.0000 0.9997 ... 0.0003 0.0000 0.0000]\n",
" [0.0001 0.9961 0.0000 ... 0.0000 0.0038 0.0000]\n",
" [0.7331 0.0001 0.0000 ... 0.0000 0.0000 0.2668]], mfe: [StructureEnergy(Structure('((((((((((((((((((((..(((((((.(....).)))...+..........(.(....).)...((((((((((((((((((((+))))))))))))))))))))..))))(((.(....).)))...+..........(.(....).)...))))))))))))))))))))'), energy=-90.28971099853516, stack_energy=-89.08015441894531)], subopt: [StructureEnergy(Structure('((((((((((((((((((((..(((((((.(....).)))...+..........(.(....).)...((((((((((((((((((((+))))))))))))))))))))..))))(((.(....).)))...+..........(.(....).)...))))))))))))))))))))'), energy=-90.28971099853516, stack_energy=-89.08015441894531)]}), : nupack.analysis.ComplexResult({model: Model('stacking', 'dna04.json', T=296.15 K), pfunc: 9.70918378E+16, free_energy: -23.01885970616828, mfe_stack: -21.373838424682617, pairs: [[0.9874 0.0000 0.0000 ... 0.0000 0.0000 0.0001]\n",
" [0.0000 0.1223 0.0000 ... 0.0000 0.0000 0.0001]\n",
" [0.0000 0.0000 0.0764 ... 0.0000 0.0000 0.0000]\n",
" ...\n",
" [0.0000 0.0000 0.0000 ... 0.9530 0.0000 0.0000]\n",
" [0.0000 0.0000 0.0000 ... 0.0000 0.9792 0.0000]\n",
" [0.0001 0.0001 0.0000 ... 0.0000 0.0000 0.9945]], mfe: [StructureEnergy(Structure('.((.(....).)).........(((((((.(....).)))...+.((.(....).)).........))))(((.(....).)))...'), energy=-22.044227600097656, stack_energy=-21.373838424682617)], subopt: [StructureEnergy(Structure('.((.(....).)).........(((((((.(....).)))...+.((.(....).)).........))))(((.(....).)))...'), energy=-22.044227600097656, stack_energy=-21.373838424682617)]}), : nupack.analysis.ComplexResult({model: Model('stacking', 'dna04.json', T=296.15 K), pfunc: 5.9409867525E+39, free_energy: -53.89645156135283, mfe_stack: -49.791229248046875, pairs: [[0.9894 0.0000 0.0000 ... 0.0000 0.0000 0.0001]\n",
" [0.0000 0.0863 0.0000 ... 0.0000 0.0000 0.0001]\n",
" [0.0000 0.0000 0.0590 ... 0.0000 0.0000 0.0000]\n",
" ...\n",
" [0.0000 0.0000 0.0000 ... 0.9439 0.0000 0.0000]\n",
" [0.0000 0.0000 0.0000 ... 0.0000 0.9766 0.0000]\n",
" [0.0001 0.0001 0.0000 ... 0.0000 0.0000 0.9958]], mfe: [StructureEnergy(Structure('.((.(....).))...((((..(((((((.(....).)))...+.((.(....).)).........))))(((.(....).)))...+.((.(....).))...))))..(((((((.(....).)))...+.((.(....).)).........))))(((.(....).)))...'), energy=-51.82879638671875, stack_energy=-49.791229248046875), StructureEnergy(Structure('.((.(....).)).........(((((((.(....).)))...+.((.(....).))...((((..(((((((.(....).)))...+.((.(....).)).........))))(((.(....).)))...+.((.(....).))...))))..))))(((.(....).)))...'), energy=-51.828792572021484, stack_energy=-49.79122543334961)], subopt: [StructureEnergy(Structure('.((.(....).))...((((..(((((((.(....).)))...+.((.(....).)).........))))(((.(....).)))...+.((.(....).))...))))..(((((((.(....).)))...+.((.(....).)).........))))(((.(....).)))...'), energy=-51.82879638671875, stack_energy=-49.791229248046875), StructureEnergy(Structure('.((.(....).)).........(((((((.(....).)))...+.((.(....).))...((((..(((((((.(....).)))...+.((.(....).)).........))))(((.(....).)))...+.((.(....).))...))))..))))(((.(....).)))...'), energy=-51.828792572021484, stack_energy=-49.79122543334961)]}), : nupack.analysis.ComplexResult({model: Model('stacking', 'dna04.json', T=296.15 K), pfunc: 4.498876548E+63, free_energy: -86.25455418957966, mfe_stack: -79.1410903930664, pairs: [[0.2668 0.0000 0.0000 ... 0.0000 0.0001 0.7331]\n",
" [0.0000 0.0038 0.0000 ... 0.0000 0.9961 0.0001]\n",
" [0.0000 0.0000 0.0003 ... 0.9997 0.0000 0.0000]\n",
" ...\n",
" [0.0000 0.0000 0.9997 ... 0.0003 0.0000 0.0000]\n",
" [0.0001 0.9961 0.0000 ... 0.0000 0.0038 0.0000]\n",
" [0.7331 0.0001 0.0000 ... 0.0000 0.0000 0.2668]], mfe: [StructureEnergy(Structure('((((((((((((((((((((((.((.....)))).........+.(((((((((((((((((((((.((.....)))).........+..........(.(....).)...)))))))))))))))))))(+....).....(.(....).)...))))))))))))))))))))'), energy=-79.75521087646484, stack_energy=-79.1410903930664)], subopt: [StructureEnergy(Structure('((((((((((((((((((((((.((.....)))).........+.(((((((((((((((((((((.((.....)))).........+..........(.(....).)...)))))))))))))))))))(+....).....(.(....).)...))))))))))))))))))))'), energy=-79.75521087646484, stack_energy=-79.1410903930664)]}), : nupack.analysis.ComplexResult({model: Model('stacking', 'dna04.json', T=296.15 K), pfunc: 2.0381062095E+18, free_energy: -24.810324950478673, mfe_stack: -21.980775833129883, pairs: [[0.9815 0.0000 0.0000 ... 0.0000 0.0054 0.0039]\n",
" [0.0000 0.8486 0.0000 ... 0.0000 0.0000 0.0000]\n",
" [0.0000 0.0000 0.5700 ... 0.1549 0.0000 0.0000]\n",
" ...\n",
" [0.0000 0.0000 0.1549 ... 0.0150 0.0000 0.0000]\n",
" [0.0054 0.0000 0.0000 ... 0.0000 0.1767 0.0000]\n",
" [0.0039 0.0000 0.0000 ... 0.0000 0.0000 0.9631]], mfe: [StructureEnergy(Structure('.........(((((.(.(((..(((((.(..(((.(.(((((.+.........))))).).)))..))))).)..))).).))))).'), energy=-22.721940994262695, stack_energy=-21.980775833129883)], subopt: [StructureEnergy(Structure('.........(((((.(.(((..(((((.(..(((.(.(((((.+.........))))).).)))..))))).)..))).).))))).'), energy=-22.721940994262695, stack_energy=-21.980775833129883)]}), : nupack.analysis.ComplexResult({model: Model('stacking', 'dna04.json', T=296.15 K), pfunc: 2.595691157E+27, free_energy: -37.148293186835126, mfe_stack: -32.872291564941406, pairs: [[0.9891 0.0000 0.0000 ... 0.0000 0.0000 0.0001]\n",
" [0.0000 0.0825 0.0000 ... 0.0000 0.0000 0.0001]\n",
" [0.0000 0.0000 0.0594 ... 0.0000 0.0000 0.0000]\n",
" ...\n",
" [0.0000 0.0000 0.0000 ... 0.9232 0.0000 0.0000]\n",
" [0.0000 0.0000 0.0000 ... 0.0000 0.9585 0.0000]\n",
" [0.0001 0.0001 0.0000 ... 0.0000 0.0000 0.9919]], mfe: [StructureEnergy(Structure('.((.(....).)).........(((((((.(....).)))...+.((.(....).))...((((......(((.(....).)))...+.((.(....).))...))))..))))(((.(....).)))...'), energy=-34.92564010620117, stack_energy=-32.872291564941406), StructureEnergy(Structure('.((.(....).))...((((......(((.(....).)))...+.((.(....).))...))))..(((((((.(....).)))...+.((.(....).)).........))))(((.(....).)))...'), energy=-34.92564010620117, stack_energy=-32.87228775024414), StructureEnergy(Structure('.((.(....).))...((((..(((((((.(....).)))...+.((.(....).)).........))))(((.(....).)))...+.((.(....).))...))))......(((.(....).)))...'), energy=-34.92564010620117, stack_energy=-32.872283935546875)], subopt: [StructureEnergy(Structure('.((.(....).)).........(((((((.(....).)))...+.((.(....).))...((((......(((.(....).)))...+.((.(....).))...))))..))))(((.(....).)))...'), energy=-34.92564010620117, stack_energy=-32.872291564941406), StructureEnergy(Structure('.((.(....).))...((((......(((.(....).)))...+.((.(....).))...))))..(((((((.(....).)))...+.((.(....).)).........))))(((.(....).)))...'), energy=-34.92564010620117, stack_energy=-32.87228775024414), StructureEnergy(Structure('.((.(....).))...((((..(((((((.(....).)))...+.((.(....).)).........))))(((.(....).)))...+.((.(....).))...))))......(((.(....).)))...'), energy=-34.92564010620117, stack_energy=-32.872283935546875)]}), : nupack.analysis.ComplexResult({model: Model('stacking', 'dna04.json', T=296.15 K), pfunc: 48748.08442, free_energy: -6.352521134634713, mfe_stack: -4.454892635345459, pairs: [[0.9843 0.0000 0.0000 ... 0.0000 0.0000 0.0001]\n",
" [0.0000 0.1629 0.0000 ... 0.0000 0.0000 0.0003]\n",
" [0.0000 0.0000 0.1304 ... 0.0000 0.0000 0.0000]\n",
" ...\n",
" [0.0000 0.0000 0.0000 ... 0.8984 0.0000 0.0000]\n",
" [0.0000 0.0000 0.0000 ... 0.0000 0.9320 0.0000]\n",
" [0.0001 0.0003 0.0000 ... 0.0000 0.0000 0.9852]], mfe: [StructureEnergy(Structure('.((.(....).)).............(((.(....).)))...'), energy=-5.1410675048828125, stack_energy=-4.454892635345459)], subopt: [StructureEnergy(Structure('.((.(....).)).............(((.(....).)))...'), energy=-5.1410675048828125, stack_energy=-4.454892635345459)]}), : nupack.analysis.ComplexResult({model: Model('stacking', 'dna04.json', T=296.15 K), pfunc: 2.9429863175E+42, free_energy: -57.54827592526773, mfe_stack: -49.63581085205078, pairs: [[0.9818 0.0000 0.0000 ... 0.0000 0.0072 0.0027]\n",
" [0.0000 0.7819 0.0000 ... 0.0000 0.0000 0.0000]\n",
" [0.0000 0.0000 0.4118 ... 0.2001 0.0000 0.0000]\n",
" ...\n",
" [0.0000 0.0000 0.2001 ... 0.0185 0.0000 0.0000]\n",
" [0.0072 0.0000 0.0000 ... 0.0000 0.2217 0.0000]\n",
" [0.0027 0.0000 0.0000 ... 0.0000 0.0000 0.9508]], mfe: [StructureEnergy(Structure('..........(.(....).)...((....))(((...(((((.+.........)))))...(((..(.....)..)))...((((..+..))))...(((((.(.(((..(.....)..))).).))))).+..)))....(((((.(.(((..(.....)..))).).))))).'), energy=-52.28767776489258, stack_energy=-49.63581085205078), StructureEnergy(Structure('.........(((((...(((..(.....)..)))...((((..+..))))...(((((.(.(((..(.....)..))).).))))).+..(((....(((((.(.(((..(.....)..))).).))))).+..........(.(....).)...((....)))))...))))).'), energy=-52.28767776489258, stack_energy=-49.635807037353516), StructureEnergy(Structure('..(((....(((((.(.(((..(.....)..))).).))))).+..........(.(....).)...((....)))))...(((((.+.........)))))...(((..(.....)..)))...((((..+..))))...(((((.(.(((..(.....)..))).).))))).'), energy=-52.28767395019531, stack_energy=-49.635807037353516), StructureEnergy(Structure('..((((...(((((.(.(((..(.....)..))).).))))).+..(((....(((((.(.(((..(.....)..))).).))))).+..........(.(....).)...((....)))))...(((((.+.........)))))...(((..(.....)..)))...))))..'), energy=-52.28767395019531, stack_energy=-49.635807037353516)], subopt: [StructureEnergy(Structure('..........(.(....).)...((....))(((...(((((.+.........)))))...(((..(.....)..)))...((((..+..))))...(((((.(.(((..(.....)..))).).))))).+..)))....(((((.(.(((..(.....)..))).).))))).'), energy=-52.28767776489258, stack_energy=-49.63581085205078), StructureEnergy(Structure('.........(((((...(((..(.....)..)))...((((..+..))))...(((((.(.(((..(.....)..))).).))))).+..(((....(((((.(.(((..(.....)..))).).))))).+..........(.(....).)...((....)))))...))))).'), energy=-52.28767776489258, stack_energy=-49.635807037353516), StructureEnergy(Structure('..(((....(((((.(.(((..(.....)..))).).))))).+..........(.(....).)...((....)))))...(((((.+.........)))))...(((..(.....)..)))...((((..+..))))...(((((.(.(((..(.....)..))).).))))).'), energy=-52.28767395019531, stack_energy=-49.635807037353516), StructureEnergy(Structure('..((((...(((((.(.(((..(.....)..))).).))))).+..(((....(((((.(.(((..(.....)..))).).))))).+..........(.(....).)...((....)))))...(((((.+.........)))))...(((..(.....)..)))...))))..'), energy=-52.28767395019531, stack_energy=-49.635807037353516)]}), : nupack.analysis.ComplexResult({model: Model('stacking', 'dna04.json', T=296.15 K), pfunc: 1.405571638E+55, free_energy: -74.72932455993072, mfe_stack: -67.34627532958984, pairs: [[0.2680 0.0000 0.0000 ... 0.0000 0.0001 0.7318]\n",
" [0.0000 0.0044 0.0000 ... 0.0000 0.9943 0.0001]\n",
" [0.0000 0.0000 0.0003 ... 0.9979 0.0000 0.0000]\n",
" ...\n",
" [0.0000 0.0000 0.9979 ... 0.0003 0.0000 0.0000]\n",
" [0.0001 0.9943 0.0000 ... 0.0000 0.0039 0.0000]\n",
" [0.7318 0.0001 0.0000 ... 0.0000 0.0000 0.2680]], mfe: [StructureEnergy(Structure('((((((((((((((((((((((.((.....)))).((((((..+.....((..(((((.(.(((..(.....)..))).).))))).+..........(.(....).)..))))).)))(((.(.(((((.+.........))))).).)))...))))))))))))))))))))'), energy=-68.5530776977539, stack_energy=-67.34627532958984)], subopt: [StructureEnergy(Structure('((((((((((((((((((((((.((.....)))).((((((..+.....((..(((((.(.(((..(.....)..))).).))))).+..........(.(....).)..))))).)))(((.(.(((((.+.........))))).).)))...))))))))))))))))))))'), energy=-68.5530776977539, stack_energy=-67.34627532958984)]}), : nupack.analysis.ComplexResult({model: Model('stacking', 'dna04.json', T=296.15 K), pfunc: 1.265785461E+43, free_energy: -58.40681156334146, mfe_stack: -55.226985931396484, pairs: [[0.2668 0.0000 0.0000 ... 0.0000 0.0001 0.7331]\n",
" [0.0000 0.0038 0.0000 ... 0.0000 0.9961 0.0001]\n",
" [0.0000 0.0000 0.0003 ... 0.9997 0.0000 0.0000]\n",
" ...\n",
" [0.0000 0.0000 0.9997 ... 0.0003 0.0000 0.0000]\n",
" [0.0001 0.9961 0.0000 ... 0.0000 0.0038 0.0000]\n",
" [0.7331 0.0001 0.0000 ... 0.0000 0.0000 0.2668]], mfe: [StructureEnergy(Structure('((((((((((((((((((((..(((((((.(....).)))...+.((.(....).)).........))))(((.(....).)))...+..........(.(....).)...))))))))))))))))))))'), energy=-56.16695785522461, stack_energy=-55.226985931396484)], subopt: [StructureEnergy(Structure('((((((((((((((((((((..(((((((.(....).)))...+.((.(....).)).........))))(((.(....).)))...+..........(.(....).)...))))))))))))))))))))'), energy=-56.16695785522461, stack_energy=-55.226985931396484)]})})"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Define physical model\n",
"my_model = Model(material='dna', celsius=23)\n",
"\n",
"# Define strand species\n",
"a = Strand('GGCTGGTTTCTGCTCTCTAGTTCGCGAGGTGCAATCTCCTATC', name='a')\n",
"b = Strand('GTCTGGGATGCTGGATACTGAACCTAGAGAGCAGAAACCAGCC', name='b')\n",
"\n",
"# Define tube ensemble containing strands at specified concentrations \n",
"# interacting to form all complexes up to 4 strands\n",
"t1 = Tube(strands={a:5e-6, b:5e-6}, complexes=SetSpec(max_size=4), name='Tube t1')\n",
"\n",
"# Analyze the tube ensemble\n",
"# Calculate pfunc (default), pairs, mfe, concentration (default) for each complex \n",
"# Since pairs is specified, calculate ensemble pair fractions for the tube ensemble\n",
"tube_result = tube_analysis(tubes=[t1], compute=['pairs', 'mfe'], model=my_model)\n",
"tube_result"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"MFE proxy structure(s) for walker (a+b):\n",
" 0: ((((((((((((((((((((((.((.....)))).........+..........(.(....).)...)))))))))))))))))))) (-38.55 kcal/mol)\n"
]
}
],
"source": [
"# MFE proxy structure for bipedal walker complex '(a+b)'\n",
"walker_result = tube_result['(a+b)']\n",
"print('\\nMFE proxy structure(s) for walker (a+b):')\n",
"for i, s in enumerate(walker_result.mfe):\n",
" print(' %2d: %s (%.2f kcal/mol)' % (i, s.structure, s.energy))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Plot the equilibrium pair probability matrix for bipedal walker complex '(a+b)'\n",
"import matplotlib.pyplot as plt\n",
"plt.imshow(walker_result.pairs.to_array())\n",
"plt.xlabel('Base index')\n",
"plt.ylabel('Base index')\n",
"plt.title('Pair probabilities for complex (a+b)')\n",
"plt.colorbar()\n",
"plt.clim(0, 1)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Plot the ensemble pair fractions for the tube \n",
"plt.imshow(tube_result[t1].ensemble_pair_fractions.to_array())\n",
"plt.xlabel('Base index')\n",
"plt.ylabel('Base index')\n",
"plt.title('Ensemble pair fractions for ' + ', '.join(s.name for s in t1.strands))\n",
"plt.colorbar()\n",
"plt.clim(0, 1)"
]
}
],
"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
}