Tanimoto 相似度与 SMARTS 子结构搜索详解,附免费工具
简答: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)
计算示例,阿司匹林与水杨酸:
- 阿司匹林,CC(=O)Oc1ccccc1C(=O)O:a = 74 位。
- 水杨酸,OC(=O)c1ccccc1O:b = 41 位。
- 两者共有:c = 41。水杨酸的每一位也都在阿司匹林中。
- 并集 = a + b − c = 74 + 41 − 41 = 74。
- 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 相似性与子结构工具
- 打开分子相似性与子结构搜索页面。默认打开的是相似性标签页。
- 在分子 A(SMILES)和分子 B(SMILES)中输入 SMILES,然后点击比较。如果想绘图,在绘图填入旁边选择分子 A或分子 B,然后在编辑器中绘制。点击吗啡 vs 可待因等示例试一试。
- 查看 Tanimoto 和 Dice 分数、相似程度判断和彩色条。表中显示 a、b 和 c,你可以核对计算。着色的原子是最大公共子结构。
- 要对许多分子排序,在将一组分子与分子 A 排序比较下每行粘贴一个 SMILES(SMILES 后面可以加名称),然后点击排序。用 Download CSV 保存表格。
- 进行模式搜索时,打开子结构搜索。输入查询或点击速查表按钮,粘贴目标分子,然后点击搜索。勾选只显示匹配的分子可隐藏其余分子。
例题
例 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 个。
相似度高是否意味着两个分子活性相同?
不一定。相似的分子往往具有相似的活性,这就是相似性搜索被用来寻找类似物的原因。但一个小改动,比如一个甲基或一个手性中心,就可能使活性消失。请把分数当作参考,而不是证据。