我生成了一个微笑字符串列表,并将其定义为“结果”
我想使用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)
我该如何解决这个问题?
谢谢!
答案 0 :(得分:0)
您已将字符串“结果”转换为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