SMILES

**簡化分子線性輸入規範**（英語：Simplified molecular input line entry specification，簡稱 SMILES），是一種用 ASCII 字串明確描述分子結構的規範。

SMILES 字串可以被大多數分子編輯軟體匯入並轉換成二維圖形或分子的三維模型。轉換成二維圖形可以使用 Helson 的「結構圖生成演算法」（Structure Diagram Generation algorithms）。

最初的 SMILES 規範始於 1980 年代，已經被多次修改和擴充。 2007 年，開源化學社群開發了一個名為 OpenSMILES 的開放標準。

## 歷史

最初的 SMILES 規範由 David Weininger 在 1980 年代在德盧斯的 USEPA 大陸生態部實驗室發起。 感謝他們在早期開發中的貢獻：「Gilman Veith 和 Rose Russo (USEPA) 以及 Albert Leo 和 Corwin Hansch (Pomona College) 支援這項工作，以及 Arthur Weininger (Pomona; Daylight CIS) 和 Jeremy Scofield (Cedar River Software, Renton, WA) 為系統編程提供幫助。」 環境保護署資助了開發 SMILES 的初始專案。 

它已被其他人或組織修改和擴充，例如日光化學資訊系統（Daylight Chemical Information Systems）。 2007 年，Blue Obelisk 開源化學社群開發了一個名為「OpenSMILES」的開放標準。其他字串符號表示方法包括 Wiswesser Line Notation (WLN)、 ROSDAL 和 SLN (Tripos Inc)。

2006 年 7 月，IUPAC 引入了 InChI 作為公式表示的標準。 通常認為 SMILES 比 InChI 具有更易於人類可讀的優點；它還擁有廣泛的軟體支援基礎，具有廣泛的理論支援（例如圖論）。

## 術語

術語 SMILES 是指用於編碼分子結構的行符號，特定實例應嚴格稱為 SMILES 字串。然而，術語 SMILES 也常用於指單個 SMILES 字串和多個 SMILES 字串。確切的含義通常從上下文中顯而易見。當應用於 SMILES 時，術語「規範」和「異構」可能會導致一些混淆。這些術語描述了 SMILES 字串的不同屬性，並不相互排斥。

可以為一個分子通常具有多個同樣有效的 SMILES 字串。例如， `CCO` 、 `OCC` 和 `C(O)C` 都指定了乙醇的結構。為給定的分子生成相同的 SMILES 字串的演算法已經被開發完畢；這些演算法在許多可能的字串中只選擇其中一個。依賴於用於生成它的規格化演算法，這個 SMILES 對於每個結構都是唯一的，這個 SMILES 被稱為規範 SMILES。這些演算法首先將 SMILES 轉換為分子結構的內部表示；然後演算法會檢查該結構並生成唯一的 SMILES 字串。下面是一些包含用於生成規範 SMILES 的演算法的工具，包括 Daylight Chemical Information Systems、 OpenEye Scientific Software 、 MEDIT 、 Chemical Computing Group 、 MolSoft LLC 和 Chemistry Development Kit 的演算法。規範 SMILES 的一個常見應用是索引並確保資料庫中分子的唯一性。

描述 CANGEN 演算法的原始論文聲稱可以為表示分子的圖形生成唯一的 SMILES 字串，但該演算法在許多簡單情況下都失敗了（例如 cuneane 、1,2 - 二環丙基乙烷）並且被認為不能使用正確的方法典型地表示圖形。 目前沒有跨商業軟體的系統比較來測試這些軟體套件中是否存在此類缺陷。

SMILES 符號允許指定四面體中心的組態和雙鍵幾何形狀。這些是不能僅由連接性指定的結構特徵，因此編碼此資訊的 SMILES 稱為異構 SMILES。這些規則的一個顯著特徵是它們允許對手性進行嚴格的部分說明。術語異構 SMILES 也適用於指定異構物的 SMILES。

## 基於圖的定義

就基於圖的計算過程而言，SMILES 是通過深度優先遍歷分子結構式的中遇到的符號節點獲得的字串。首先去除圖內的氫原子，然後打開環以將其變成生成樹。在環中斷的地方插入包含數字後綴的標籤（相同數字的節點表示該兩個原子相連）。括號用於表示支鏈。

生成的 SMILES 形式取決於選擇：

* 選擇打破週期的化學鍵
* 用於深度優先遍歷的起始原子
* 序列法則

