def testGithub3101(self): m = Chem.MolFromSmiles('CCCC') IPythonConsole.ipython_useSVG = True IPythonConsole.drawOptions.addAtomIndices = True res = Draw.MolsToGridImage((m, m)) self.assertIn('class="note"', res.data) dopts = rdMolDraw2D.MolDrawOptions() res = Draw.MolsToGridImage((m, m), drawOptions=dopts) self.assertNotIn('class="note"', res.data)
def testExplictMethyl(self): m = Chem.MolFromSmiles('CC') d = rdMolDraw2D.MolDraw2DSVG(250, 200) rdMolDraw2D.PrepareAndDrawMolecule(d, m) d.FinishDrawing() txt = d.GetDrawingText() self.assertEqual(txt.find("class='atom-"), -1) d = rdMolDraw2D.MolDraw2DSVG(250, 200) do = rdMolDraw2D.MolDrawOptions() do.explicitMethyl = True d.SetDrawOptions(do) rdMolDraw2D.PrepareAndDrawMolecule(d, m) d.FinishDrawing() txt = d.GetDrawingText() self.assertNotEqual(txt.find("class='atom-"), -1)
def test_smiles_to_svg(): smi = 'Cc1ccc(NC(=O)c2ccc(CN3CCN(C)CC3)cc2)cc1Nc1nccc(-c2cccnc2)n1' img = vis_utils.smiles_to_svg(smi) # smiles to SVG assert img is not None assert naive_svg_check(img) is True # Check size updates. dims = (450, 400) img = vis_utils.smiles_to_svg(smi, size=dims) assert svg_dimensions(img) == dims # Check drawing options (clear background). drawOpts = rdMolDraw2D.MolDrawOptions() drawOpts.clearBackground = True img = vis_utils.smiles_to_svg(smi, draw_options=drawOpts) assert '</rect>' in img # <rect> exists with background drawOpts.clearBackground = False img = vis_utils.smiles_to_svg(smi, draw_options=drawOpts) assert '</rect>' not in img
def testSetDrawOptions(self): m = Chem.MolFromSmiles('CCNC(=O)O') d = rdMolDraw2D.MolDraw2DSVG(250, 200, -1, -1, True) rdMolDraw2D.PrepareAndDrawMolecule(d, m) d.FinishDrawing() txt = d.GetDrawingText() self.assertNotEqual(txt.find("fill:#0000FF' >N</text>"), -1) self.assertEqual(txt.find("fill:#000000' >N</text>"), -1) d = rdMolDraw2D.MolDraw2DSVG(250, 200, -1, -1, True) do = rdMolDraw2D.MolDrawOptions() do.useBWAtomPalette() d.SetDrawOptions(do) rdMolDraw2D.PrepareAndDrawMolecule(d, m) d.FinishDrawing() txt = d.GetDrawingText() self.assertEqual(txt.find("fill:#0000FF' >N</text>"), -1) self.assertNotEqual(txt.find("fill:#000000' >N</text>"), -1)
def testAlternativeFreetypeFont(self): # this one, you have to look at the pictures m = Chem.MolFromSmiles('S(=O)(=O)(O)c1c(Cl)c(Br)c(I)c(F)c(N)1') d = rdMolDraw2D.MolDraw2DSVG(250, 200) rdMolDraw2D.PrepareAndDrawMolecule(d, m) d.FinishDrawing() txt = d.GetDrawingText() with open('test_ff.svg', 'w') as f: f.write(txt) d = rdMolDraw2D.MolDraw2DSVG(250, 200) do = rdMolDraw2D.MolDrawOptions() rdbase = environ['RDBASE'] if rdbase: do.fontFile = '{}/Code/GraphMol/MolDraw2D/Amadeus.ttf'.format(rdbase) d.SetDrawOptions(do) rdMolDraw2D.PrepareAndDrawMolecule(d, m) d.FinishDrawing() txt = d.GetDrawingText() with open('test_aff.svg', 'w') as f: f.write(txt) else: pass
try: import Image except ImportError: from PIL import Image molSize = (450, 150) highlightSubstructs = True kekulizeStructures = True highlightByReactant = False ipython_useSVG = False ipython_3d = False molSize_3d = (400, 400) drawing_type_3d = 'stick' # default drawing type for 3d structures bgcolor_3d = '0xeeeeee' drawOptions = rdMolDraw2D.MolDrawOptions() # expose RDLogs to Python StdErr so they are shown # in the IPythonConsole not the server logs. Chem.WrapLogs() def addMolToView(mol, view, confId=-1, drawAs=None): if mol.GetNumAtoms() >= 999 or drawAs == 'cartoon': # py3DMol is happier with TER and MASTER records present pdb = Chem.MolToPDBBlock(mol, flavor=0x20 | 0x10) view.addModel(pdb, 'pdb') else: # py3Dmol does not currently support v3k mol files, so # we can only provide those with "smaller" molecules mb = Chem.MolToMolBlock(mol, confId=confId)