dwhswenson/contact_map

View on GitHub
examples/contact_trajectory.ipynb

Summary

Maintainability
Test Coverage
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Contact Trajectories\n",
    "\n",
    "Sometimes you're interested in how contacts evolve in a trajectory, frame-by-frame. Contact Map Explorer provides the `ContactTrajectory` class for this purpose.\n",
    "\n",
    "We'll look at this using a trajectory of a specific inhibitor during its binding process to GSK3B. This system is also studied in the notebook on contact concurrences (with very similar initial discussion)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<mdtraj.Trajectory with 100 frames, 5704 atoms, 360 residues, and unitcells>\n"
     ]
    }
   ],
   "source": [
    "from __future__ import print_function\n",
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "from contact_map import ContactTrajectory, RollingContactFrequency\n",
    "import mdtraj as md\n",
    "traj = md.load(\"data/gsk3b_example.h5\")\n",
    "print(traj)  # to see number of frames; size of system"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First, we'll use MDTraj's [atom selection language](http://mdtraj.org/latest/atom_selection.html) to split out the protein and the ligand, which has residue name YYG in the input files. We're only interested in contacts between the protein and the ligand (not contacts within the protein). We'll also only look at heavy atom contacts."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "topology = traj.topology\n",
    "yyg = topology.select('resname YYG and element != \"H\"')\n",
    "protein = topology.select('protein and element != \"H\"')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Making an accessing a contact trajectory\n",
    "\n",
    "Contact trajectories have the same keyword arguments as other contact objects"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "contacts = ContactTrajectory(traj, query=yyg, haystack=protein)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Once the `ContactTrajectory` has been made, contacts for individual frames can be accessed either by taking the index of the `ContactTrajectory` itself, or by getting the list of contact (e.g., all the residue contacts frame-by-frame) and selecting the frame of interest."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[([YYG351, SER32], 1.0), ([YYG351, GLY31], 1.0), ([ASN30, YYG351], 1.0)]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "contacts[0].residue_contacts.most_common()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[([YYG351, SER32], 1.0), ([YYG351, GLY31], 1.0), ([ASN30, YYG351], 1.0)]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "contacts.residue_contacts[0].most_common()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Advanced Python indexing is also allowed. In this example, note how the most common partners for YYG change! This is also what we see in the contact concurrences example."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[([VAL27, YYG351], 1.0), ([ILE28, YYG351], 1.0), ([ARG107, YYG351], 1.0)]\n",
      "[([VAL27, YYG351], 1.0), ([ILE28, YYG351], 1.0), ([GLN151, YYG351], 1.0)]\n",
      "[([VAL27, YYG351], 1.0), ([ASN30, YYG351], 1.0), ([GLY34, YYG351], 1.0)]\n",
      "[([ASP166, YYG351], 1.0), ([PHE33, YYG351], 1.0), ([LYS149, YYG351], 1.0)]\n",
      "[([YYG351, SER32], 1.0), ([VAL53, YYG351], 1.0), ([PHE33, YYG351], 1.0)]\n",
      "[([GLU63, YYG351], 1.0), ([VAL53, YYG351], 1.0), ([PHE33, YYG351], 1.0)]\n",
      "[([ASP166, YYG351], 1.0), ([VAL53, YYG351], 1.0), ([PHE33, YYG351], 1.0)]\n",
      "[([YYG351, GLY168], 1.0), ([YYG351, SER32], 1.0), ([ASP166, YYG351], 1.0)]\n"
     ]
    }
   ],
   "source": [
    "for contact in contacts[50:80:4]:\n",
    "    print(contact.residue_contacts.most_common()[:3])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can easily turn the `ContactTrajectory` into `ContactFrequency`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 396x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "freq = contacts.contact_frequency()\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(5.5,5))\n",
    "freq.residue_contacts.plot_axes(ax=ax)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Rolling Contact Frequencies\n",
    "\n",
    "A `ContactTrajectory` keeps all the time-dependent information about the contacts, whereas a `ContactFrequency`, as plotted above, loses all of it. What about something in between? For this, we have a `RollingContactFrequency`, which acts like a rolling average. It creates a contact frequency over a certain window of frames, with a certain step size between each window.\n",
    "\n",
    "This can be created either with the `RollingContactFrequency` object, or, more easily, with the `ContactTrajectory.rolling_frequency()` method."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<contact_map.contact_trajectory.RollingContactFrequency at 0x7f712c3029a0>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "RollingContactFrequency(contacts, width=30, step=14)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<contact_map.contact_trajectory.RollingContactFrequency at 0x7f712c8a9d30>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rolling_frequencies = contacts.rolling_frequency(window_size=30, step=14)\n",
    "rolling_frequencies"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we'll plot each windowed frequency, and we will see the transition as some contacts fade out and others grow in."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x720 with 12 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axs = plt.subplots(3, 2, figsize=(12, 10))\n",
    "for ax, freq in zip(axs.flatten(), rolling_frequencies):\n",
    "    freq.residue_contacts.plot_axes(ax=ax)"
   ]
  }
 ],
 "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.8.8"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": true,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": true
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}