## SMILES 定義為上下文無關語言的字串

從形式語言理論的角度來看，SMILES 是一個詞。 SMILES 可以用上下文無關的解析器解析。基於相似分子具有相似特性的化學資訊學的主要原理，這種表示的使用一直用於預測生化特性（包括毒性和生物降解性）。預測模型實現了句法圖型識別方法（涉及定義分子距離） ，以及基於統計圖型識別的更強大的方案。 

## 典範 SMILES

典範 SMILES 保證每個化學分子只有一個 SMILES 表達式。典範 SMILES 常用於分子資料庫的索引。

## 記法

### 原子

原子由方括號中的化學元素的標準縮寫表示，例如 `[Au]` 表示金。在以下原子的常見情況下可以省略括號：

1. 屬於 B 、 C 、 N 、 O 、 P 、 S 、 F 、 Cl 、 Br 或 I 的「有機子集」
2. 沒有形式電荷
3. 具有 SMILES 化合價模型所暗示的氫的數量（通常是它們的正常化合價，但對於 N 和 P，它是 3 或 5，對於 S，它是 2、4 或 6）
4. 是正常同位素
5. 不是手性中心

所有其他元素必須用括號括起來，並明確顯示電荷和氫。例如，水的 SMILES 可以寫為 `O` 或 `[OH2]` 。氫也可以寫成一個單獨的原子；水也可以寫成 `[H]O[H]` 。

使用括號時，如果括號中的原子與一個或多個氫鍵合，則添加符號 `H` ，如果大於 1，則添加氫原子數，然後添加符號 `+` 表示正電荷或 `-` 表示負電荷。例如， `[NH4+]` 表示銨 ( NH+ 
4 ）。如果有多個電荷，通常寫為數字；但是，也可以根據離子的電荷多次重複該符號：對於鈦 (IV) Ti 4+ ，可以寫為 `[Ti+4]` 或 `[Ti++++]` 。因此，氫氧根陰離子（OH− 
 ) 由 `[OH-]` 表示，水合氫陽離子 (H3O+) 是 `[OH3+]` ，鈷 (III) 陽離子 (Co 3+ ) 是 `[Co+3]` 或 `[Co+++]` 。

### 化學鍵

使用其中一個符號表示鍵 `. - = # $ : / \` 。

除非另有說明，否則脂肪族化合物原子之間的鍵被假定為單鍵，並且通過 SMILES 字串中的鄰接來暗示。雖然單鍵可以寫為 `-` ，但通常省略。例如，乙醇的 SMILES 可以寫成 `CCO` 、 `CC-O` 或 `C-CO` ，但通常寫成 `CCO` 。

雙鍵、三鍵和四鍵分別用符號 `=` 、 `#` 和 `$` 表示，如 SMILES `O=C=O` （二氧化碳）、 `C#N` （氰化氫 HCN）和 `[Ga+]$[As-]` （砷化鎵）。

另一種鍵是「不成鍵」，用 表示 `.`, 表示兩個部分沒有粘合在一起。例如，氯化鈉水溶液可寫為 `[Na+].[Cl-]` 顯示解離。

芳香味化合物的芳香鍵可以用 `:` ，見下面的 § 環。

