如何从 SMILES 获取分子结构信息

How do I get molecular structural information from SMILES

我的问题是:有没有算法可以将SMILES结构转化为拓扑指纹?例如,如果甘油是输入,答案将是 3 x -OH、2x -CH2 和 1x -CH。

我正在尝试构建一个 python 脚本,该脚本可以使用人工神经网络预测混合物的密度。作为输入,我希望我的分子的 structure/fingerprint 从 SMILES 结构开始。

我已经熟悉 -rdkit 和 morganfingerprint 但这不是我要找的。我也知道我可以在 rdkit 中使用 'matching substructure' 搜索,但是我必须定义所有不同的子组。还有其他convenient/shorter方式吗?

对于大多数结构,没有找到片段的现有选项。但是,rdkit 中有一个模块可以为您提供片段的数量,尤其是当它是一个函数组时。检查一下 here。例如,假设您要查找分子中脂肪族 -OH 基团的数量。您可以简单地调用以下函数来执行此操作

from rdkit.Chem.Fragments import fr_Al_OH
fr_Al_OH(mol)

或以下将 return 芳香族 -OH 组的数量:

from rdkit.Chem.Fragments import fr_Ar_OH
fr_Ar_OH(mol)

同样,还有83个功能可用。其中一些对您的任务很有用。对于那些,你没有得到预先写好的功能,你总是可以去这些rdkit模块的源代码,弄清楚他们是如何做到的,然后为你的功能实现它们。但是正如您已经提到的,方法是定义一个 SMARTS 字符串,然后进行片段匹配。片段匹配模块可以找到here.

如果您想在预测混合物之前预测纯组分的密度,我推荐以下论文: https://pubs.acs.org/doi/abs/10.1021/acs.iecr.6b03809

您可以按照mnis 的建议使用rdkit 指定的片段。或者您可以将这些组指定为 SMARTS 模式,并按照您自己的建议使用 GetSubstructMatches 自己查找它们。

将分子分解成特定的组并不像最初看起来那么简单。您还可以使用我前一段时间发布的算法: https://jcheminf.biomedcentral.com/articles/10.1186/s13321-019-0382-3 它包括 UNIFAC 模型的 SMART 列表,但您也可以将它们用于其他用途,例如密度预测。