def MolToMPL(mol, size=(300, 300), kekulize=True, wedgeBonds=True, imageType=None, fitImage=False, options=None, **kwargs): if not mol: raise ValueError('Null molecule provided') from rdkit.Chem.Draw.mplCanvas import Canvas canvas = Canvas(size) if options is None: options = DrawingOptions() options.bgColor = None if fitImage: options.dotsPerAngstrom = int(min(size) / 10) options.atomLabelFontSize = 7 options.bondLineWidth = 2 options.coordScale = 1 options.wedgeDashedBonds = wedgeBonds drawer = MolDrawing(canvas=canvas, drawingOptions=options) omol = mol if kekulize: from rdkit import Chem mol = Chem.Mol(mol.ToBinary()) Chem.Kekulize(mol) if not mol.GetNumConformers(): from rdkit.Chem import AllChem AllChem.Compute2DCoords(mol) drawer.AddMol(mol, **kwargs) omol._atomPs = drawer.atomPs[mol] for k, v in omol._atomPs.items(): omol._atomPs[k] = canvas.rescalePt(v) canvas._figure.set_size_inches(float(size[0]) / 100, float(size[1]) / 100) return canvas._figure
def draw_molecule_with_highlights(filename, smiles, highlight_atoms): drawoptions = DrawingOptions() drawoptions.selectColor = (255.0/255.0, 0.0/255.0, 0.0/255.0) # A nice light blue. drawoptions.elemDict = {} # Don't color nodes based on their element. drawoptions.bgColor=None mol = Chem.MolFromSmiles(smiles) fig = Draw.MolToImage(mol, highlightAtoms=highlight_atoms, size=(500, 500), options=drawoptions) fig.save(filename, bbox_inches='tight')
def draw_molecule_with_highlights(filename, smiles, highlight_atoms): drawoptions = DrawingOptions() drawoptions.selectColor = highlight_color drawoptions.elemDict = {} # Don't color nodes based on their element. drawoptions.bgColor=None mol = Chem.MolFromSmiles(smiles) fig = Draw.MolToMPL(mol, highlightAtoms=highlight_atoms, size=figsize, options=drawoptions,fitImage=False) fig.gca().set_axis_off() fig.savefig(filename, bbox_inches='tight') plt.close(fig)