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
[email protected]
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss