【问题标题】:Convert list of smiles strings ['x', 'y', 'z'] to mol files or MDL mol blocks using RDKit使用 RDKit 将微笑字符串列表 ['x', 'y', 'z'] 转换为 mol 文件或 MDL mol 块
【发布时间】:2018-11-12 00:50:39
【问题描述】:
我已经生成了一个微笑字符串列表并将它们定义为“结果”
我想使用 RDKit 将列表中的每个 SMILES 字符串转换为单独的 mol 文件。我目前的代码是这样的:
m = Chem.MolFromSmiles('result')
print(Chem.MolToMolBlock(m))
此脚本不起作用并返回:
ArgumentError:Python 参数类型在
rdkit.Chem.rdmolfiles.MolToMolBlock(NoneType) 与 C++ 签名不匹配:
MolToMolBlock(RDKit::ROMol mol, bool includeStereo=True, int confId=-1, bool kekulize=True, bool forceV3000=False)
我将如何解决这个问题?
谢谢!
【问题讨论】:
标签:
python-3.x
spyder
rdkit
【解决方案1】:
您将字符串 'result' 转换为 RDKit mol 对象。这不能转换为 Molblock。
变量名不是字符串,所以不要使用引号。
首先,您必须将 SMILES 一个一个地转换为 mol 对象。
from rdkit import Chem
result = ['C', 'CC', 'CCC']
mo = [Chem.MolFromSmiles(r) for r in result]
然后你可以一个一个打印 Molblocks。
for m in mo:
print(Chem.MolToMolBlock(m))
这会给你这个:
RDKit 2D
1 0 0 0 0 0 0 0 0 0999 V2000
0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
M END
RDKit 2D
2 1 0 0 0 0 0 0 0 0999 V2000
0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
1.2990 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
1 2 1 0
M END
RDKit 2D
3 2 0 0 0 0 0 0 0 0999 V2000
0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
1.2990 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
2.5981 -0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
1 2 1 0
2 3 1 0
M END