예제 #1
0
    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)
예제 #2
0
    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
예제 #4
0
    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)
예제 #5
0
  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
예제 #6
0
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)