{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Utilities example\n", "\n", "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. Calculate the complex ensemble defect with respect to the desired structure, as well as the equilibrium probability of the target structure. Design a sequence intended to adopt the desired structure and check its equilibrium pair probabilities, complex ensemble defect, and equilibrium target sturcture probability. \n", "\n", "Utilities commands are quick and easy for analyzing or designing a single complex ensemble. By contrast: 1) Analysis commands provide more efficient general-purpose tools for analyzing one or more test tube ensembles (or complex ensembles), using caching to reduce computational cost. 2) Design commands provide more versatile general-purpose tools for designing one or more test tube ensembles (or complex ensembles). " ] }, { "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": [], "source": [ "# Define physical model \n", "my_model = Model(material='dna', celsius=23)\n", "\n", "# Define walker sequences\n", "walker_seq = ['GGCTGGTTTCTGCTCTCTAGTTCGCGAGGTGCAATCTCCTATC', 'GTCTGGGATGCTGGATACTGAACCTAGAGAGCAGAAACCAGCC']\n", "\n", "# Define intended walker structure \n", "walker_struc = '(20.23+.23)20'" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# Partition function and complex free energy\n", "my_pfunc, my_free_energy = pfunc(strands=walker_seq, model=my_model)\n", "\n", "# Equilibrium pair probability matrix\n", "my_pairs = pairs(strands=walker_seq, model=my_model)\n", "\n", "# MFE procy structure and energy\n", "my_mfe = mfe(strands=walker_seq, model=my_model)\n", "\n", "# Suboptimal proxy structures and energies\n", "my_subopt = subopt(strands=walker_seq, model=my_model, energy_gap=1.1)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Partition function = 4.168803923E+30\n", "Complex free energy = -41.49232746555886\n", "\n", "MFE proxy structure(s):\n", " 0: ((((((((((((((((((((((.((.....)))).........+..........(.(....).)...)))))))))))))))))))) (-38.55 kcal/mol)\n", "\n", "Suboptimal proxy structure(s):\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": [ "# Print out components of the result for the given complex\n", "\n", "print('Partition function =', my_pfunc)\n", "print('Complex free energy =', my_free_energy)\n", "\n", "print('\\nMFE proxy structure(s):')\n", "for i, s in enumerate(my_mfe):\n", " print(' %2d: %s (%.2f kcal/mol)' % (i, s.structure, s.energy))\n", "\n", "print('\\nSuboptimal proxy structure(s):')\n", "for i, s in enumerate(my_subopt):\n", " print(' %2d: %s (%.2f kcal/mol)' % (i, s.structure, s.energy))" ] }, { "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 equilibrium pair probability matrix\n", "import matplotlib.pyplot as plt\n", "plt.imshow(my_pairs.to_array())\n", "plt.xlabel('Base index')\n", "plt.ylabel('Base index')\n", "plt.title('Pair probabilities')\n", "plt.colorbar()\n", "plt.clim(0, 1)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Normalized complex ensemble defect = 0.19\n" ] } ], "source": [ "# Calculate the complex ensemble defect with respect to the intended walker structure\n", "my_defect = defect(strands=walker_seq, structure=walker_struc, model=my_model) \n", "print('Normalized complex ensemble defect = %.2f' % my_defect)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Equilibrium structure probability = 7.4e-06\n" ] } ], "source": [ "# Calculate the equilibrium probability of the intended walker structure\n", "my_prob = structure_probability(strands=walker_seq, structure=walker_struc, model=my_model)\n", "print('Equilibrium structure probability = %.1e' % my_prob)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['CGCAUCUAUGAAAUUAAACCAACAUCCACCAACUACACCCCAC',\n", " 'ACCCUUUACAUCUUCUCUCUCACGGUUUAAUUUCAUAGAUGCG']" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Design a sequence intended to adopt the intended walker structure\n", "new_seq = des(structure=walker_struc, model=my_model)\n", "new_seq" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Equilibrium pair probability matrix\n", "my_pairs2 = pairs(strands=new_seq, model=my_model)\n", "\n", "# Plot equilibrium pair probability matrix\n", "plt.imshow(my_pairs2.to_array())\n", "plt.xlabel('Base index')\n", "plt.ylabel('Base index')\n", "plt.title('Pair probabilities for new design')\n", "plt.colorbar()\n", "plt.clim(0, 1)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Normalized complex ensemble defect = 0.01\n" ] } ], "source": [ "# Calculate the complex ensemble defect with respect to the intended walker structure for the new design\n", "my_defect2 = defect(strands=new_seq, structure=walker_struc, model=my_model) \n", "print('Normalized complex ensemble defect = %.2f' % my_defect2)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Equilibrium structure probability = 5.2e-01\n" ] } ], "source": [ "# Calculate the equilibrium probability of the intended walker structure for the new design\n", "my_prob2 = structure_probability(strands=new_seq, structure=walker_struc, model=my_model)\n", "print('Equilibrium structure probability = %.1e' % my_prob2)" ] } ], "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 }