與雙鍵相鄰的單鍵可以使用 `/` 或 `\` 表示立體化學構型；見下面的 § 立體化學。

### 環

為了形成無環結構，需要在所有環的任意點（某些特定的選擇可能會使結果更簡明）打斷。添加數字標籤以顯示不相鄰原子之間的連接性。

例如，環己烷和二惡烷可以分別寫成 `C1CCCCC1` 和 `O1CCOCC1` 。我們將第二個環的順序編為 2，例如，十氫化萘可以寫為 `C1CCCC2C1CCCC2` 。

這是一些符合 SMILES 規範但很少用的環號編碼方法：

* 環號的順序可以是任意的
* 在環結束之後可以重用環號
* 可以使用 0 作為環號

但是這通常會使 SMILES 更難閱讀。例如，環己基環己烷通常寫為 `C1CCCCC1C2CCCCC2` ，但也可能寫為 `C0CCCCC0C0CCCCC0` 。

單個原子後的多個數字表示多個閉環鍵。例如，十氫化萘的另一種 SMILES 符號是 `C1CCCC2CCCCC12`，其中最終的碳同時結束了環 1 和環 2。

**如果需要兩位數的環號，則標籤前面有 `%` ，因此 `C%12` 是環 12 的單個閉環鍵。**

環號前面可以有一個化學鍵符號用以指示閉環鍵的類型。例如，環丙烯通常寫作 `C1=CC1`，但如果選擇雙鍵作為閉環鍵，則可以寫作 `C=1CC1`、`C1CC=1` 或 `C=1CC=1`（儘量使用 `C1=CC1`)。不可以對同一個閉環鍵指定多種類型，因此 `C=1CC-1` 是非法的。

> Ring-closing bonds may not be used to denote multiple bonds. For example, `C1C1` is not a valid alternative to `C=C` for ethylene. _However, they may be used with non-bonds;_ `C1.C2.C12` is a peculiar but legal alternative way to write propane, more commonly written `CCC`.
> 
> 

閉環鍵不能用於表示多重鍵。例如乙烯， `C1C1` 不是 `C=C` 的有效替代品。~~_但它們可以與不成鍵一起使用_~~； `C1.C2.C12` 是一種特殊但合法的書寫丙烷的替代方式，更常見的是書寫 `CCC` 。

選擇與支鏈相鄰的斷環點可以得出更簡單的 SMILES 形式。例如，1,2 - 環己二醇最簡單地寫為 `OC1CCCCC1O`。選擇不同的位置斷環會產生一個分支結構。

### 芳香環

諸如苯之類的芳香環可以寫成以下三種形式之一：

1. 具有交替單鍵和雙鍵的凱庫勒式 `CC=CC=C1`
2. 使用芳香鍵符號 `:` ，例如 `C1:C:C:C:C:C1`
3. 最常見的是，通過分別以小寫形式 `b`、`c`、`n`、`o`、`p` 和 `s` 編寫構成 B、C、N、O、P 和 S 原子。

在最後一種情況下，允許未指出兩個芳香原子之間的鍵是芳香鍵。因此，苯、吡啶和呋喃可以分別用 SMILES `c1ccccc1` 、 `n1ccccc1` 和 `o1cccc1` 。

在吡咯中發現的與氫鍵合的芳香氮必須表示為 `[nH]` ；因此咪唑用 SMILES 表示法寫為 `n1c[nH]cc1` 。

當芳族原子彼此單鍵時，必須明確顯示單鍵。例如聯苯 `c1ccccc1-c2ccccc2` 。這是需要單鍵符號 `-` 的少數情況之一。（實際上大多數 SMILES 軟體可以正確推斷出兩個環之間的鍵不能是芳香的，因此會接受非標準形式 `c1ccccc1c2ccccc2` 。 )

用於生成規範 SMILES 的 Daylight 和 OpenEye 演算法在處理芳香性方面有所不同。

### 分支

支鏈用括號描述，如丙酸的 `CCC(=O)O` 和氟仿的 `FC(F)F` 。括號內的第一個原子和括號內的基團之後的第一個原子都與相同的分支點原子鍵合。化學鍵符號必須出現在括號內；外部（例如： `CCC=(O)O` ）無效。

取代的環可以用環中的分支點書寫，如編碼 3 和 4 - 氰基苯甲醚異構物的 SMILES `COc(c1)cccc1C#N` （見圖片 （頁面存檔備份，存於網際網路檔案館））和 `COc(cc1)ccc1C#N` （見圖片）所示。以這種方式為替代環編寫 SMILES 可以使它們更易於閱讀。

可以按任何順序編寫分支。例如，二氟一氯一溴甲烷可寫為 `FC(Br)(Cl)F` 、 `BrC(F)(F)Cl` 、 `C(F)(Cl)(F)Br` 等。通常，如果較簡單的分支出現在最前面，則 SMILES 表單最容易閱讀，最後的未加括號的部分是最複雜的。這種重新排列的唯一警告是：

* 如果環號被重複使用，它們將根據它們在 SMILES 字串中出現的順序進行配對。可能需要進行一些調整以保持正確的配對。
* 如果指定了立體化學，則必須進行調整。

不需要括號的一種分支形式是閉環鍵。在合適的位置斷環能減少括號的數量。例如，甲苯通常寫成 `Cc1ccccc1` 或 `c1ccccc1C` ，避免寫成 `c1cc(C)ccc1` 或 `c1cc(ccc1)C` 時所需的括號。

### 立體化學

