【简化分子线性输入规范】
Infobox file format|name=SMILES|extension=.smi|mime=chemical/x-daylight-smiles|owner=|genre=化学文件格式|container for=|contained by=|extended from=|extended to=|creatorcode=
环丙沙星的 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表示金。在以下原子的常见情况下可以省略括号：
# 属于B 、 C 、 N 、 O 、 P 、 S 、 F 、 Cl 、 Br或I的“有机子集”
# 没有形式电荷
# 具有 SMILES 化合价模型所暗示的氢的数量（通常是它们的正常化合价，但对于 N 和 P，它是 3 或 5，对于 S，它是 2、4 或 6）
# 是正常同位素
# 不是手性中心
所有其他元素必须用括号括起来，并明确显示电荷和氢。例如，水的 SMILES 可以写为O或OH2 。氢也可以写成一个单独的原子；水也可以写成HOH 。
使用括号时，如果括号中的原子与一个或多个氢键合，则添加符号H ，如果大于 1，则添加氢原子数，然后添加符号+表示正电荷或-表示负电荷。例如， NH4+表示铵( + ）。如果有多个电荷，通常写为数字；但是，也可以根据离子的电荷多次重复该符号：对于钛(IV) Ti 4+ ，可以写为Ti+4或Ti++++ 。因此，氢氧根阴离子（- ) 由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。选择不同的位置断环会产生一个分支结构。
=== 芳香环 ===
诸如苯之类的芳香环可以写成以下三种形式之一：
# 具有交替单键和双键的凯库勒式CC=CC=C1
# 使用芳香键符号: ，例如C1:C:C:C:C:C1
# 最常见的是，通过分别以小写形式b、c、n、o、p和s编写构成 B、C、N、O、P 和 S 原子。
在最后一种情况下，允许未指出两个芳香原子之间的键是芳香键。因此，苯、吡啶和呋喃可以分别用 SMILES c1ccccc1 、 n1ccccc1和o1cccc1 。
在吡咯中发现的与氢键合的芳香氮必须表示为nH ；因此咪唑用 SMILES 表示法写为n1cnHcc1 。
当芳族原子彼此单键时，必须明确显示单键。例如联苯c1ccccc1-c2ccccc2 。这是需要单键符号-的少数情况之一。（实际上大多数 SMILES 软件可以正确推断出两个环之间的键不能是芳香的，因此会接受非标准形式c1ccccc1c2ccccc2 。 )
用于生成规范 SMILES 的 Daylight 和 OpenEye 算法在处理芳香性方面有所不同。
将 3-氰基苯甲醚 表示为COc(c1)cccc1C#N
=== 分支 ===
支链用括号描述，如丙酸的CCC(=O)O和氟仿的FC(F)F 。括号内的第一个原子和括号内的基团之后的第一个原子都与相同的分支点原子键合。化学键符号必须出现在括号内；外部（例如： CCC=(O)O ）无效。
取代的环可以用环中的分支点书写，如编码 3 和 4-氰基苯甲醚异构体的 SMILES COc(c1)cccc1C#N （ 见图片 date=20220418133806 ）和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时所需的括号。
=== 立体化学 ===
反-1,2-二氟乙烯
SMILES 允许但不要求对立体异构体进行规范。
双键周围的配置使用字符/和\指定，以显示与双键相邻的定向单键。例如， F/C=C/F （ 见图示 date=20220418141730 ）是反-1,2-二氟乙烯的一种表示，其中氟原子位于双键的相对两侧（如图所示），而F/C=C\F （ 见图示）是顺-1,2-二氟乙烯的一种可能表示形式，其中氟位于双键的同一侧。
键方向符号总是以至少两个为一组出现，其中第一个是任意的。也就是说， F\C=C\F与F/C=C/F相同。当存在交替的单双键时，基团大于两个，中间方向符号与两个双键相邻。例如，(2,4)-己二烯的常见形式写作C/C=C/C=C/C （ 见图示 date=20220418141728 ）。
β-胡萝卜素，突出显示了 11 个双键
作为一个更复杂的例子， β-胡萝卜素有一个很长的单键和双键交替的主链，可以写成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 （ 见图示 date=20220418141728 ）。
手性碳的顺序由@或@@指定。按从字符串左侧到右侧的顺序以顺序规则考虑四个键。从第一个键的角度看向碳，其他三个是顺时针@@或逆时针@（因为@符号本身是逆时针螺旋）。
L-丙氨酸
例如，考虑丙氨酸。它的 SMILES 形式之一是NC(C)C(=O)O ，更完整地写为NCH(C)C(=O)O 。 L-丙氨酸，更常见的一种对映异构体，写作NC@@H(C)C(=O)O （ 见描述 date=20220418141729 ）。从氮碳键看，氢 ( H )、甲基 ( C ) 和羧酸盐 ( C(=O)O ) 基团顺时针出现。 D -丙氨酸可以写成NC@H(C)C(=O)O （ 见描述 date=20220418141729 ）。
虽然在 SMILES 中指定分支的顺序通常并不重要，但在这种情况下它很重要；交换任何两个组需要反转手性指标。如果分支颠倒，因此丙氨酸写为NC(C(=O)O)C ，那么配置也会颠倒； L-丙氨酸写为NC@H(C(=O)O)C （ 见描述 date=20220418141729 ）。其他写法包括CC@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的苯写成14c1ccccc1 ，氘代氯仿写成2HC(Cl)(Cl)Cl 。
=== 例子 ===
为了说明具有超过 9 个环的分子，请考虑头孢他汀 -1， 一种具有经验式C 54 H 74 N 2 O 10的甾体 13 环吡嗪，从印度洋半脊索动物Cephalodiscus gilchristi中分离出来：
缩略图
从图中最左边的甲基开始：
CC(C)(O1)CC@@H(O)C@@1(O2)C@@H(C)C@@H3CC=C4C@3(C2)C(=O)CC@H5C@H4CCC@@H(C6)C@5(C)Cc(n7)c6nc(CC@@89(C))c7CC@@H8CCC@@H%10C@@H9CC@@H(O)C@@%11(C)C%10=CC@H(O%12)C@%11(O)C@H(C)C@%12(O%13)C@H(O)CC@@%13(C)CO
注意%出现在 9 以上的闭环标签索引前面；见环上面的环。
=== SMILES 的其他例子 ===
SMILES 符号在 Daylight Chemical Information Systems 提供的 SMILES 理论手册中进行了广泛的描述，并提供了许多说明性示例。 Daylight 的描绘实用程序为用户提供了检查他们自己的 SMILES 示例的方法，并且是一种有价值的教育工具。
== 发展 ==
SMARTS是SMILES基础之上的改进版。SMARTS中增加的一点是，它允许使用通配符表示原子和化学键。因此，它在化合物数据库中广泛用于结构的计算机化搜索。这种搜索的机理是先-{zh-cn:通过;zh-tw:透过}-输入的SMILES式重构化学式，再搜索子图的同形；而不是直接-{zh-cn:通过;zh-tw:经由}-SMILES式的对比完成的。
USMILES（有时成为广义SMILES），这种“Unique SMILES”是日光化学信息系统有限公司关于结构的规范表达。不管内部原子的编码顺序如何，-{zh-cn:通过;zh-tw:借由}-这种算法总可以得到关于化合物规范的、无歧义的、唯一的描述（化学结构表达的唯一性，可参见国际化合物标识）。
SMIRKS 是“reaction SMILES”的超集和“reaction SMARTS”的子集，是用于指定反应变换的线符号。反应扩展的一般语法是REACTANT > AGENT > PRODUCT （不带空格），其中任何字段可以留空或填充以点 ( . ) 分隔的多个分子，以及其他依赖于基本语言的描述。原子还可以用数字标识（例如C:1 ) 用于映射，例如在 .
SMILES 对应于离散的分子结构。然而，许多材料都是大分子，它们太大（而且通常是随机的），无法方便地为其生成 SMILES。 BigSMILES 是 SMILES 的扩展，旨在为大分子提供有效的表示系统。
== 转换 ==
可以使用结构图生成 (SDG) 算法将 SMILES 转换回二维表示。 这种转换并不总是明确的。通过能量最小化方法实现向三维表示的转换。有许多可下载和基于 Web 的转换实用程序。
== 其他记法及比较 ==
其他著名的线性记法包括维斯威歇线性表示式（Wiswesser Line Notation，WLN），ROSDAL和SLN。最近国际纯粹与应用化学联合会推荐国际化合物标识作为标准的分子式表达式。
然而普遍认为，SMILES与InChI相比更具有(对人来说的)可读性；而且很多软件都支持SMILES，其中不少软件都具有图论等方面的理论基础。
== 另请参照 ==
* SMILES 任意目标规范(SMARTS)，SMILES 的扩展，用于规范子结构查询
* SYBYL Line Notation ，另一种行符号
* 国际化学品标识符(InChI)， IUPAC的 SMILES 替代品
* Molecular Query Language ，一种查询语言，也允许数值属性，例如物理化学值或距离
* 化学开发套件，二维布局和转换软件
* OpenBabel, JOELib, OELib (转换)