使用 RDKit 查找分子子结构的相对位置

Finding the relative position of molecular substructures with RDKit

我有一组脂肪酸分子(SMILES 格式),我想在其中找到 C=C 双键的位置。位置含义:计算双键距离第一个碳,即羧基的碳数多少个碳。

例如,对于下面的分子,答案是 5 和 7。(图中的数字表示 RDKit 原子索引)

C(O)(=O)CCCC=CC=CCC

如果直接在微笑字符串上进行简单的正则表达式搜索,解决方案就足够简单了,但事实证明这并不容易,因为微笑字符串中的绝对 C 位置可能不是 'linear'。例如下面的微笑代表同一个分子:

C(C=CCCCC(=O)O)=CCC

有没有办法用RDKit解决这个问题?您可以看到,简单地寻找 C=C 双键子结构和羧基子结构并减去这 2 个的索引是行不通的。您必须以某种方式计算 2 个子结构匹配之间链中的碳数?

借助 RDKit 索引,您可以使用 Chem.GetShortestPath

对于你的第二个分子:

print(len(Chem.GetShortestPath(mol, 6, 2)))
5
print(len(Chem.GetShortestPath(mol, 6, 0)))
7