SMILES 允許但不要求對立體異構物進行規範。

雙鍵周圍的組態使用字元 `/` 和 `\` 指定，以顯示與雙鍵相鄰的定向單鍵。例如， `F/C=C/F` （見圖示 （頁面存檔備份，存於網際網路檔案館））是反 - 1,2 - 二氟乙烯的一種表示，其中氟原子位於雙鍵的相對兩側（如圖所示），而 `F/C=C\F` （見圖示）是順 - 1,2 - 二氟乙烯的一種可能表示形式，其中氟位於雙鍵的同一側。

鍵方向符號總是以至少兩個為一組出現，其中第一個是任意的。也就是說， `F\C=C\F` 與 `F/C=C/F` 相同。當存在交替的單雙鍵時，基團大於兩個，中間方向符號與兩個雙鍵相鄰。例如，(2,4)- 己二烯的常見形式寫作 `C/C=C/C=C/C` （見圖示 （頁面存檔備份，存於網際網路檔案館））。

作為一個更複雜的例子， β- 胡蘿蔔素有一個很長的單鍵和雙鍵交替的主鏈，可以寫成 `CC1CCC/C(C)=C1/C=C/C(C)=C/C=C/C(C)=C/C=C/C=C(C)/C=C/C=C(C)/C=C/C2=C(C)/CCCC2(C)C` （見圖示 （頁面存檔備份，存於網際網路檔案館））。

手性碳的順序由 `@` 或 `@@` 指定。按從字串左側到右側的順序以序列法則考慮四個鍵。從第一個鍵的角度看向碳，其他三個是順時針 `@@` 或逆時針 `@`（因為 `@` 符號本身是逆時針螺旋）。

例如，考慮丙胺酸。它的 SMILES 形式之一是 `NC(C)C(=O)O` ，更完整地寫為 `N[CH](C)C(=O)O` 。 L-丙胺酸，更常見的一種對映異構物，寫作 `N[C@@H](C)C(=O)O` （見描述 （頁面存檔備份，存於網際網路檔案館））。從氮碳鍵看，氫 ( `H` )、甲基 ( `C` ) 和羧酸鹽 ( `C(=O)O` ) 基團順時針出現。 D - 丙胺酸可以寫成 `N[C@H](C)C(=O)O` （見描述 （頁面存檔備份，存於網際網路檔案館））。

雖然在 SMILES 中指定分支的順序通常並不重要，但在這種情況下它很重要；交換任何兩個組需要反轉手性指標。如果分支顛倒，因此丙胺酸寫為 `NC(C(=O)O)C` ，那麼組態也會顛倒； L-丙胺酸寫為 `N[C@H](C(=O)O)C` （見描述 （頁面存檔備份，存於網際網路檔案館））。其他寫法包括 `C[C@H](N)C(=O)O`, `OC(=O)[C@@H](N)C` 和 `OC(=O)[C@H](C)N` 。

第一個鍵通常出現在手性碳原子的左側，但如果 SMILES 以手性碳開頭，例如 `C(C)(N)C(=O)O` ，那麼所有四個鍵都是右邊。但最先出現的（在這種情況下是 `[CH]` 鍵）被用作對以下三個進行排序的參考： L - 丙胺酸也可以寫作 `[C@@H](C)(N)C(=O)O` 。

SMILES 規範包括對 `@` 符號的詳細說明，以指示更複雜的手性中心周圍的立體化學，例如雙三角錐形分子構型。

### 同位素

同位素的指定數字等於原子符號前的整數同位素品質。其中一個原子是碳 14 的苯寫成 `[14c]1ccccc1` ，氘代氯仿寫成 `[2H]C(Cl)(Cl)Cl` 。

### 例子

為了說明具有超過 9 個環的分子，請考慮頭孢他汀 -1， 一種具有經驗式 C 54 H 74 N 2 O 10 的甾體 13 環吡𠯤，從印度洋半脊索動物 Cephalodiscus _gilchristi_ 中分離出來：

從圖中最左邊的甲基開始：

　
: `CC(C)(O1)C[C@@H](O)[C@@]1(O2)[C@@H](C)[C@@H]3CC=C4[C@]3(C2)C(=O)C[C@H]5[C@H]4CC[C@@H](C6)[C@]5(C)Cc(n7)c6nc(C[C@@]89(C))c7C[C@@H]8CC[C@@H]%10[C@@H]9C[C@@H](O)[C@@]%11(C)C%10=C[C@H](O%12)[C@]%11(O)[C@H](C)[C@]%12(O%13)[C@H](O)C[C@@]%13(C)CO`

注意 `%` 出現在 9 以上的閉環標籤索引前面；見 § 環上面的 § 環。

### SMILES 的其他例子

SMILES 符號在 Daylight Chemical Information Systems 提供的 SMILES 理論手冊中進行了廣泛的描述，並提供了許多說明性範例。 Daylight 的描繪實用程式為使用者提供了檢查他們自己的 SMILES 範例的方法，並且是一種有價值的教育工具。

## 發展

**SMARTS** 是 SMILES 基礎之上的改進版。SMARTS 中增加的一點是，它允許使用萬用字元表示原子和化學鍵。因此，它在化合物資料庫中廣泛用於結構的電腦化搜尋。這種搜尋的機理是先透過輸入的 SMILES 式重構化學式，再搜尋子圖的同形；而不是直接經由 SMILES 式的對比完成的。

**USMILES**（有時成為廣義 SMILES），這種「Unique SMILES」是日光化學資訊系統有限公司關於結構的規範表達。不管內部原子的編碼順序如何，藉由這種演算法總可以得到關於化合物規範的、無歧義的、唯一的描述（化學結構表達的唯一性，可參見國際化合物標識）。

SMIRKS 是「reaction SMILES」的超集和「reaction SMARTS」的子集，是用於指定反應變換的線符號。反應擴充的一般語法是 `REACTANT > AGENT > PRODUCT` （不帶空格），其中任何欄位可以留空或填充以點 ( `.` ) 分隔的多個分子，以及其他依賴於基本語言的描述。原子還可以用數字標識（例如 `[C:1]` ) 用於對映，例如在 . 

SMILES 對應於離散的分子結構。然而，許多材料都是大分子，它們太大（而且通常是隨機的），無法方便地為其生成 SMILES。 BigSMILES 是 SMILES 的擴充，旨在為大分子提供有效的表示系統。 

## 轉換

可以使用結構圖生成 (SDG) 演算法將 SMILES 轉換回二維表示。 這種轉換並不總是明確的。通過能量最小化方法實現向三維表示的轉換。有許多可下載和基於 Web 的轉換實用程式。

## 其他記法及比較

其他著名的線性記法包括維斯威歇線性表示式（**W**iswesser **L**ine **N**otation，WLN），ROSDAL 和 SLN。最近國際純粹與應用化學聯合會推薦國際化合物標識作為標準的分子式表達式。

然而普遍認為，SMILES 與 InChI 相比更具有 (對人來說的) 可讀性；而且很多軟體都支援 SMILES，其中不少軟體都具有圖論等方面的理論基礎。

## 另請參照

* SMILES 任意目標規範 (SMARTS)，SMILES 的擴充，用於規範子結構查詢
* SYBYL Line Notation ，另一種行符號
* 國際化學品識別碼 (InChI)， IUPAC 的 SMILES 替代品
* Molecular Query Language ，一種查詢語言，也允許數值屬性，例如物理化學值或距離
* 化學開發套件，二維布局和轉換軟體
* OpenBabel, JOELib, OELib (轉換)

## 外部連結

* SMILES 指南： http://www.daylight.com/smiles/index.html （頁面存檔備份，存於網際網路檔案館）
* 線上 SMILES 式二維圖片轉換軟體
  * https://web.archive.org/web/20011202023429/http://www.daylight.com/daycgi/depict
  * https://web.archive.org/web/20041015134803/http://cactus.nci.nih.gov/services/gifcreator/ converter with more controls
* 能生成 SMILES 的分子編輯器軟體： http://www.molinspiration.com/jme/index.html （頁面存檔備份，存於網際網路檔案館）
* SMILES 分析： http://www.dalkescientific.com/writings/diary/archive/ （頁面存檔備份，存於網際網路檔案館）
* 自由 SMILES 轉換軟體： http://www.acdlabs.com/download/chemsk.html （頁面存檔備份，存於網際網路檔案館）
* SMILES 式三維模型轉換軟體： http://jmol.sourceforge.net/ （頁面存檔備份，存於網際網路檔案館）
* JSDraw （頁面存檔備份，存於網際網路檔案館）能生成 SMILES
* SMILES Depictor