def test_load_rdkit_mol(self): from rdkit import Chem m1 = Chem.MolFromSmiles('C1=CC=CN=C1') parm = pmd.load_rdkit(m1) self.assertEqual([atom.name for atom in parm.atoms], ['C1', 'C2', 'C3', 'C4', 'N1', 'C5']) self.assertEqual(parm.residues[0].name, 'UNL')
def show_rdkit(rdkit_mol, **kwargs): '''Show rdkit's Mol. Parameters ---------- rdkit_mol : rdkit.Chem.rdchem.Mol kwargs : additional keyword argument Examples -------- >>> import nglview as nv >>> from rdkit import Chem # doctest: +SKIP ... from rdkit.Chem import AllChem ... m = Chem.AddHs(Chem.MolFromSmiles('COc1ccc2[C@H](O)[C@@H](COc2c1)N3CCC(O)(CC3)c4ccc(F)cc4')) ... _ = AllChem.EmbedMultipleConfs(m, useExpTorsionAnglePrefs=True, useBasicKnowledge=True) ... view = nv.show_rdkit(m) ... view # doctest: +SKIP >>> # add component m2 >>> # create file-like object >>> from nglview.show import StringIO >>> m2 = Chem.AddHs(Chem.MolFromSmiles('N[C@H](C)C(=O)O')) # doctest: +SKIP ... fh = StringIO(Chem.MolToPDBBlock(m2)) ... view.add_component(fh, ext='pdb') >>> # load as trajectory, need to have ParmEd >>> view = nv.show_rdkit(m, parmed=True) # doctest: +SKIP ''' from rdkit import Chem fh = StringIO(Chem.MolToPDBBlock(rdkit_mol)) try: use_parmed = kwargs.pop("parmed") except KeyError: use_parmed = False if not use_parmed: view = NGLWidget() view.add_component(fh, ext='pdb', **kwargs) return view else: import parmed as pmd parm = pmd.load_rdkit(rdkit_mol) parm_nv = ParmEdTrajectory(parm) # set option for ParmEd parm_nv.only_save_1st_model = False # set option for NGL # wait for: https://github.com/arose/ngl/issues/126 # to be fixed in NGLView # parm_nv.params = dict(firstModelOnly=True) return NGLWidget(parm_nv, **kwargs)
def show_rdkit(rdkit_mol, **kwargs): '''Show rdkit's Mol. Parameters ---------- rdkit_mol : rdkit.Chem.rdchem.Mol kwargs : additional keyword argument Examples -------- >>> import nglview as nv >>> from rdkit import Chem >>> from rdkit.Chem import AllChem >>> m = Chem.AddHs(Chem.MolFromSmiles('COc1ccc2[C@H](O)[C@@H](COc2c1)N3CCC(O)(CC3)c4ccc(F)cc4')) >>> AllChem.EmbedMultipleConfs(m, useExpTorsionAnglePrefs=True, useBasicKnowledge=True) >>> view = nv.show_rdkit(m) >>> view >>> # add component m2 >>> # create file-like object >>> fh = StringIO(Chem.MolToPDBBlock(m2)) >>> view.add_component(fh, ext='pdb') >>> # load as trajectory, need to have ParmEd >>> view = nv.show_rdkit(m, parmed=True) ''' from rdkit import Chem fh = StringIO(Chem.MolToPDBBlock(rdkit_mol)) try: use_parmed = kwargs.pop("parmed") except KeyError: use_parmed = False if not use_parmed: view = NGLWidget() view.add_component(fh, ext='pdb', **kwargs) return view else: import parmed as pmd parm = pmd.load_rdkit(rdkit_mol) parm_nv = ParmEdTrajectory(parm) # set option for ParmEd parm_nv.only_save_1st_model = False # set option for NGL # wait for: https://github.com/arose/ngl/issues/126 # to be fixed in NGLView # parm_nv.params = dict(firstModelOnly=True) return NGLWidget(parm_nv, **kwargs)