为什么这个 rdkit 脚本在 visual studio 代码中不起作用?

Why is this rdkit script not working in visual studio code?

我一直在通过 jupyter 笔记本使用 VS 代码。 所以,我必须生成 15 个分子的网格图像并将其保存到我的计算机,但我一直在使用的脚本没有显示任何错误,但仍然没有生成任何图像,也没有将它们保存到指定文件到我的计算机尽管电池气体已成功执行。

我是计算化学领域的新手,非常感谢任何帮助!

下面是我的脚本

from rdkit import Chem
from rdkit.Chem import Draw
from rdkit.Chem.Draw import MolsToGridImage
from rdkit.Chem import SDMolSupplier

suppl = Chem.SDMolSupplier('chemspidersdf/database.sdf')
ms = [x for x in suppl if x is not None]
for m in ms: tmp=AllChem.Compute2DCoords(m)
img=Draw.MolsToGridImage(ms[:15],molsPerRow=5,subImgSize=(200,200),legends=[x.GetProp("_Name") for x in ms[:15]])
img.save('gridpng/test_molgrid.o.png') 

因为您使用的是 Jupyter,MolsToGridImage 的输出可能不是您所期望的。在 Jupyter 中,函数 return 是 IPython.core.display.Image。您可以像这样将其保存为 png:

img = Draw.MolsToGridImage(mymols)

with open('molgrid.png', 'wb') as png:
    png.write(img.data)

当 运行 在标准解释器中函数 return 是 PIL.PngImagePlugin.PngImageFile.

您也可以通过卸载 IPython 渲染器 return 到原始行为(在 jupyter 之外),尽管这会消除能够看到笔记本中显示的分子图像的良好行为.

from rdkit.Chem.Draw import IPythonConsole

IPythonConsole.UninstallIPythonRenderer()
img = Draw.MolsToGridImage(mymols)
img.save('molgrid.png')