首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将rdkit DrawMorganBit输出保存为图像?

如何将rdkit DrawMorganBit输出保存为图像?
EN

Stack Overflow用户
提问于 2022-07-14 10:24:14
回答 1查看 543关注 0票数 2

代码:

代码语言:javascript
运行
复制
import numpy as np
from rdkit import Chem
from rdkit.Chem import Draw, AllChem, PandasTools, DataStructs

mol = Chem.MolFromSmiles('O=C1N([C@@H](C)C2CC2)CC3=CC(C4=C(C)N=C(NC(C)=O)S4)=CC(S(=O)(C)=O)=C31')
bi = {}
fp = AllChem.GetMorganFingerprintAsBitVect(mol, radius=3, bitInfo=bi)

fp_arr = np.zeros(1,)
DataStructs.ConvertToNumpyArray(fp, fp_arr)
fp_arr = np.nonzero(fp_arr)[0]

for ar in fp_arr:
    img = Draw.DrawMorganBit(mol, ar, bi, useSVG=True)
    img.save("submol.png")

我想用DrawMorganBit创建一个图像来了解分子的指纹位是如何产生的。(使用PyCharm代替木星笔记本)然而,出现了两个问题: kekulize问题和图像存储问题。我不知道是什么导致了kekulize问题以及如何保存DrawMorganBit图像

rdkit版本2022.3.4

误差

kekulize问题:

代码语言:javascript
运行
复制
rdkit.Chem.rdchem.KekulizeException: Can't kekulize mol.  Unkekulized atoms: 5 6 8 9 14

保存问题:

代码语言:javascript
运行
复制
AttributeError: 'str' object has no attribute 'save'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-15 17:12:23

解决这个问题的方法可以在这里找到:https://github.com/rdkit/rdkit/issues/5129

保存映像的问题是,您试图将SVG保存为png。

使用这段代码,您应该会得到一个包含所有MorganBits的图像。

代码语言:javascript
运行
复制
from rdkit import Chem
from rdkit.Chem import rdMolDescriptors, Draw
drawOptions = Draw.rdMolDraw2D.MolDrawOptions()
drawOptions.prepareMolsBeforeDrawing = False
from rdkit.Chem.Draw import IPythonConsole

mol = Chem.MolFromSmiles('O=C1N([C@@H](C)C2CC2)CC3=CC(C4=C(C)N=C(NC(C)=O)S4)=CC(S(=O)(C)=O)=C31')

bi = {}
fp = rdMolDescriptors.GetMorganFingerprintAsBitVect(mol, radius=2, bitInfo=bi)

tpls = [(mol, x, bi) for x in fp.GetOnBits()]

p = Draw.DrawMorganBits(tpls, molsPerRow=5, legends=[str(x) for x in fp.GetOnBits()], drawOptions=drawOptions)
p.save('submol.png')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72979007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档