def test_component_for_duck_typing(): view = NGLWidget() traj = pt.load(nv.datafiles.PDB) view.add_component(get_fn('tz2.pdb')) view.add_component(get_fn('tz2_2.pdb.gz')) view.add_trajectory(nv.PyTrajTrajectory(traj)) view.component_0.add_representation('cartoon') c0 = view[0] c1 = view[1] assert hasattr(view, 'component_0') assert hasattr(view, 'component_1') assert hasattr(view, 'trajectory_0') assert hasattr(view.trajectory_0, 'n_frames') assert hasattr(view.trajectory_0, 'get_coordinates') assert hasattr(view.trajectory_0, 'get_structure_string') c0.show() c0.hide() view.remove_component(c0.id) assert not hasattr(view, 'component_2') # negative indexing assert view[-1]._index == c1._index
def test_component_for_duck_typing(): # FIXME: deprecate duck typing? # syntax looks ugly. view = NGLWidget() traj = pt.load(nv.datafiles.PDB) # add 3 components (trajectory is a component) view.add_component(get_fn('tz2.pdb')) view.add_component(get_fn('tz2_2.pdb.gz')) view.add_trajectory(nv.PyTrajTrajectory(traj)) view.component_0.add_representation('cartoon') c0 = view[0] c1 = view[1] assert hasattr(view, 'component_0') assert hasattr(view, 'component_1') assert hasattr(view, 'trajectory_0') assert hasattr(view.trajectory_0, 'n_frames') assert hasattr(view.trajectory_0, 'get_coordinates') assert hasattr(view.trajectory_0, 'get_structure_string') c0.show() c0.hide() # 2 components left view.remove_component(c0.id) # c1 become 1st component assert not hasattr(view, 'component_2') assert len(view._ngl_component_ids) == 2 # negative indexing assert view[0]._index == c1._index
def _viewStatesNGL(self, states, statetype, protein, ligand, mols, numsamples, gui=False): from htmd.builder.builder import sequenceID if states is None: states = range(self.macronum) if isinstance(states, int): states = [states] if mols is None: mols = self.getStates(states, statetype, numsamples=min(numsamples, 15)) colors = [0, 1, 3, 4, 5, 6, 7, 9] hexcolors = {0: '#0000ff', 1: '#ff0000', 2: '#333333', 3: '#ff6600', 4: '#ffff00', 5: '#4c4d00', 6: '#b2b2cc', 7: '#33cc33', 8: '#ffffff', 9: '#ff3399', 10: '#33ccff'} if protein is None and ligand is None: raise NameError('Please provide either the "protein" or "ligand" parameter for viewStates.') k = 0 from nglview import NGLWidget, HTMDTrajectory view = NGLWidget(gui=gui) ref = mols[0].copy() for i, s in enumerate(states): if protein: mol = Molecule() if ligand: mol = ref.copy() mol.remove(ligand, _logger=False) mol.coords = np.atleast_3d(mol.coords[:, :, 0]) mols[i].filter(ligand, _logger=False) mols[i].set('chain', '{}'.format(s)) tmpcoo = mols[i].coords for j in range(mols[i].numFrames): mols[i].coords = np.atleast_3d(tmpcoo[:, :, j]) if ligand: mols[i].set('segid', sequenceID(mols[i].resid)+k) k = int(mols[i].segid[-1]) mol.append(mols[i]) view.add_trajectory(HTMDTrajectory(mol)) # Setting up representations if ligand: view[i].add_cartoon('protein', color='sstruc') view[i].add_hyperball(':{}'.format(s), color=hexcolors[np.mod(i, len(hexcolors))]) if protein: view[i].add_cartoon('protein', color='residueindex') self._nglButtons(view, statetype, states) return view
def _viewStatesNGL(self, states, statetype, protein, ligand, mols, numsamples, gui=False): from htmd.molecule.util import sequenceID if states is None: states = range(self.macronum) if isinstance(states, int): states = [states] if mols is None: mols = self.getStates(states, statetype, numsamples=min(numsamples, 15)) colors = [0, 1, 3, 4, 5, 6, 7, 9] hexcolors = {0: '#0000ff', 1: '#ff0000', 2: '#333333', 3: '#ff6600', 4: '#ffff00', 5: '#4c4d00', 6: '#b2b2cc', 7: '#33cc33', 8: '#ffffff', 9: '#ff3399', 10: '#33ccff'} if protein is None and ligand is None: raise NameError('Please provide either the "protein" or "ligand" parameter for viewStates.') k = 0 from nglview import NGLWidget, HTMDTrajectory view = NGLWidget(gui=gui) ref = mols[0].copy() for i, s in enumerate(states): if protein: mol = Molecule() if ligand: mol = ref.copy() mol.remove(ligand, _logger=False) mol.dropFrames(keep=0) mols[i].filter(ligand, _logger=False) mols[i].set('chain', '{}'.format(s)) tmpcoo = mols[i].coords for j in range(mols[i].numFrames): mols[i].coords = np.atleast_3d(tmpcoo[:, :, j]) if ligand: mols[i].set('segid', sequenceID(mols[i].resid)+k) k = int(mols[i].segid[-1]) mol.append(mols[i]) view.add_trajectory(HTMDTrajectory(mol)) # Setting up representations if ligand: view[i].add_cartoon('protein', color='sstruc') view[i].add_hyperball(':{}'.format(s), color=hexcolors[np.mod(i, len(hexcolors))]) if protein: view[i].add_cartoon('protein', color='residueindex') self._nglButtons(view, statetype, states) return view
def test_component_for_duck_typing(): view = NGLWidget() traj = pt.load(nv.datafiles.PDB) view.add_component('data/tz2.pdb') view.add_component('data/tz2_2.pdb.gz') view.add_trajectory(nv.PyTrajTrajectory(traj)) c0 = view[0] c1 = view[1] nt.assert_true(hasattr(view, 'component_0')) nt.assert_true(hasattr(view, 'component_1')) nt.assert_true(hasattr(view, 'trajectory_0')) nt.assert_true(hasattr(view.trajectory_0, 'n_frames')) nt.assert_true(hasattr(view.trajectory_0, 'get_coordinates')) nt.assert_true(hasattr(view.trajectory_0, 'get_structure_string')) c0.show() c0.hide() view.remove_component(c0.id) nt.assert_false(hasattr(view, 'component_2'))
def test_component_for_duck_typing(): view = NGLWidget() view.add_component('data/tz2.pdb') view.add_component('data/tz2_2.pdb.gz') c0 = view[0] c1 = view[1] nt.assert_true(hasattr(view, 'component_0')) nt.assert_true(hasattr(view, 'component_1')) c0.show() c0.hide() view.remove_component(c0.id) nt.assert_false(hasattr(view, 'component_1'))
def add_to_NGLView(self, view: nv.NGLWidget, palette: str = 'openpharmacophore') -> None: """Add the pharmacophore representation to a view (NGLWidget) from NGLView. Each pharmacophoric element is added to the NGLWidget as a new component. Parameters ---------- view : nglview.NGLWidget View as NGLView widget where the pharmacophore will be added. palette : str or dict Color palette name or dictionary. (Default: 'openpharmacophore') """ first_element_index = len(view._ngl_component_ids) for ii, element in enumerate(self._pharmacophoric_points): # Add Spheres center = puw.get_value(element.center, to_unit="angstroms").tolist() radius = puw.get_value(element.radius, to_unit="angstroms") feature_color = get_color_from_palette_for_feature(element.feature_name, color_palette=palette) label = f"{element.feature_name}_{ii}" view.shape.add_sphere(center, feature_color, radius, label) # Add vectors if element.has_direction: label = f"{element.feature_name}_vector" if element.feature_name == "hb acceptor": end_arrow = puw.get_value(element.center - 2 * radius * puw.quantity(element.direction, "angstroms"), to_unit='angstroms').tolist() view.shape.add_arrow(end_arrow, center, feature_color, 0.2, label) else: end_arrow = puw.get_value(element.center + 2 * radius * puw.quantity(element.direction, "angstroms"), to_unit='angstroms').tolist() view.shape.add_arrow(center, end_arrow, feature_color, 0.2, label) # Add opacity to spheres last_element_index = len(view._ngl_component_ids) for jj in range(first_element_index, last_element_index): view.update_representation(component=jj, opacity=0.8)
def test_trajectory_show_hide_sending_cooridnates(): view = NGLWidget() traj0 = pt.datafiles.load_tz2() traj1 = pt.datafiles.load_trpcage() view.add_trajectory(nv.PyTrajTrajectory(traj0)) view.add_trajectory(nv.PyTrajTrajectory(traj1)) for traj in view._trajlist: nt.assert_true(traj.shown) view.frame = 1 def copy_coordinate_dict(view): # make copy to avoid memory free return dict((k, v.copy()) for k, v in view.coordinates_dict.items()) coordinates_dict = copy_coordinate_dict(view) aa_eq(coordinates_dict[0], traj0[1].xyz) aa_eq(coordinates_dict[1], traj1[1].xyz) # hide 0 view.hide([ 0, ]) nt.assert_false(view._trajlist[0].shown) nt.assert_true(view._trajlist[1].shown) # update frame so view can update its coordinates view.frame = 2 coordinates_dict = copy_coordinate_dict(view) nt.assert_equal(coordinates_dict[0].shape[0], 0) aa_eq(coordinates_dict[1], traj1[2].xyz) # hide 0, 1 view.hide([0, 1]) nt.assert_false(view._trajlist[0].shown) nt.assert_false(view._trajlist[1].shown) view.frame = 3 coordinates_dict = copy_coordinate_dict(view) nt.assert_equal(coordinates_dict[0].shape[0], 0) nt.assert_equal(coordinates_dict[1].shape[0], 0) # slicing, show only component 1 view[1].show() view.frame = 0 nt.assert_false(view._trajlist[0].shown) nt.assert_true(view._trajlist[1].shown) coordinates_dict = copy_coordinate_dict(view) nt.assert_equal(coordinates_dict[0].shape[0], 0) aa_eq(coordinates_dict[1], traj1[0].xyz) # show all view[1].show() view[0].show() view.frame = 1 nt.assert_true(view._trajlist[0].shown) nt.assert_true(view._trajlist[1].shown) coordinates_dict = copy_coordinate_dict(view) aa_eq(coordinates_dict[0], traj0[1].xyz) aa_eq(coordinates_dict[1], traj1[1].xyz) # hide all view[1].hide() view[0].hide() view.frame = 2 nt.assert_false(view._trajlist[0].shown) nt.assert_false(view._trajlist[1].shown) coordinates_dict = copy_coordinate_dict(view) nt.assert_equal(coordinates_dict[0].shape[0], 0) nt.assert_equal(coordinates_dict[1].shape[0], 0)
def test_trajectory_show_hide_sending_cooridnates(): view = NGLWidget() traj0 = pt.datafiles.load_tz2() traj1 = pt.datafiles.load_trpcage() view.add_trajectory(nv.PyTrajTrajectory(traj0)) view.add_trajectory(nv.PyTrajTrajectory(traj1)) for traj in view._trajlist: assert traj.shown view.frame = 1 def copy_coordinate_dict(view): # make copy to avoid memory free return {k: v.copy() for k, v in view._coordinates_dict.items()} coordinates_dict = copy_coordinate_dict(view) aa_eq(coordinates_dict[0], traj0[1].xyz) aa_eq(coordinates_dict[1], traj1[1].xyz) # hide 0 view.hide([ 0, ]) assert not view._trajlist[0].shown assert view._trajlist[1].shown # update frame so view can update its coordinates view.frame = 2 coordinates_dict = copy_coordinate_dict(view) assert coordinates_dict[0].shape[0] == 0 aa_eq(coordinates_dict[1], traj1[2].xyz) # hide 0, 1 view.hide([0, 1]) assert not view._trajlist[0].shown assert not view._trajlist[1].shown view.frame = 3 coordinates_dict = copy_coordinate_dict(view) assert coordinates_dict[0].shape[0] == 0 assert coordinates_dict[1].shape[0] == 0 # slicing, show only component 1 view[1].show() view.frame = 0 assert not view._trajlist[0].shown assert view._trajlist[1].shown coordinates_dict = copy_coordinate_dict(view) assert coordinates_dict[0].shape[0] == 0 aa_eq(coordinates_dict[1], traj1[0].xyz) # show all view[1].show() view[0].show() view.show(indices='all') view.show(indices=[ 0, ]) view.show(indices=[0, 1]) view.frame = 1 assert view._trajlist[1].shown coordinates_dict = copy_coordinate_dict(view) aa_eq(coordinates_dict[0], traj0[1].xyz) aa_eq(coordinates_dict[1], traj1[1].xyz) # hide all view[1].hide() view[0].hide() view.frame = 2 assert not view._trajlist[0].shown assert not view._trajlist[1].shown coordinates_dict = copy_coordinate_dict(view) assert coordinates_dict[0].shape[0] == 0 assert coordinates_dict[1].shape[0] == 0
def test_trajectory_show_hide_sending_cooridnates(): view = NGLWidget() traj0 = pt.datafiles.load_tz2() traj1 = pt.datafiles.load_trpcage() view.add_trajectory(nv.PyTrajTrajectory(traj0)) view.add_trajectory(nv.PyTrajTrajectory(traj1)) for traj in view._trajlist: nt.assert_true(traj.shown) view.frame = 1 def copy_coordinate_dict(view): # make copy to avoid memory free return dict((k, v.copy()) for k, v in view.coordinates_dict.items()) coordinates_dict = copy_coordinate_dict(view) aa_eq(coordinates_dict[0], traj0[1].xyz) aa_eq(coordinates_dict[1], traj1[1].xyz) # hide 0 view.hide([0,]) nt.assert_false(view._trajlist[0].shown) nt.assert_true(view._trajlist[1].shown) # update frame so view can update its coordinates view.frame = 2 coordinates_dict = copy_coordinate_dict(view) nt.assert_equal(coordinates_dict[0].shape[0], 0) aa_eq(coordinates_dict[1], traj1[2].xyz) # hide 0, 1 view.hide([0, 1]) nt.assert_false(view._trajlist[0].shown) nt.assert_false(view._trajlist[1].shown) view.frame = 3 coordinates_dict = copy_coordinate_dict(view) nt.assert_equal(coordinates_dict[0].shape[0], 0) nt.assert_equal(coordinates_dict[1].shape[0], 0) # slicing, show only component 1 view[1].show() view.frame = 0 nt.assert_false(view._trajlist[0].shown) nt.assert_true(view._trajlist[1].shown) coordinates_dict = copy_coordinate_dict(view) nt.assert_equal(coordinates_dict[0].shape[0], 0) aa_eq(coordinates_dict[1], traj1[0].xyz) # show all view[1].show() view[0].show() view.frame = 1 nt.assert_true(view._trajlist[0].shown) nt.assert_true(view._trajlist[1].shown) coordinates_dict = copy_coordinate_dict(view) aa_eq(coordinates_dict[0], traj0[1].xyz) aa_eq(coordinates_dict[1], traj1[1].xyz) # hide all view[1].hide() view[0].hide() view.frame = 2 nt.assert_false(view._trajlist[0].shown) nt.assert_false(view._trajlist[1].shown) coordinates_dict = copy_coordinate_dict(view) nt.assert_equal(coordinates_dict[0].shape[0], 0) nt.assert_equal(coordinates_dict[1].shape[0], 0)
def test_trajectory_show_hide_sending_cooridnates(): view = NGLWidget() traj0 = pt.datafiles.load_tz2() traj1 = pt.datafiles.load_trpcage() view.add_trajectory(nv.PyTrajTrajectory(traj0)) view.add_trajectory(nv.PyTrajTrajectory(traj1)) for traj in view._trajlist: assert traj.shown view.frame = 1 def copy_coordinate_dict(view): # make copy to avoid memory free return dict((k, v.copy()) for k, v in view.coordinates_dict.items()) coordinates_dict = copy_coordinate_dict(view) aa_eq(coordinates_dict[0], traj0[1].xyz) aa_eq(coordinates_dict[1], traj1[1].xyz) # hide 0 view.hide([0,]) assert not view._trajlist[0].shown assert view._trajlist[1].shown # update frame so view can update its coordinates view.frame = 2 coordinates_dict = copy_coordinate_dict(view) assert coordinates_dict[0].shape[0] == 0 aa_eq(coordinates_dict[1], traj1[2].xyz) # hide 0, 1 view.hide([0, 1]) assert not view._trajlist[0].shown assert not view._trajlist[1].shown view.frame = 3 coordinates_dict = copy_coordinate_dict(view) assert coordinates_dict[0].shape[0] == 0 assert coordinates_dict[1].shape[0] == 0 # slicing, show only component 1 view[1].show() view.frame = 0 assert not view._trajlist[0].shown assert view._trajlist[1].shown coordinates_dict = copy_coordinate_dict(view) assert coordinates_dict[0].shape[0] == 0 aa_eq(coordinates_dict[1], traj1[0].xyz) # show all view[1].show() view[0].show() view.show(indices='all') view.show(indices=[0,]) view.show(indices=[0, 1]) view.frame = 1 assert view._trajlist[1].shown coordinates_dict = copy_coordinate_dict(view) aa_eq(coordinates_dict[0], traj0[1].xyz) aa_eq(coordinates_dict[1], traj1[1].xyz) # hide all view[1].hide() view[0].hide() view.frame = 2 assert not view._trajlist[0].shown assert not view._trajlist[1].shown coordinates_dict = copy_coordinate_dict(view) assert coordinates_dict[0].shape[0] == 0 assert coordinates_dict[1].shape[0] == 0