分子相似性与子结构搜索
简而言之:粘贴或绘制两个分子,即可得到它们的 Tanimoto 和 Dice 相似度、相似程度判断和最大公共子结构。也可以在一个或多个分子中搜索 SMILES 或 SMARTS 模式,并高亮显示匹配的原子。
可用它检查类似物与先导化合物有多接近,将一组分子与参照分子排序比较,或找出哪些分子含有羧酸、芳基卤或氢键供体。分数基于 512 位子结构片段指纹,与 MolDraw 编辑器中“比较分子”插件使用的指纹相同。
CC(=O)Oc1ccccc1C(=O)O)和水杨酸(OC(=O)c1ccccc1O)分别置位 74 和 41 个指纹比特,且 41 个全部共有,因此 Tanimoto = 41 / (74 + 41 − 41) = 0.554(中等相似),Dice = 82 / 115 = 0.713。SMARTS [CX3](=O)[OX2H1] 在两者中各找到一个羧基。正在加载编辑器…
SMARTS 速查表
正在加载…
正在加载…
将一组分子与分子 A 排序比较
每行粘贴一个 SMILES,后面可跟名称。每个分子都与分子 A 计算分数,并按相似度从高到低排序。
如何使用相似性与子结构工具
- 相似性:输入或粘贴分子 A 和分子 B 的 SMILES,然后点击比较。如果想直接绘制,请在编辑器上方选择分子 A 或分子 B 后绘图。
- 查看 Tanimoto 和 Dice 分数、相似程度判断和进度条。两幅结构图中着色的原子即最大公共子结构。
- 排序比较:在将一组分子与分子 A 排序比较下粘贴多个 SMILES,然后点击排序。用下载 CSV 保存表格。
- 子结构搜索:打开子结构搜索选项卡,输入查询或从速查表中选取一个,粘贴目标分子后点击搜索。每个匹配都用不同的颜色着色。
Tanimoto 相似度的原理
指纹是一串比特。本工具使用 512 位指纹,每一位对应固定字典中的一个常见子结构小片段,例如与氧相邻的羰基,或与氮相邻的芳环碳。分子含有该片段时,这一位为 1。
Tanimoto T = c / (a + b − c) Dice D = 2c / (a + b) D = 2T / (1 + T)
其中 a 是 A 中为 1 的比特数,b 是 B 中的,c 是两者共有的。T = 1 表示指纹完全相同;T = 0 表示没有共同比特。Tanimoto 是对称的:A 与 B 比较和 B 与 A 比较得到的数值相同。
计数例题
阿司匹林置位 a = 74 个比特,水杨酸 b = 41 个。水杨酸的 41 个比特在阿司匹林中也全部为 1,所以 c = 41。T = 41 / (74 + 41 − 41) = 41 / 74 = 0.554。D = 2 × 41 / (74 + 41) = 82 / 115 = 0.713。分数只是中等,是因为阿司匹林的乙酰酯基带来了许多额外比特。
本工具使用的判断标准
| Tanimoto | 判断 | 通常的含义 |
|---|---|---|
| 0.85 至 1.00 | 非常相似 | 近似类似物,或完全相同(1.00) |
| 0.70 至 0.85 | 相似 | 核心结构相同,有一两个基团不同 |
| 0.50 至 0.70 | 中等相似 | 有部分共同片段,骨架或取代基不同 |
| 0.30 至 0.50 | 弱相似 | 只有一个环或一个官能团相同 |
| 低于 0.30 | 不相似 | 几乎没有共同之处 |
阈值取决于所用指纹。同一对分子用 ECFP4 等环形指纹计算,分数可能相差很大。只应比较同一方法得出的分数。
SMARTS 基础与速查表
SMARTS 是建立在 SMILES 之上的模式语言。普通的 SMILES 本身就是有效的查询。方括号为单个原子添加条件:
#7原子序数为 7(任意氮原子),c芳香碳,C脂肪族碳,a任意芳香原子,*任意原子。H1恰好连有一个氢,!H0至少连有一个氢,X3总共三个连接,D2两个重原子邻居。R在环中,R0不在环中,r6在六元环中,+或-电荷。- 逻辑:
,或,;与,!非。化学键:-单键,=双键,#三键,:芳香键,~任意键。
| 点群 | SMARTS | 匹配 | 不匹配 | |
|---|---|---|---|---|
| 羧酸 | [CX3](=O)[OX2H1] | 乙酸、阿司匹林 | 乙酸甲酯、乙酸根阴离子 | |
| 羧酸根阴离子 | [CX3](=O)[O-] | 乙酸钠 | 乙酸 | |
| 酯 | [#6][CX3](=O)[OX2][#6] | 乙酸乙酯、阿司匹林 | 乙酸 | |
| 酰胺 | [NX3][CX3]=O | 对乙酰氨基酚、肽键 | 乙酸 | |
| 伯胺(烷基) | [NX3;H2][CX4] | 乙胺、苯丙胺 | 乙酰胺、苯胺 | |
| 仲胺(烷基) | [NX3;H1]([CX4])[CX4] | 二乙胺 | 乙胺 | |
| 芳香胺(苯胺) | [NX3;H2]c | 苯胺 | 乙胺 | |
| 醇 | [CX4][OX2H] | 乙醇 | 苯酚 | |
| 酚 | c[OX2H] | 苯酚、对乙酰氨基酚 | 乙醇 | |
| 醛 | [CX3H1](=O)[#6] | 乙醛、香草醛 | 丙酮 | |
| 酮 | [#6][CX3](=O)[#6] | 丙酮 | 乙醛 | |
| 芳基卤 | c[F,Cl,Br,I] | 氯苯、双氯芬酸 | 氯乙烷 | |
| 卤代烷 | [CX4][F,Cl,Br,I] | 氯乙烷 | 氯苯 | |
| 硝基 | [N+](=O)[O-] | 硝基苯 | 乙腈 | |
| 腈 | [CX2]#[NX1] | 乙腈 | 乙胺 | |
| 磺酰胺 | [SX4](=O)(=O)[NX3] | 磺胺、塞来昔布 | 二甲基砜 | |
| 硫醇 | [SX2H] | 乙硫醇、半胱氨酸 | 二甲硫醚 | |
| 苯环 | c1ccccc1 | 甲苯 | 吡啶 | |
| 任意六元芳环 | a1aaaaa1 | 吡啶、苯 | 环己烷 | |
| Lipinski 氢键供体 | [#7,#8;!H0] | 每个 OH 和 NH(统计匹配数) | 乙醚 | |
| Lipinski 氢键受体 | [#7,#8] | 每个 N 和 O 原子 | 丙烷 | |
| 五元环中的原子 | [r5] | 环戊烷、呋喃 | 环己烷 | |
| 不在环中的碳 | [C;R0] | 丙烷 | 环己烷 |
暂不支持:用 $( ) 写的递归 SMARTS 和用点号分隔的查询。查询中的 @ 等立体标记会被忽略。
例题
对乙酰氨基酚 vs 非那西丁
非那西丁在对乙酰氨基酚的 OH 处换成了乙氧基,乙酰苯胺核心相同。
Tanimoto 0.846,Dice 0.917:相似
吗啡 vs 可待因
可待因是吗啡的酚 OH 被甲基化后的产物,多了一个醚键。
Tanimoto 0.944:非常相似
布洛芬 vs 萘普生
两者都是 2-芳基丙酸,但萘普生含甲氧基萘,而不是异丁基苯。
Tanimoto 0.711:相似
苯 vs 环己烷
两者都是六元碳环,但芳香键和脂肪族键产生的片段不同。
Tanimoto 0.000:不相似
哪些 NSAIDs 是羧酸?
在 9 个示例药物上查询 [CX3](=O)[OX2H1]。
9 个中有 6 个匹配:布洛芬、萘普生、酮洛芬、氟比洛芬、双氯芬酸、阿司匹林
对乙酰氨基酚中的 Lipinski 供体
查询 [#7,#8;!H0] 找到酰胺 N–H 和酚 O–H。
2 个匹配:HBD = 2
常见错误
- 比较不同指纹得出的分数。Tanimoto 为 0.6 对不同指纹意义不同。同一个项目请始终使用同一种方法。
- 以为立体异构体会得到不同分数。对映体和 E/Z 异构体的分数都是 1.000,因为指纹忽略立体化学。
- 把相似性当成活性。相似的结构往往(但并非总是)有相似的活性。改动一个原子就可能使药物失效。
- 查询中忘记考虑氢。
C(=O)O也会匹配酯。羧酸的 OH 请用[OX2H1]。 - 误用小写字母。在 SMARTS 中,
c是芳香碳,C是脂肪族碳。C1CCCCC1不匹配苯。 - 用中性查询搜索带电形式。写成
[O-]的羧酸根不匹配[OX2H1]。列表中有盐时,两种形式都要搜索。
想比较自己画的类似物?打开免费的在线结构编辑器 MolDraw,使用“比较分子”插件,在草图旁对类似物评分和对齐。
打开 MolDraw 编辑器常见问题
什么是 Tanimoto 相似度?
Tanimoto 相似度用于比较两个分子指纹,公式为 c / (a + b − c),其中 a 和 b 分别是两个分子中置位的比特数,c 是两者共同置位的比特数。取值范围从 0(毫无共同之处)到 1(指纹完全相同)。
Tanimoto 值为多少时说明两个分子相似?
在本工具的 512 位片段指纹上,0.85 及以上为非常相似,0.70 至 0.85 为相似,0.50 至 0.70 为中等相似,低于 0.30 为不相似。阈值取决于所用指纹,因此只应比较同一方法得出的分数。
Tanimoto 和 Dice 相似度有什么区别?
两者使用相同的比特计数。Dice 为 2c / (a + b),对共同比特赋予更大权重,因此总是大于或等于 Tanimoto。当 a = 74、b = 41、c = 41 时,Tanimoto 为 0.554,Dice 为 0.713。
为什么两个对映体的 Tanimoto 分数为 1?
指纹只记录原子和化学键的连接方式,而不记录 3D 排列。L-丙氨酸和 D-丙氨酸的片段相同,所以分数为 1.000。当两个输入仅在立体化学上不同时,工具会提示你。
什么是 SMARTS?
SMARTS 是一种基于 SMILES、用于描述子结构的模式语言。例如,[CX3](=O)[OX2H1] 表示一个有三个连接的碳原子,与 O 以双键相连并与 OH 以单键相连,即羧酸。
可以用 SMILES 字符串作为子结构查询吗?
可以。SMILES 查询会匹配任何含有这些原子和化学键的分子。查询不要求氢原子,因此 C(=O)O 既匹配羧酸也匹配酯。需要区分氢原子时,请使用 [OH] 或 [OX2H1]。
如何用 SMARTS 统计 Lipinski 氢键供体数?
用 [#7,#8;!H0] 搜索。它匹配每个至少连有一个氢的氮或氧原子,匹配数就是供体数。对乙酰氨基酚得到 2:酰胺 NH 和酚 OH。
这个相似性与子结构搜索工具免费吗?
免费。无需注册,在网页浏览器中运行。你的分子不会被上传。
相关化学工具
最后更新: