【发布时间】:2021-12-14 19:43:45
【问题描述】:
【问题讨论】:
-
请提供足够的代码,以便其他人更好地理解或重现问题。
-
我找到了解决方案。我添加了 AllChem.EmbedMolecule(m4, useRandomCoords=True , randomSeed=0xf00d) 随机坐标命令和嵌入函数返回 0。问题是分子。它是如此之大。谢谢你的努力我的朋友
标签: rdkit
【问题讨论】:
标签: rdkit
以下代码(版本 2021.03.3)没有问题:
m_smiles = 'c1ccccc1'
mol = Chem.MolFromSmiles(m_smiles)
mol = Chem.AddHs(mol)
AllChem.EmbedMolecule(mol, randomSeed=0xf00d)
print(Chem.MolToMolBlock(mol))
...
RDKit 3D
12 12 0 0 0 0 0 0 0 0999 V2000
-0.2995 -1.3510 0.0141 C 0 0 0 0 0 0 0 0 0 0 0 0
-1.3055 -0.4032 0.0428 C 0 0 0 0 0 0 0 0 0 0 0 0
-1.0307 0.9497 0.0294 C 0 0 0 0 0 0 0 0 0 0 0 0
0.3037 1.3426 -0.0142 C 0 0 0 0 0 0 0 0 0 0 0 0
1.2985 0.3934 -0.0425 C 0 0 0 0 0 0 0 0 0 0 0 0
1.0206 -0.9630 -0.0291 C 0 0 0 0 0 0 0 0 0 0 0 0
-0.5031 -2.4015 0.0241 H 0 0 0 0 0 0 0 0 0 0 0 0
-2.3381 -0.7237 0.0766 H 0 0 0 0 0 0 0 0 0 0 0 0
-1.8299 1.6790 0.0523 H 0 0 0 0 0 0 0 0 0 0 0 0
0.5056 2.4116 -0.0242 H 0 0 0 0 0 0 0 0 0 0 0 0
2.3290 0.7220 -0.0763 H 0 0 0 0 0 0 0 0 0 0 0 0
1.8494 -1.6559 -0.0530 H 0 0 0 0 0 0 0 0 0 0 0 0
1 2 2 0
2 3 1 0
3 4 2 0
4 5 1 0
5 6 2 0
6 1 1 0
1 7 1 0
2 8 1 0
3 9 1 0
4 10 1 0
5 11 1 0
6 12 1 0
M END
需要检查的一些事项:
检查 embed 函数是否返回非零退出状态,该函数可能无法嵌入您的分子
result = AllChem.EmbedMolecule(mol, randomSeed=0xf00d)
assert result != 0
检查conformer是否被标记为3D
result = AllChem.EmbedMolecule(mol, randomSeed=0xf00d)
c = mol.GetConformer()
print(c.Is3D())
...
True
打印conformer的坐标
result = AllChem.EmbedMolecule(mol, randomSeed=0xf00d)
c = mol.GetConformer()
print(c.GetPositions())
...
[[-0.29949394 -1.35098866 0.01410225]
[-1.30551208 -0.40318505 0.04275071]
[-1.03072469 0.949724 0.02942649]
[ 0.30371624 1.34255959 -0.01420523]
[ 1.29846541 0.39342702 -0.04249222]
[ 1.02064112 -0.96295912 -0.02906111]
[-0.50308026 -2.40153594 0.0241313 ]
[-2.33811252 -0.72370675 0.07656442]
[-1.82994742 1.67895926 0.0522682 ]
[ 0.50563305 2.41164485 -0.02424598]
[ 2.32904788 0.72199377 -0.07627234]
[ 1.8493672 -1.65593298 -0.05296649]]
【讨论】: