from htmd.ui import *
Please cite HTMD: Doerr et al.(2016)JCTC,12,1845.
https://dx.doi.org/10.1021/acs.jctc.6b00049
Documentation: http://software.acellera.com/
To update: conda update htmd -c acellera -c psi4

You are on the latest HTMD version (unpackaged : /home/joao/maindisk/software/repos/Acellera/htmd/htmd).

Representations and Visualization#

Molecule objects can be visualized either with VMD or with NGLview, a WebGL javascript molecule viewer that can only be used inside Jupyter Notebooks

By default, VMD is used as a viewer. If one wants to use NGLview, run the following:

from htmd.config import config
config(viewer='webgl')

On-the-fly molecule visualization and interaction#

mol = Molecule('3PTB') # reloading the molecule
mol.view(gui=False)
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
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.
A Jupyter Widget

It is also possible to apply multiple representations to a Molecule as in VMD.

Representations use the same names as in VMD, even when using the NGL viewer. Important parameters are: style, color, and sel.

The “quick” or “transient” view#

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.

mol.view(sel='protein', style='NewCartoon', color='Index', hold=True)
mol.view(sel='resname BEN', style='Licorice', color=1)
A Jupyter Widget

The “explicit” way: using Molecule.reps#

One directly manipulates elements in the reps property of Molecule objects, with the views being stored in that property.

mol.reps.remove()   # Clear representations
mol.reps.add(sel='protein', style='NewCartoon', color='Index')
mol.reps.add(sel='resname BEN', style='Licorice', color=1)
print(mol.reps)     # Show list of representations (equivalent to mol.reps.list())
mol.view()
rep 0: sel='protein', style='NewCartoon', color='Index'
rep 1: sel='resname BEN', style='Licorice', color='1'
A Jupyter Widget

Atom selection expressions work as in VMD#

The following shows the molecule without a 6 Å thick slab in the middle (−3 Å ≤ x ≤ +3 Å):

mol.reps.remove() # in order to remove the previouly stored representationsb
mol.view(sel='x<-3 or x>3')
A Jupyter Widget

Visualizing a trajectory#

Molecule provides wrapping and aligning functionality for working with MD trajectories and improving the visualization.

from htmd.home import home
from os.path import join
molTraj = Molecule(join(home(dataDir='dhfr'), 'dhfr.psf'))
molTraj.read(join(home(dataDir='dhfr'), 'dhfr.xtc'))
molTraj.view()
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.
A Jupyter Widget