Source code for dpdata.plugins.3dmol
from typing import Tuple
import numpy as np
from dpdata.format import Format
from dpdata.xyz.xyz import coord_to_xyz
[docs]
@Format.register("3dmol")
class Py3DMolFormat(Format):
"""3DMol format.
To use this format, py3Dmol should be installed in advance.
"""
[docs]
def to_system(
self,
data: dict,
f_idx: int = 0,
size: Tuple[int] = (300, 300),
style: dict = {"stick": {}, "sphere": {"radius": 0.4}},
**kwargs,
):
"""Show 3D structure of a frame in jupyter.
Parameters
----------
data : dict
system data
f_idx : int
frame index to show
size : tuple[int]
(width, height) of the widget
style : dict
style of 3DMol. Read 3DMol documentation for details.
**kwargs : dict
other parameters
Examples
--------
>>> system.to_3dmol()
"""
import py3Dmol
types = np.array(data["atom_names"])[data["atom_types"]]
xyz = coord_to_xyz(data["coords"][f_idx], types)
viewer = py3Dmol.view(width=size[0], height=size[1])
viewer.addModel(xyz, "xyz")
viewer.setStyle(style.copy())
viewer.zoomTo()
return viewer