---
title: "Tanimoto 相似度與 SMARTS 子結構搜尋詳解 | MolDraw 部落格"
url: https://www.moldraw.com/zh-hant/blog/tanimoto-similarity-substructure-search-guide.html
description: "分子指紋以及 Tanimoto 與 Dice 公式如何為兩個分子評分、0.85 分意味著什麼，以及如何用 SMARTS 搜尋分子，附免費工具。"
lang: zh-Hant
publisher: Scidart Academy
generated: 2026-10-26
---
# Tanimoto 相似度與 SMARTS 子結構搜尋詳解，附免費工具

發布：2026 年 10 月 19 日 · 作者：Scidart Academy · 閱讀時間：約 7 分鐘

![兩個藥物分子並排顯示，下方是一個 Tanimoto 相似度刻度條](https://www.moldraw.com/blog/thumbs/tanimoto-similarity-substructure-search-guide.webp)

Tanimoto 相似度衡量兩個分子共有多少個指紋位元。

**簡答：**Tanimoto 相似度比較兩個分子的指紋：T = c / (a + b − c)，其中 a 與 b 是各分子中設為 1 的位元數，c 是兩者共有的位元數，取值範圍為 0 到 1。開啟[分子相似度與子結構搜尋](https://www.moldraw.com/zh-hant/tools/free-chem-tools/molecular-similarity-substructure-search.html)工具，輸入兩個 SMILES 並按 **比較**。阿斯匹靈與水楊酸得分 0.554（中等相似）。進行模式搜尋時，可以用 SMARTS，例如以 `[CX3](=O)[OX2H1]` 表示羧酸。

## 關鍵術語，一句話解釋

| 分子指紋 | 一串二進位位元。當分子含有某種結構片段時，對應的位元為 1。 |
| --- | --- |
| Tanimoto 係數 | c / (a + b − c)。共有位元數除以任一分子中設為 1 的全部位元數。範圍 0 到 1。 |
| Dice 係數 | 2c / (a + b)。給共有位元雙倍權重。總是至少與 Tanimoto 一樣高。 |
| 子結構 | 較大分子中一組相連的原子與化學鍵，例如苯環或 COOH 基團。 |
| SMARTS | 一種以 SMILES 為基礎 的模式語言，用於描述帶有原子與化學鍵條件的子結構。 |
| 共同子結構 | 兩個分子中都存在的最大相連原子與化學鍵集合。 |

## 分子指紋的工作原理

電腦無法直接比較兩張結構圖，所以要把每個分子轉換為指紋。常見的有三類：

- **片段字典指紋**每個預定義片段對應一個位元，例如與氧相連的羰基。MACCS 鍵（166 位元）就是這樣工作的。
- **路徑指紋**把每條不超過設定長度的原子線性路徑雜湊到某個位元。
- **環形指紋**（ECFP、Morgan）把每個原子周圍半徑為 2 或 3 個鍵的環境雜湊到某個位元。

MolDraw 工具使用 **512 位元片段字典指紋**，與[分子比較外掛](https://www.moldraw.com/zh-hant/blog/compare-molecules-plugin-tanimoto-similarity.html)相同。阿斯匹靈在 512 個位元中有 74 個設為 1，水楊酸有 41 個。較大的分子通常設為 1 的位元較多。

指紋記錄哪些原子相互鍵結，但不記錄楔形鍵或 3D 形狀。這就是 L-丙胺酸與 D-丙胺酸得分為 1.000 的原因。

## Tanimoto 公式與計算範例

設 a 為分子 A 中為 1 的位元數，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. 開啟[分子相似度與子結構搜尋](https://www.moldraw.com/zh-hant/tools/free-chem-tools/molecular-similarity-substructure-search.html)頁面。預設開啟的是**相似度**分頁。
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 排序

點選**範例：NSAID 類藥物 vs 布洛芬**。萘普生排第一（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 中設為 1 的位元數（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 個。

### 相似度高是否意味著兩個分子活性相同？

不一定。相似的分子往往具有相似的活性，這就是相似度搜尋被用來尋找類似物的原因。但一個小改動，比如一個甲基或一個掌性中心，就可能使活性消失。請把分數當作參考，而不是證據。

## 相關工具

[分子相似性與子結構搜尋](https://www.moldraw.com/zh-hant/tools/free-chem-tools/molecular-similarity-substructure-search.html) [胜肽與 DNA 序列轉結構](https://www.moldraw.com/zh-hant/tools/free-chem-tools/peptide-dna-sequence-to-structure.html) [官能基辨識工具](https://www.moldraw.com/zh-hant/tools/free-chem-tools/functional-group-identifier.html) [Lipinski 五規則計算器](https://www.moldraw.com/zh-hant/tools/free-chem-tools/lipinski-rule-calculator.html) [類藥性計算器](https://www.moldraw.com/zh-hant/tools/free-chem-tools/druglikeness-calculator.html) [TPSA 計算器](https://www.moldraw.com/zh-hant/tools/free-chem-tools/tpsa-calculator.html) [SMILES 表示法指南](https://www.moldraw.com/zh-hant/tools/free-chem-tools/smiles-notation-guide.html)

## 相關指南

[胜肽與 DNA 序列轉結構指南](https://www.moldraw.com/zh-hant/blog/peptide-dna-sequence-to-structure-guide.html) [「比較分子」外掛](https://www.moldraw.com/zh-hant/blog/compare-molecules-plugin-tanimoto-similarity.html) [ChEMBL 生物活性查詢](https://www.moldraw.com/zh-hant/blog/chembl-plugin-bioactivity-lookup.html) [pKa 與微物種外掛](https://www.moldraw.com/zh-hant/blog/pka-plugin-protonation-states-microspecies.html) [所有免費 MolDraw 化學工具](https://www.moldraw.com/zh-hant/blog/moldraw-all-free-chemistry-tools-guide.html)

最後更新：2026 年 10 月 19 日
