{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Please cite -- HTMD: High-Throughput Molecular Dynamics for Molecular Discovery\n", "J. Chem. Theory Comput., 2016, 12 (4), pp 1845-1852. \n", "http://pubs.acs.org/doi/abs/10.1021/acs.jctc.6b00049\n", "\n", "You are on the latest HTMD version (unpackaged : /shared/sdoerr/Work/htmdacellera/htmd).\n", "\n", "Populating the interactive namespace from numpy and matplotlib\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/shared/sdoerr/Software/anaconda3/lib/python3.5/site-packages/IPython/core/magics/pylab.py:161: UserWarning: pylab import has clobbered these variables: ['random']\n", "`%matplotlib` prevents importing * from pylab and numpy\n", " \"\\n`%matplotlib` prevents importing * from pylab and numpy\"\n" ] } ], "source": [ "from htmd.ui import *\n", "config(viewer='webgl')\n", "%pylab inline" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Projecting simulations\n", "\n", "Get the data for this tutorial [here](http://pub.htmd.org/ntl9/ntl9_data.tar.gz).\n", "\n", "* Projecting single Molecule objects\n", "* Projecting lists of simulations" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Projecting single Molecule objects" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2016-11-04 14:19:41,855 - htmd.molecule.molecule - INFO - Removed 17 atoms. 631 atoms remaining in the molecule.\n" ] } ], "source": [ "mol = Molecule('ntl9_structure.pdb')\n", "mol.read('ntl9_trajectory.xtc')\n", "mol.filter('protein')\n", "mol.view()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "crystal = Molecule('ntl9_crystal.pdb')\n", "crystal.view()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhwAAAF5CAYAAADUL/MIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3Xd8VFX6x/HPAwgCCgquvWJFV0GCYAFEsa26iN0IolhQ\nAVdBFAs2LCzYXRtrRdHYC+iKFbFiSURlF8FVwYaVoiyISJ7fH2fyM8QQMpO5c+9Mvu/Xa15k7kxm\nvodA8uTec55j7o6IiIhIlBrEHUBEREQKnwoOERERiZwKDhEREYmcCg4RERGJnAoOERERiZwKDhER\nEYmcCg4RERGJnAoOERERiZwKDhEREYmcCg4RERGJXCIKDjPrambjzewrMys3s55VHi83s2WpPyvf\nzowrs4iIiNReIgoOoDkwFRgAVLe5y7rAeqk/1wWOB8qBR3IVUERERDJnSdu8zczKgV7uPr6G5zwB\nNHf3vXOXTERERDLVKO4A6TKztYH9gWPiziIiIiK1k5RLKuk4DvgJeHxFTzCzZmbWwcya5SyViIhI\nAYjqZ2jeneEA+gHj3P3XGp7THngdKDOzhVUemwg8G1U4ERGRPLIvsF+VY6sBHYDdgDey9UZ5VXCY\nWVdgK+DwlTx109SfHap5rBtwRRZjiYiIFKJNqa8FB3ACUOru01byvFkA48aNo23btpGHyoXBgwdz\n7bXXxh0jawppPIU0FtB4kqyQxgIaT1JNnz6dPn36QOpnabYkouAws+bAFoClDrUxs3bAXHf/IvWc\nFsBhwOBavOQvAG3btqVDh+pOcuSfli1bFsxYoLDGU0hjAY0nyQppLKDx5IFfsvliiSg4gI7AJEIP\nDgeuTh0fS+i5AXBk6s8HchtNRERE6ioRBYe7T2YlK2bc/TbgttwkEhERkWzKx2WxIiIikmdUcOSJ\n4uLiuCNkVSGNp5DGAhpPkhXSWEDjqW8S19o8G8ysA1BaWlpaaBN4REREIlVWVkZRURFAkbuXZet1\ndYZDREREIqeCQ0RERCKngkNEREQip4JDREREIqeCQ0RERCKngkNEREQip4JDREREIqeCQ0RERCKn\ngkNEREQip4JDREREIqeCQ0RERCKngkNEREQip4JDREREIqeCQ0RERCKngkNEREQip4JDREREIqeC\nQ0RERCKngkNEREQip4JDREREIlfQBcfEibBsWdwpREREpKALjvPPh7Zt4e67YenSuNOIiIjUXwVd\n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\nEYmcCg4RERGJnAoOERERiZwKDhEREYmcCg4RERGJnAoOERERiZwKDhEREYmcCg4RERGJnAoOERER\niZwKDhEREYmcCg4RERGJnAoOERERiZwKDhEREYmcCg4RERGJnAoOERERiZwKDhEREYmcCg4RERGJ\nnAoOERERiZwKDhEREYmcCg4RERGJnAoOERERiZwKDhEREYlcIgoOM+tqZuPN7CszKzezntU8Z4SZ\nfW1mi8zseTPbIo6scSkpKYk7QlYV0ngKaSyg8SRZIY0FNJ76JhEFB9AcmAoMALzqg2Y2DBgE9Ac6\nAf8DnjWzxrkMGadC+4dcSOMppLGAxpNkhTQW0Hjqm0ZxBwBw94nARAAzs2qecjpwqbs/lXpOX+Bb\noBfwUK5yioiISGaScoZjhcxsM2Bd4MWKY+7+E/AWsEtcuURERKT2El9wEIoNJ5zRqOzb1GMiIiKS\ncIm4pBKBVQFOPPFEVl999eUe2Hfffdlvv/1iCVUXCxYsoKysLO4YWVNI4ymksYDGk2SFNBbQeJJg\n4sSJPPvss8sd+/nnnys+XDWb72Xuf5ijGSszKwd6ufv41P3NgE+A9u7+QaXnvQy85+6Dq3mNXYHX\nc5NYRESkIO3m7m9k68USf4bD3T8zs2+AHsAHAGbWAugM3LSCT5sKFOUmoYiISEH6KJsvloiCw8ya\nA1sAFStU2phZO2Cuu38BXAcMN7P/ArOAS4EvgSerez13XwTk13ktERGRApaISypmtjswiT/24Bjr\n7sennnMxoQ/HGsCrwEB3/28uc4qIiEhmElFwiIiISGHLh2WxIiIikudUcIiIiEjk8rbgMLOBZvaZ\nmS02sylmttNKnt/dzErN7Bczm2lmx+Yqa22kMx4zW9fM7jOzGWa2zMyuyWXWlUlzLAeb2XNm9p2Z\nLTCzN8xsn1zmXZk0x7Obmb1mZj+kNhqcbmZn5DLvyqT7f6fS5+1mZkvNLDETstP82uye2hyy8m2Z\nma2dy8w1yeD7WmMzu9zMZqW+t31qZsflKO5Kpfn1uavS16Ty1+jDXGZekQy+Nr3NbKqZ/S+18egd\nZtYqV3lXJoPxDDSz/1T6vnZM2m/q7nl3A44EfgH6AtsAY4C5wForeP6mwEJgNLA1MBBYCuwd91gy\nHM8mwLVAH6AUuCbuMdRhLNcCQwnLmDcHLgeWAO3iHkuG42mf+py2wMbA0al/eyfGPZZMxlPp81oC\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "metr = MetricRmsd(crystal, 'protein and name CA')\n", "proj = metr.project(mol)\n", "\n", "plt.plot(mol.fstep*np.arange(len(proj)), proj)\n", "_ = plt.xlabel('Time (ns)')\n", "_ = plt.ylabel('RMSD to crystal')" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "slideshow": { "slide_type": "slide" } }, "source": [ "## Projecting a simlist" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Creating simlist: 100% (314/314) [#################################] eta 00:01 \\\n", "Projecting trajectories: 100% (313/313) [##########################] eta 00:00 /\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2016-11-04 14:20:20,574 - htmd.projections.metric - INFO - Frame step 1e-06ns was read from the trajectories. If it looks wrong, redefine it by manually setting the MetricData.fstep property.\n" ] } ], "source": [ "sims = simlist(glob('datasets/1/filtered/*/'), 'datasets/1/filtered/filtered.pdb')\n", "metr = Metric(sims)\n", "metr.set(MetricDistance('protein and name CA', 'resname MOL and noh', metric='contacts'))\n", "data = metr.project()\n", "data.fstep = 0.1" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Working with data maps" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(200, 2493)\n" ] } ], "source": [ "print(data.dat[14].shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Each row is a frame of simulation 14\n", "* So what does each collumn correspond to?\n", "\n", "Get mapping from:\n", "* Either data.map (if we used `simlists`)\n", "* Or from the projection class directly" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
atomIndexesdescriptiontype
0[4, 4480]contact between GLU 1 CA and MOL 278 C3contact
1[19, 4480]contact between ALA 2 CA and MOL 278 C3contact
2[29, 4480]contact between ASP 3 CA and MOL 278 C3contact
3[41, 4480]contact between CYX 4 CA and MOL 278 C3contact
4[51, 4480]contact between GLY 5 CA and MOL 278 C3contact
\n", "
" ], "text/plain": [ " atomIndexes description type\n", "0 [4, 4480] contact between GLU 1 CA and MOL 278 C3 contact\n", "1 [19, 4480] contact between ALA 2 CA and MOL 278 C3 contact\n", "2 [29, 4480] contact between ASP 3 CA and MOL 278 C3 contact\n", "3 [41, 4480] contact between CYX 4 CA and MOL 278 C3 contact\n", "4 [51, 4480] contact between GLY 5 CA and MOL 278 C3 contact" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.map.head()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
atomIndexesdescriptiontype
0[8, 25]distance between MET 1 CA and LYS 2 CAdistance
1[8, 47]distance between MET 1 CA and VAL 3 CAdistance
2[8, 63]distance between MET 1 CA and ILE 4 CAdistance
3[8, 82]distance between MET 1 CA and PHE 5 CAdistance
4[8, 102]distance between MET 1 CA and LEU 6 CAdistance
\n", "
" ], "text/plain": [ " atomIndexes description type\n", "0 [8, 25] distance between MET 1 CA and LYS 2 CA distance\n", "1 [8, 47] distance between MET 1 CA and VAL 3 CA distance\n", "2 [8, 63] distance between MET 1 CA and ILE 4 CA distance\n", "3 [8, 82] distance between MET 1 CA and PHE 5 CA distance\n", "4 [8, 102] distance between MET 1 CA and LEU 6 CA distance" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mapping = MetricSelfDistance('protein and name CA').getMapping(mol)\n", "mapping.head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Indexing pandas DataFrames" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
atomIndexesdescriptiontype
20[321, 4480]contact between ARG 21 CA and MOL 278 C3contact
21[345, 4480]contact between GLU 22 CA and MOL 278 C3contact
\n", "
" ], "text/plain": [ " atomIndexes description type\n", "20 [321, 4480] contact between ARG 21 CA and MOL 278 C3 contact\n", "21 [345, 4480] contact between GLU 22 CA and MOL 278 C3 contact" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.map.iloc[20:22] # i(nteger)loc(ation)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "atomIndexes [321, 4480]\n", "description contact between ARG 21 CA and MOL 278 C3\n", "type contact\n", "Name: 20, dtype: object" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.map.loc[20] # Using the DataFrame index" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'contact between ARG 21 CA and MOL 278 C3'" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.map['description'][20]" ] } ], "metadata": { "anaconda-cloud": {}, "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3.0 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.3" } }, "nbformat": 4, "nbformat_minor": 0 }