{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Complex analysis example" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Analyze a complex of two strands intended to form a bipedal walker 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 a set of suboptimal structures within a specified free energy gap.\n", "\n", "These calculations can alternatively be performed using Utilities commands (see the Utilities example notebook). " ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ComplexPfuncΔG (kcal/mol)MFE (kcal/mol)
(a+b)4.1688e+30-41.492-38.547
" ], "text/plain": [ "Result(complexes={: 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), StructureEnergy(Structure('((((((((((((((((((((......(((.(....).)))...+..........(.(....).)...))))))))))))))))))))'), energy=-39.26380157470703, stack_energy=-38.308048248291016), StructureEnergy(Structure('((((((((((((((((((((...((.....))...........+..........(.(....).)...))))))))))))))))))))'), energy=-39.088478088378906, stack_energy=-38.21638107299805), StructureEnergy(Structure('((((((((((((((((((((((.((.....))))..(((....+.....)))(.(.(....).).).))))))))))))))))))))'), energy=-38.44503402709961, stack_energy=-38.121612548828125), StructureEnergy(Structure('((((((((((((((((((((......(((........)))...+..........(.(....).)...))))))))))))))))))))'), energy=-38.807376861572266, stack_energy=-37.851619720458984), StructureEnergy(Structure('((((((((((((((((((((((....(((.(....).)))...+..........(.(....).)))).)))))))))))))))))))'), energy=-37.977664947509766, stack_energy=-37.569862365722656), StructureEnergy(Structure('((((((((((((((((((((((....(((.(....).)))...+..........(.(....).))).))))))))))))))))))))'), energy=-37.977664947509766, stack_energy=-37.569862365722656), StructureEnergy(Structure('((((((((((((((((((((((.((.....))...........+..........(.(....).)))).)))))))))))))))))))'), energy=-37.79389190673828, stack_energy=-37.47819519042969), StructureEnergy(Structure('((((((((((((((((((((((.((.....))...........+..........(.(....).))).))))))))))))))))))))'), energy=-37.79389190673828, stack_energy=-37.47819519042969), StructureEnergy(Structure('((((((((((((((((((((.((.(((((.(....).)))...+..).).))(.(.(....).).).))))))))))))))))))))'), energy=-37.8651008605957, stack_energy=-37.470577239990234), StructureEnergy(Structure('((((((((((((((((((((((.((.....)))).........+..(......)(.(....).)...))))))))))))))))))))'), energy=-37.49030303955078, stack_energy=-37.45406723022461), StructureEnergy(Structure('((((((((((((((((((((......(((.(....).)))...+..(......)(.(....).)...))))))))))))))))))))'), energy=-38.2067985534668, stack_energy=-37.4386100769043), StructureEnergy(Structure('((((((((((((((((((((.((.(.(((.(....).)))...+....).))(.(.(....).).).))))))))))))))))))))'), energy=-38.43882369995117, stack_energy=-37.39313507080078), StructureEnergy(Structure('((((((((((((((((((((...((.....))...........+..(......)(.(....).)...))))))))))))))))))))'), energy=-38.03147506713867, stack_energy=-37.34694290161133), StructureEnergy(Structure('.(((((((((((((((((((((.((.....)))).........+..........(.(....).)...))))))))))))))))))).'), energy=-37.94407272338867, stack_energy=-37.32958221435547), StructureEnergy(Structure('.(((((((((((((((((((......(((.(....).)))...+..........(.(....).)...))))))))))))))))))).'), energy=-38.66056823730469, stack_energy=-37.314125061035156), StructureEnergy(Structure('(((((((((((((((((((((..((.....)).).........+..........(.(....).)...))))))))))))))))))))'), energy=-37.53254699707031, stack_energy=-37.308746337890625), StructureEnergy(Structure('((((((((((((((((((((((.((.....)))).........+............(....).....))))))))))))))))))))'), energy=-37.57835388183594, stack_energy=-37.286869049072266), StructureEnergy(Structure('((((((((((((((((((((((.((.....)))).((((....+.....))).)(.(....).)...))))))))))))))))))))'), energy=-37.6158561706543, stack_energy=-37.27665328979492), StructureEnergy(Structure('((((((((((((((((((((......(((.(....).)))...+............(....).....))))))))))))))))))))'), energy=-38.29484939575195, stack_energy=-37.27141189575195)]})})" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Define physical model \n", "my_model = Model(material='dna', celsius=23)\n", "\n", "# Define strands\n", "a = Strand('GGCTGGTTTCTGCTCTCTAGTTCGCGAGGTGCAATCTCCTATC', name='a')\n", "b = Strand('GTCTGGGATGCTGGATACTGAACCTAGAGAGCAGAAACCAGCC', name='b')\n", "\n", "# Define the complex of interest \n", "walker = Complex([a, b])\n", "\n", "# Define the complex set to contain only one complex\n", "my_set = ComplexSet(strands={a: 1e-8, b: 1e-8}, complexes=SetSpec(max_size=0, include=[walker]))\n", "\n", "# Define the energy gap (kcal/mol) for calculating suboptimal structures\n", "gap = 1.1 \n", "\n", "# Analyze the complex \n", "# Calculate pfunc, pairs, mfe, subopt\n", "my_result = complex_analysis(my_set, compute=['pfunc', 'pairs', 'mfe', 'subopt'], \n", " options={'energy_gap': gap}, model=my_model)\n", "my_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", "\n", "Suboptimal proxy structures for walker (a+b):\n", " 0: ((((((((((((((((((((((.((.....)))).........+..........(.(....).)...)))))))))))))))))))) (-38.55 kcal/mol)\n", " 1: ((((((((((((((((((((......(((.(....).)))...+..........(.(....).)...)))))))))))))))))))) (-39.26 kcal/mol)\n", " 2: ((((((((((((((((((((...((.....))...........+..........(.(....).)...)))))))))))))))))))) (-39.09 kcal/mol)\n", " 3: ((((((((((((((((((((((.((.....))))..(((....+.....)))(.(.(....).).).)))))))))))))))))))) (-38.45 kcal/mol)\n", " 4: ((((((((((((((((((((......(((........)))...+..........(.(....).)...)))))))))))))))))))) (-38.81 kcal/mol)\n", " 5: ((((((((((((((((((((((....(((.(....).)))...+..........(.(....).)))).))))))))))))))))))) (-37.98 kcal/mol)\n", " 6: ((((((((((((((((((((((....(((.(....).)))...+..........(.(....).))).)))))))))))))))))))) (-37.98 kcal/mol)\n", " 7: ((((((((((((((((((((((.((.....))...........+..........(.(....).)))).))))))))))))))))))) (-37.79 kcal/mol)\n", " 8: ((((((((((((((((((((((.((.....))...........+..........(.(....).))).)))))))))))))))))))) (-37.79 kcal/mol)\n", " 9: ((((((((((((((((((((.((.(((((.(....).)))...+..).).))(.(.(....).).).)))))))))))))))))))) (-37.87 kcal/mol)\n", " 10: ((((((((((((((((((((((.((.....)))).........+..(......)(.(....).)...)))))))))))))))))))) (-37.49 kcal/mol)\n", " 11: ((((((((((((((((((((......(((.(....).)))...+..(......)(.(....).)...)))))))))))))))))))) (-38.21 kcal/mol)\n", " 12: ((((((((((((((((((((.((.(.(((.(....).)))...+....).))(.(.(....).).).)))))))))))))))))))) (-38.44 kcal/mol)\n", " 13: ((((((((((((((((((((...((.....))...........+..(......)(.(....).)...)))))))))))))))))))) (-38.03 kcal/mol)\n", " 14: .(((((((((((((((((((((.((.....)))).........+..........(.(....).)...))))))))))))))))))). (-37.94 kcal/mol)\n", " 15: .(((((((((((((((((((......(((.(....).)))...+..........(.(....).)...))))))))))))))))))). (-38.66 kcal/mol)\n", " 16: (((((((((((((((((((((..((.....)).).........+..........(.(....).)...)))))))))))))))))))) (-37.53 kcal/mol)\n", " 17: ((((((((((((((((((((((.((.....)))).........+............(....).....)))))))))))))))))))) (-37.58 kcal/mol)\n", " 18: ((((((((((((((((((((((.((.....)))).((((....+.....))).)(.(....).)...)))))))))))))))))))) (-37.62 kcal/mol)\n", " 19: ((((((((((((((((((((......(((.(....).)))...+............(....).....)))))))))))))))))))) (-38.29 kcal/mol)\n" ] } ], "source": [ "# MFE proxy structure(s)\n", "walker_result = my_result[walker] # result object for complex 'x'\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))\n", "\n", "print('\\nSuboptimal proxy structures for walker (a+b):')\n", "for i, s in enumerate(walker_result.subopt):\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 equilibrium pair probability matrix\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 walker (a+b)')\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 }