#!/usr/bin/env python # coding: utf-8 # py3Dmol # ======= # # A simple [IPython/Jupyter](http://jupyter.org/) widget to # embed an interactive [3Dmol.js](http://3dmol.csb.pitt.edu) viewer in a notebook. # # The widget is completely static, which means the viewer doesn't need a running # IPython kernel to be useful and web pages and presentations generated from # the notebook will work as expected. However, this also means there is only # one-way communication between the notebook and the viewer. # # Installation # ------------ # # From PyPI: # # pip install py3Dmol # # API # --- # # The returned view object has the exact same API as [3Dmol.GLViewer](http://3dmol.csb.pitt.edu/doc/$3Dmol.GLViewer.html) # with the exception that functions return None. # # # In[1]: import py3Dmol # In[2]: p = py3Dmol.view(query='pdb:1ycr') p.setStyle({'cartoon': {'color':'spectrum'}}) p.show() # In[3]: xyz = '''4 * (null), Energy -1000.0000000 N 0.000005 0.019779 -0.000003 -0.157114 0.000052 -0.012746 H 0.931955 -0.364989 0.000003 1.507100 -0.601158 -0.004108 H -0.465975 -0.364992 0.807088 0.283368 0.257996 -0.583024 H -0.465979 -0.364991 -0.807088 0.392764 0.342436 0.764260 ''' # In[4]: xyzview = py3Dmol.view(width=400,height=400) xyzview.addModel(xyz,'xyz',{'vibrate': {'frames':10,'amplitude':1}}) xyzview.setStyle({'stick':{}}) xyzview.setBackgroundColor('0xeeeeee') xyzview.animate({'loop': 'backAndForth'}) xyzview.zoomTo() xyzview.show() # Display local file. # In[5]: benz=''' RDKit 3D 6 6 0 0 0 0 0 0 0 0999 V2000 -0.9517 0.7811 -0.6622 C 0 0 0 0 0 0 0 0 0 0 0 0 0.2847 1.3329 -0.3121 C 0 0 0 0 0 0 0 0 0 0 0 0 1.2365 0.5518 0.3512 C 0 0 0 0 0 0 0 0 0 0 0 0 0.9517 -0.7811 0.6644 C 0 0 0 0 0 0 0 0 0 0 0 0 -0.2847 -1.3329 0.3144 C 0 0 0 0 0 0 0 0 0 0 0 0 -1.2365 -0.5518 -0.3489 C 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 0 2 3 1 0 3 4 2 0 4 5 1 0 5 6 2 0 6 1 1 0 M END $$$$''' view = py3Dmol.view() view.addModel(benz,'sdf') view.setStyle({'stick':{}}) view.setStyle({'model':0},{'stick':{'colorscheme':'cyanCarbon'}}) view.zoomTo() # You can create a single canvas object with multiple viewers arrayed in a grid (3Dmol.createViewerGrid). # In[6]: view = py3Dmol.view(query='pdb:1dc9',linked=False,viewergrid=(2,2)) view.setViewStyle({'style':'outline','color':'black','width':0.1}) view.setStyle({'cartoon':{'arrows':True, 'tubes':True, 'style':'oval', 'color':'white'}},viewer=(0,1)) view.setStyle({'stick':{'colorscheme':'greenCarbon'}},viewer=(1,0)) view.setStyle({'cartoon':{'color':'spectrum'}},viewer=(1,1)) view.removeAllModels(viewer=(0,0)) view.addModel(benz,'sdf',viewer=(0,0)) view.setStyle({'stick':{}},viewer=(0,0)) view.zoomTo(viewer=(0,0)) view.render() # In[7]: view = py3Dmol.view(query='pdb:1ycr') chA = {'chain':'A'} chB = {'chain':'B'} view.setStyle(chA,{'cartoon': {'color':'spectrum'}}) view.addSurface(py3Dmol.VDW,{'opacity':0.7,'color':'white'}, chA) view.setStyle(chB,{'stick':{}}) view.show() # In[8]: view = py3Dmol.view(query='pdb:5ire',options={'doAssembly':True}) view.setStyle({'cartoon':{'color':'spectrum'}}) view.show() # Color by temperature factors # In[9]: view = py3Dmol.view(query='pdb:1ycr') view.setStyle({'cartoon': {'color':'white'}}) view.addSurface(py3Dmol.VDW,{'opacity':0.7,'colorscheme':{'prop':'b','gradient':'sinebow','min':0,'max':70}}) # Generate an inline image of what is currently in the viewer (all white if the structure hasn't loaded yet). # In[11]: png = view.png() png # In[ ]: # In[ ]: # In[ ]: