Tanimoto 相似度与 SMARTS 子结构搜索详解,附免费工具

发布:2026年10月19日 · 作者:Scidart Academy · 阅读时间:约 7 分钟
两个药物分子并排显示,下方是一个 Tanimoto 相似度刻度条
Tanimoto 相似度衡量两个分子共有多少个指纹位。

简答:Tanimoto 相似度比较两个分子的指纹:T = c / (a + b − c),其中 a 和 b 是各分子中被置位的位数,c 是两者共有的位数。取值范围为 0 到 1。打开分子相似性与子结构搜索工具,输入两个 SMILES 并点击比较。阿司匹林与水杨酸得分 0.554(中等相似)。进行模式搜索时,可以用 SMARTS,例如用 [CX3](=O)[OX2H1] 表示羧酸。

关键术语,一句话解释

分子指纹一串二进制位。当分子含有某种结构片段时,对应的位为开(1)。
Tanimoto 系数c / (a + b − c)。共有位数除以任一分子中被置位的全部位数。范围 0 到 1。
Dice 系数2c / (a + b)。给共有位双倍权重。总是至少与 Tanimoto 一样高。
子结构较大分子中一组相连的原子和化学键,例如苯环或 COOH 基团。
SMARTS一种基于 SMILES 的模式语言,用于描述带有原子和化学键条件的子结构。
公共子结构两个分子中都存在的最大相连原子和化学键集合。

分子指纹的工作原理

计算机无法直接比较两幅结构图,所以要把每个分子转换为指纹。常见的有三类:

  • 片段字典指纹每个预定义片段对应一位,例如与氧相连的羰基。MACCS 键(166 位)就是这样工作的。
  • 路径指纹把每条不超过设定长度的原子线性路径哈希到某一位。
  • 环形指纹(ECFP、Morgan)把每个原子周围半径为 2 或 3 个键的环境哈希到某一位。

MolDraw 工具使用 512 位片段字典指纹,与分子比较插件相同。阿司匹林置位了 512 位中的 74 位,水杨酸置位了 41 位。较大的分子通常置位更多。

指纹记录哪些原子相互键合,但不记录楔形键或 3D 形状。这就是 L-丙氨酸和 D-丙氨酸得分为 1.000 的原因。

Tanimoto 公式与计算示例

设 a 为分子 A 中为开的位数,b 为分子 B 中的位数,c 为两者共有的位数。

  • Tanimoto:T = c / (a + b − c)
  • Dice:D = 2c / (a + b) = 2T / (1 + T)

计算示例,阿司匹林与水杨酸:

  1. 阿司匹林,CC(=O)Oc1ccccc1C(=O)O:a = 74 位。
  2. 水杨酸,OC(=O)c1ccccc1O:b = 41 位。
  3. 两者共有:c = 41。水杨酸的每一位也都在阿司匹林中。
  4. 并集 = a + b − c = 74 + 41 − 41 = 74。
  5. T = 41 / 74 = 0.554。D = 82 / 115 = 0.713。

水杨酸是阿司匹林的子结构,但得分只是中等。阿司匹林乙酰酯基多出的 33 位拉低了分数。Tanimoto 会惩罚大小差异,当你想找大小相近的类似物时,这一点很有用。

Tanimoto 是对称的:A 对 B 与 B 对 A 的结果相同。完全相同的指纹得分恰好为 1。

Tanimoto 分数的含义

0.85 至 1.00非常相似。近似类似物,或在 1.00 时为同一分子。
0.70 至 0.85相似。共有核心结构,只有一两个基团不同。
0.50 至 0.70中等相似。有一些共同片段,骨架或取代基不同。
0.30 至 0.50弱相似。只有一个环或一个官能团相同。
低于 0.30不相似。

这些阈值适用于这里使用的 512 位片段指纹。使用 ECFP4 等环形指纹时,同一对分子的分数往往更低,0.4 就可能意味着相关化合物。永远不要在同一张表中混用两种指纹的分数。

用于子结构搜索的 SMARTS 基础

普通 SMILES 本身就是一个查询:c1ccccc1 可以找到每个苯环。方括号为单个原子添加条件。

#7原子序数 7:任何氮,无论是否芳香。
c / C芳香碳 / 脂肪碳。
H1、!H0恰好一个氢 / 至少一个氢。
X3、D2总共三个连接(含 H)/ 两个重原子邻居。
R、R0、r5在环中 / 不在环中 / 在五元环中。
, ; !或 / 与 / 非。[F,Cl,Br,I] 表示任意卤素。
- = # : ~单键、双键、三键、芳香键和任意键。

常用模式:

  • 羧酸:[CX3](=O)[OX2H1]
  • 酯:[#6][CX3](=O)[OX2][#6]
  • 伯烷基胺:[NX3;H2][CX4]
  • 芳基卤:c[F,Cl,Br,I]
  • Lipinski 氢键供体:[#7,#8;!H0]。Lipinski 氢键受体:[#7,#8]

该工具目前还不支持用 $( ) 写的递归 SMARTS 或用点分隔的查询。请用相邻原子改写这类条件。

如何使用 MolDraw 相似性与子结构工具

  1. 打开分子相似性与子结构搜索页面。默认打开的是相似性标签页。
  2. 在分子 A(SMILES)和分子 B(SMILES)中输入 SMILES,然后点击比较。如果想绘图,在绘图填入旁边选择分子 A或分子 B,然后在编辑器中绘制。点击吗啡 vs 可待因等示例试一试。
  3. 查看 Tanimoto 和 Dice 分数、相似程度判断和彩色条。表中显示 a、b 和 c,你可以核对计算。着色的原子是最大公共子结构。
  4. 要对许多分子排序,在将一组分子与分子 A 排序比较下每行粘贴一个 SMILES(SMILES 后面可以加名称),然后点击排序。用 Download CSV 保存表格。
  5. 进行模式搜索时,打开子结构搜索。输入查询或点击速查表按钮,粘贴目标分子,然后点击搜索。勾选只显示匹配的分子可隐藏其余分子。

例题

例 1:对乙酰氨基酚与非那西丁

非那西丁(CCOc1ccc(NC(C)=O)cc1)在对乙酰氨基酚的 OH 位置上是乙氧基。Tanimoto = 0.846,Dice = 0.917。判断:相似,刚好低于“非常相似”的界线。共同核心是整个乙酰苯胺单元。

例 2:以布洛芬为参照对 NSAID 排序

点击示例:NSAIDs 与布洛芬比较。萘普生排第一(0.711),其次是酮洛芬(0.691)和氟比洛芬(0.681)。这三者都是 2-芳基丙酸。双氯芬酸得分 0.336,咖啡因以 0.106 排在最后。

例 3:哪些药物是羧酸?

在 9 种示例药物上查询 [CX3](=O)[OX2H1]:9 种中有 6 种匹配。对乙酰氨基酚、塞来昔布和咖啡因不匹配。每个酸基都在结构图中着色显示。

例 4:对乙酰氨基酚中的 Lipinski 供体

在 CC(=O)Nc1ccc(O)cc1 上查询 [#7,#8;!H0],得到 2 个匹配:酰胺 N–H 和酚 O–H。受体查询 [#7,#8] 得到 3 个:N、C=O 的氧和 OH 的氧。

例 5:对映异构体

L-丙氨酸与 D-丙氨酸的 Tanimoto 为 1.000。工具会附加提示,说明两者只在立体化学上不同。

汇总表

阿司匹林 vs 水杨酸T = 0.554,D = 0.713,中等相似
对乙酰氨基酚 vs 非那西丁T = 0.846,相似
吗啡 vs 可待因T = 0.944,非常相似
布洛芬 vs 萘普生T = 0.711,相似
苯 vs 环己烷T = 0.000,不相似
羧酸 SMARTS[CX3](=O)[OX2H1]
供体和受体 SMARTS[#7,#8;!H0] 和 [#7,#8]

常见错误

  • 比较不同指纹得到的分数。一种指纹上的 0.6 并不等于另一种指纹上的 0.6。
  • 期望立体异构体得分不同。二维指纹忽略立体化学。
  • 把相似度当作活性。改变一个原子就可能让药物失效。
  • 查询中省略了氢。C(=O)O 也会匹配酯。羧酸的 OH 请用 [OX2H1]。
  • 混淆 c 和 C。C1CCCCC1 是环己烷,不会匹配苯。
  • 忘记盐和电荷。羧酸根 [O-] 不会匹配 OH 查询。

问题与解答

多少 Tanimoto 相似度分数算高?

对于 MolDraw 工具使用的 512 位片段指纹,0.85 及以上为非常相似,0.70 至 0.85 为相似,0.50 至 0.70 为中等相似,0.30 至 0.50 为弱相似,低于 0.30 为不相似。阈值会随指纹类型变化,所以只能比较同一种方法得到的分数。

如何计算 Tanimoto 系数?

数出分子 A 中被置位的位数(a)、分子 B 中的位数(b)以及两者共有的位数(c)。Tanimoto = c / (a + b − c)。阿司匹林(a = 74)与水杨酸(b = 41),c = 41,Tanimoto = 41 / 74 = 0.554。

Tanimoto 相似度和 Dice 相似度一样吗?

不一样。两者使用相同的计数,但 Dice = 2c / (a + b)。Dice 总是等于或高于 Tanimoto,两者的关系为 Dice = 2T / (1 + T)。Tanimoto 0.554 对应 Dice 0.713。

为什么工具对两个不同的分子给出 1.000?

指纹记录的是连接关系,而不是 3D 形状。对映异构体、非对映异构体和 E/Z 异构体具有相同的片段,所以得分为 1.000。当两个输入只在立体化学上不同时,工具会显示一条提示。

SMILES 和 SMARTS 有什么区别?

SMILES 描述一个分子。SMARTS 描述许多分子都可能包含的一种模式。每个 SMILES 都是合法的 SMARTS,但 SMARTS 还增加了条件,例如 H1(一个氢)、X3(三个连接)、R(在环中),以及用逗号(或)、分号(与)和感叹号(非)表示的逻辑。

如何在一组分子中找出所有羧酸?

打开“子结构搜索”标签页,在速查表中点击 Carboxylic acid 载入 [CX3](=O)[OX2H1],粘贴你的 SMILES 列表并点击“搜索”。在 9 种药物的示例集中,有 6 种匹配:布洛芬、萘普生、酮洛芬、氟比洛芬、双氯芬酸和阿司匹林。

能用 SMARTS 数氢键供体吗?

能。模式 [#7,#8;!H0] 匹配每个至少带一个氢的氮或氧,这就是 Lipinski 供体计数。对乙酰氨基酚得到 2 个匹配,受体模式 [#7,#8] 得到 3 个。

相似度高是否意味着两个分子活性相同?

不一定。相似的分子往往具有相似的活性,这就是相似性搜索被用来寻找类似物的原因。但一个小改动,比如一个甲基或一个手性中心,就可能使活性消失。请把分数当作参考,而不是证据。

相关工具

相关指南

最后更新: