{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Please cite HTMD: Doerr et al.(2016)JCTC,12,1845. \n", "https://dx.doi.org/10.1021/acs.jctc.6b00049\n", "Documentation: http://software.acellera.com/\n", "To update: conda update htmd -c acellera -c psi4\n", "\n", "You are on the latest HTMD version (unpackaged : /home/joao/maindisk/software/repos/Acellera/htmd/htmd).\n", "\n" ] } ], "source": [ "from htmd.ui import *" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Representations and Visualization" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`Molecule` objects can be visualized either with VMD or with NGLview, a WebGL javascript molecule viewer that can only be used inside Jupyter Notebooks\n", "\n", "By default, VMD is used as a viewer. If one wants to use NGLview, run the following:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from htmd.config import config\n", "config(viewer='webgl')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### On-the-fly molecule visualization and interaction" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2018-03-15 15:58:20,956 - htmd.molecule.readers - INFO - Using local copy for 3PTB: /home/joao/maindisk/software/repos/Acellera/htmd/htmd/data/pdb/3ptb.pdb\n", "2018-03-15 15:58:21,671 - htmd.molecule.molecule - WARNING - Residue insertions were detected in the Molecule. It is recommended to renumber the residues using the Molecule.renumberResidues() method.\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "265fcc5892724fecbb8bee249f907a35", "version_major": 2, "version_minor": 0 }, "text/plain": [ "A Jupyter Widget" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mol = Molecule('3PTB') # reloading the molecule\n", "mol.view(gui=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is also possible to apply multiple representations to a `Molecule` as in VMD.\n", "\n", "Representations use the same names as in VMD, even when using the NGL viewer. Important parameters are: **style**, **color**, and **sel**. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### The \"quick\" or \"transient\" view" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use the `Molecule.view` method, specifying the representation as arguments. Use the `hold` parameter so that following `Molecule.view` calls can overlay. Otherwise, representations will be cleared on every call." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "fffe2f51586f42d0a636f34d5a85f56a", "version_major": 2, "version_minor": 0 }, "text/plain": [ "A Jupyter Widget" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mol.view(sel='protein', style='NewCartoon', color='Index', hold=True)\n", "mol.view(sel='resname BEN', style='Licorice', color=1)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### The \"explicit\" way: using `Molecule.reps`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One directly manipulates elements in the `reps` property of `Molecule` objects, with the views being stored in that property." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "rep 0: sel='protein', style='NewCartoon', color='Index'\n", "rep 1: sel='resname BEN', style='Licorice', color='1'\n", "\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "9afc1fd42597495ba704c36664831919", "version_major": 2, "version_minor": 0 }, "text/plain": [ "A Jupyter Widget" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mol.reps.remove() # Clear representations\n", "mol.reps.add(sel='protein', style='NewCartoon', color='Index')\n", "mol.reps.add(sel='resname BEN', style='Licorice', color=1)\n", "print(mol.reps) # Show list of representations (equivalent to mol.reps.list())\n", "mol.view()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Atom selection expressions work as in VMD" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following shows the molecule without a 6 Å thick slab in the middle (−3 Å ≤ `x` ≤ +3 Å):" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "989c2f7b8ab24d3a81a06b14a57fa8e6", "version_major": 2, "version_minor": 0 }, "text/plain": [ "A Jupyter Widget" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mol.reps.remove() # in order to remove the previouly stored representationsb\n", "mol.view(sel='x<-3 or x>3')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Visualizing a trajectory" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`Molecule` provides wrapping and aligning functionality for working with MD trajectories and improving the visualization." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2018-03-15 16:01:53,699 - htmd.molecule.readers - WARNING - No time information read from /home/joao/maindisk/software/repos/Acellera/htmd/htmd/data/dhfr/dhfr.xtc. Defaulting to 0.1ns framestep.\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "c1695dec26ac4d058ff6b2b49f46935b", "version_major": 2, "version_minor": 0 }, "text/plain": [ "A Jupyter Widget" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from htmd.home import home\n", "from os.path import join\n", "molTraj = Molecule(join(home(dataDir='dhfr'), 'dhfr.psf'))\n", "molTraj.read(join(home(dataDir='dhfr'), 'dhfr.xtc'))\n", "molTraj.view()" ] } ], "metadata": { "anaconda-cloud": {}, "celltoolbar": "Slideshow", "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.6.4" }, "nav_menu": {}, "toc": { "navigate_menu": true, "number_sections": true, "sideBar": true, "threshold": 6, "toc_cell": false, "toc_section_display": "block", "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 1 }