一般出现下面这个报错,一般就是因为分子本身没有构象,是直接从 smiles 转换过来的。
ValueError: Bad Conformer Id
有没有可能可以从 smiles 字符串生成构象呢?有的,简单来说就这样:
from rdkit import Chem
from rdkit.Chem import rdDepictor
from rdkit.Chem import rdDistGeom
esomeprazole = Chem.MolFromSmiles('COc1ccc2[n-]c([S@@+]([O-])Cc3ncc(C)c(OC)c3C)nc2c1')
# 获得 2d 构象
rdDepictor.Compute2DCoords(esomeprazole) # 之后,构象就会直接出现在 esomeprazole 中
# 获得 3d 构象
esomeprazole = Chem.AddHs(esomeprazole) # <- add hydrogens so that we get a reasonable conformer
rdDistGeom.EmbedMolecule(esomeprazole) # 之后,构象就会直接出现在 esomeprazole 中
更加详细的用法,请直接看这篇文章:https://greglandrum.github.io/rdkit-blog/posts/2023-02-04-working-with-conformers.html