有什么方法可以将摩根指纹转换成我可以弄清楚它是什么分子的方式?

问题描述

我正在使用 RDKIT,并且正在使用一种算法来随机生成所有 2048 位的 Morgan 指纹。我想知道是否有办法追溯指纹以某种方式弄清楚它是什么分子,是否是微笑字符串、名称等。谢谢!

解决方法

关于这几点:

  1. 摩根指纹不是分子的唯一代表。由于位碰撞,许多分子理论上可以产生相同的指纹。

  2. 但是,2048 位的 Morgan 指纹非常稀疏,因此减少了碰撞的机会。一个值得注意的例外是聚合物(重复单元会导致设置相同的位,因此三聚体和二聚体的摩根指纹看起来相同)

  3. 如果你只是想发现一个解决方案(不是所有的解决方案),有很多方法可以对指纹进行逆向工程。请参阅有关 RDKit mailing list 的讨论。还有另一个类似的讨论here(不是逆向工程摩根,而是一种不同的模糊分子表示)

,

据我所知,无法从指纹中恢复化学结构。指纹将所有化学结构映射到固定的位长,这意味着位冲突。

此外,指纹仅跟踪不同子结构的存在与否。指纹不会告诉您一个子结构出现了多少次,或者子结构是如何连接的。因此指纹无法为您提供从子结构重建初始分子的信息。

您可以使用 RDKit 来查看哪些子结构与指纹中的不同位对应(参见 here)。

我的建议是创建一个包含 SMILES 字符串和相应指纹的类,以便信息保持在一起

,

不,这些指纹不能转换为分子,这些指纹中缺少有关“结构”(1 位)的数量和位置的信息。只能通过以下方式将 1 位(摩根指纹中为 1 的位)转换为结构:

# Draw all real 1-bits
tpls = [(m,x,bi) for x in fp.GetOnBits()]
Draw.DrawMorganBits(tpls,molsPerRow=3,subImgSize=(400,400),legends=[str(x) for x in `fp.GetOnBits()])` 

作为输出,您将获得所有 1 位的绘图: enter image description here