Hi, rdkit-discuss

I'm looking for a way to increase the quality of image made by
Draw.MolToImage.

Here is my function, but its bonds and atom labels look like up-and-down
slightly.
I don't use IPython, then are there other options?

def draw_img(smiles):
    from rdkit.Chem import AllChem
    from rdkit.Chem import Draw
    from rdkit.Chem.Draw import MolDrawing, DrawingOptions
    import matplotlib.pyplot as plt
    from mpl_toolkits.axes_grid1 import ImageGrid

    m = Chem.MolFromSmiles(smiles)
    AllChem.Compute2DCoords(m)
    mHs = AllChem.AddHs(Chem.Mol(m))
    m_idx = Chem.Mol(m)
    mHs_idx = Chem.Mol(mHs)
    for mol in [m, m_idx, mHs, mHs_idx]:
AllChem.GenerateDepictionMatching2DStructure(mol, m)
    img_m = Draw.MolToImage(m, size=(800, 400), fitImage=True)
    img_m_idx = Draw.MolToImage(m_idx, size=(800, 400), fitImage=True,
includeAtomNumbers=True)
    img_mHs = Draw.MolToImage(mHs, size=(800, 400), fitImage=True)
    img_mHs_idx = Draw.MolToImage(mHs_idx, size=(800, 400),
fitImage=True, includeAtomNumbers=True)
    imgs = [img_m, img_m_idx, img_mHs, img_mHs_idx]
    fig = plt.figure(1, (8, 8))
    grid = ImageGrid(fig, 111, # similar to subplot(111)
                     nrows_ncols=(2, 2), # creates 2x2 grid of axes
                     axes_pad=0.1 # pad between axes in inch.
                     )
    for i in range(4):
        grid[i].imshow(imgs[i])  # The AxesGrid object work as a list of axes.

    plt.show()

smiles = 'COc1ccc2[nH]c(nc2c1)S(=O)Cc3ncc(C)c(OC)c3C'
draw_img(smiles)

Also, I need the function which can close the presented image. The
functions from RDkit seem not to support that.

Best,
Noki
_______________________________________________
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

Reply via email to