简化分子线性输入规范

简化分子线性输入规范（，简称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字符串。例如，codice_1、codice_2和codice_3都指定了乙醇的结构。为给定的分子生成相同的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表达式，常用于分子数据库的索引。
记法.
原子.
原子由方括号中的化学元素的标准缩写表示，例如codice_4表示金。在以下原子的常见情况下可以省略括号：
所有其他元素必须用括号括起来，并明确显示电荷和氢。例如，水的 SMILES 可以写为codice_5或codice_6 。氢也可以写成一个单独的原子；水也可以写成codice_7 。
使用括号时，如果括号中的原子与一个或多个氢键合，则添加符号codice_8 ，如果大于 1，则添加氢原子数，然后添加符号codice_9表示正电荷或codice_10表示负电荷。例如， codice_11表示铵( ）。如果有多个电荷，通常写为数字；但是，也可以根据离子的电荷多次重复该符号：对于钛(IV) Ti 4+ ，可以写为codice_12或codice_13 。因此，氢氧根阴离子（ ) 由codice_14表示，水合氢阳离子 (H3O+)是codice_15 ，钴(III)阳离子(Co 3+ )是codice_16或codice_17 。
化学键.
使用其中一个符号表示键codice_18 。
除非另有说明，否则脂肪族化合物原子之间的键被假定为单键，并且通过 SMILES 字符串中的邻接来暗示。虽然单键可以写为codice_10 ，但通常省略。例如，乙醇的 SMILES 可以写成codice_1 、 codice_21或codice_22 ，但通常写成codice_1 。
双键、三键和四键分别用符号codice_24 、 codice_25和codice_26表示，如 SMILES codice_27 （二氧化碳）、 codice_28 （氰化氢HCN）和codice_29 （砷化镓）。
另一种键是“不成键”，用 表示codice_30, 表示两个部分没有粘合在一起。例如，氯化钠水溶液可写为codice_31显示解离。
芳香味化合物的芳香键可以用codice_32 ，见下面的。
与双键相邻的单键可以使用codice_33或codice_34表示立体化学构型；见下面的。
环.
为了形成无环结构，需要在所有环的任意点（某些特定的选择可能会使结果更简明）打断。添加数字标签以显示不相邻原子之间的连接性。
例如，环己烷和二𫫇烷可以分别写成codice_35和codice_36。我们将第二个环的顺序编为2，例如，十氢化萘可以写为codice_37。
这是一些符合SMILES规范但很少用的环号编码方法：
但是这通常会使SMILES更难阅读。例如，环己基环己烷通常写为codice_38，但也可能写为codice_39。
单个原子后的多个数字表示多个闭环键。例如，十氢化萘的另一种SMILES符号是codice_40，其中最终的碳同时结束了环1和环2。
如果需要两位数的环号，则标签前面有codice_41，因此codice_42是环12的单个闭环键。
环号前面可以有一个化学键符号用以指示闭环键的类型。例如，环丙烯通常写作codice_43，但如果选择双键作为闭环键，则可以写作codice_44、codice_45或codice_46（尽量使用codice_43)。不可以对同一个闭环键指定多种类型，因此codice_48是非法的。Ring-closing bonds may not be used to denote multiple bonds. For example, codice_49is not a valid alternative to codice_50 for ethylene. "However, they may be used with non-bonds;" codice_51is a peculiar but legal alternative way to write propane, more commonly writtencodice_52.闭环键不能用于表示多重键。例如乙烯，codice_49不是codice_50的有效替代品。但它们可以与不成键一起使用；codice_51是一种特殊但合法的书写丙烷的替代方式，更常见的是书写codice_52。
选择与支链相邻的断环点可以得出更简单的SMILES形式。例如，1,2-环己二醇最简单地写为codice_57。选择不同的位置断环会产生一个分支结构。
芳香环.
诸如苯之类的芳香环可以写成以下三种形式之一：
在最后一种情况下，允许未指出两个芳香原子之间的键是芳香键。因此，苯、吡啶和呋喃可以分别用 SMILES codice_67 、 codice_68和codice_69 。
在吡咯中发现的与氢键合的芳香氮必须表示为codice_70 ；因此咪唑用 SMILES 表示法写为codice_71 。
当芳族原子彼此单键时，必须明确显示单键。例如联苯codice_72。这是需要单键符号codice_10的少数情况之一。（实际上大多数 SMILES 软件可以正确推断出两个环之间的键不能是芳香的，因此会接受非标准形式codice_74)
用于生成规范 SMILES 的 Daylight 和 OpenEye 算法在处理芳香性方面有所不同。
分支.
支链用括号描述，如丙酸的codice_75和氟仿的codice_76 。括号内的第一个原子和括号内的基团之后的第一个原子都与相同的分支点原子键合。化学键符号必须出现在括号内，外部（例如： codice_77 ）无效。
取代的环可以用环中的分支点书写，如编码 3 和 4-氰基苯甲醚异构体的 SMILES codice_78 （见图片 ）和codice_79 （见图片）所示。以这种方式为替代环编写 SMILES 可以使它们更易于阅读。
可以按任何顺序编写分支。例如，二氟一氯一溴甲烷可写为codice_80、codice_81 、codice_82等。通常，如果较简单的分支出现在最前面，则 SMILES 表单最容易阅读，最后的未加括号的部分是最复杂的。这种重新排列的唯一警告是：
不需要括号的一种分支形式是闭环键。在合适的位置断环能减少括号的数量。例如，甲苯通常写成codice_83或codice_84 ，避免写成codice_85或codice_86时所需的括号。
立体化学.
SMILES 允许但不要求对立体异构体进行规范。
双键周围的配置使用字符codice_33和codice_34指定，以显示与双键相邻的定向单键。例如， codice_89 （见图示 ）是反-1,2-二氟乙烯的一种表示，其中氟原子位于双键的相对两侧（如图所示），而codice_90 （见图示）是顺-1,2-二氟乙烯的一种可能表示形式，其中氟位于双键的同一侧。
键方向符号总是以至少两个为一组出现，其中第一个是任意的。也就是说， codice_91与codice_89相同。当存在交替的单双键时，基团大于两个，中间方向符号与两个双键相邻。例如，(2,4)-己二烯的常见形式写作codice_93 （见图示 ）。
作为一个更复杂的例子， β-胡萝卜素有一个很长的单键和双键交替的主链，可以写成codice_94 （见图示 ）。
手性碳的顺序由codice_95或codice_96指定。按从字符串左侧到右侧的顺序以顺序规则考虑四个键。从第一个键的角度看向碳，其他三个是顺时针codice_96或逆时针codice_95（因为codice_95符号本身是逆时针螺旋）。
例如，考虑丙氨酸。它的 SMILES 形式之一是codice_100 ，更完整地写为codice_101 。 丙氨酸，更常见的一种对映异构体，写作codice_102 （见描述 ）。从氮碳键看，氢 ( codice_8 )、甲基 ( codice_104 ) 和羧酸盐 ( codice_105 ) 基团顺时针出现。 -丙氨酸可以写成codice_106 （见描述 ）。
虽然在 SMILES 中指定分支的顺序通常并不重要，但在这种情况下它很重要；交换任何两个组需要反转手性指标。如果分支颠倒，因此丙氨酸写为codice_107 ，那么配置也会颠倒； 丙氨酸写为codice_108 （见描述 ）。其他写法包括codice_109, codice_110和codice_111 。
第一个键通常出现在手性碳原子的左侧，但如果 SMILES 以手性碳开头，例如codice_112 ，那么所有四个键都是右边。但最先出现的（在这种情况下是codice_113键）被用作对以下三个进行排序的参考： -丙氨酸也可以写作codice_114 。
SMILES 规范包括对codice_95符号的详细说明，以指示更复杂的手性中心周围的立体化学，例如双三角锥形分子构型。
同位素.
同位素的指定数字等于原子符号前的整数同位素质量。其中一个原子是碳14的苯写成codice_116 ，氘代氯仿写成codice_117 。
例子.
为了说明具有超过 9 个环的分子，请考虑头孢他汀 -1， 一种具有经验式C 54 H 74 N 2 O 10的甾体 13 环吡嗪，从印度洋半脊索动物Cephalodiscus "gilchristi"中分离出来：
从图中最左边的甲基开始：
注意codice_41出现在 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”的子集，是用于指定反应变换的线符号。反应扩展的一般语法是codice_120 （不带空格），其中任何字段可以留空或填充以点 ( codice_30 ) 分隔的多个分子，以及其他依赖于基本语言的描述。原子还可以用数字标识（例如codice_122 ) 用于映射，例如在 .
SMILES 对应于离散的分子结构。然而，许多材料都是大分子，它们太大（而且通常是随机的），无法方便地为其生成 SMILES。 BigSMILES 是 SMILES 的扩展，旨在为大分子提供有效的表示系统。 
转换.
可以使用结构图生成 (SDG) 算法将SMILES转换回二维表示。 SciFinder、ChemDraw均可实现SMILES和结构式的相互转换。
其他记法及比较.
其他著名的线性记法包括维斯威歇线性表示式（Wiswesser Line Notation，WLN），ROSDAL和SLN。最近国际纯粹与应用化学联合会推荐国际化合物标识作为标准的分子式表达式。
然而普遍认为，SMILES与InChI相比更具有(对人来说的)可读性；而且很多软件都支持SMILES，其中不少软件都具有图论等方面的理论基础。