一、SMARTS简介
-
是什么
SMARTS(SMiles ARbitrary Target Specification)是一种用于描述分子模式和属性的语言。SMILES所有的符号和属性在SMARTS中同样适用,因此它也是SMILES的延伸。此外,SMARTS还包括了逻辑操作符和额外的分子描述符,后文会一一介绍。
-
能做什么
SMARTS可以从不同程度来概括和表示结构模式。举个例子:
甲烷的SMILES可以用"C"或"[CH4]"表示。
而"[CH4]"在SMARTS中,高度特异地表示与甲烷一致的结构,即只能匹配一个带有4个氢的脂肪族碳原子。
而"C"在SMARTS中特异程度较低,可以表示带有任意数量氢的脂肪族碳原子,比如乙烷、乙烯、环戊烷。
二、原子属性
SMARTS |
匹配结构 |
说明 |
[+1] |
带有一个正电荷的原子 |
SMILES对电荷、氢、同位素、键、手性等描述方式,在SMARTS中都可以兼容。一个"+"表示"+1",两个"++"表示"+2" |
[a] |
带有芳香性的原子 |
"a"表示任何带有芳香性质的原子 |
[A] |
带有脂肪族属性的原子 |
"A"表示任何带有脂肪族性质的原子 |
[#6] |
原子序数为6的原子(c或C) |
"#<number>"表示序数为<number>的原子,无论是脂肪族还是芳香族 |
[R2] |
在两个环中的原子 |
"R<number>"表示在<number>元环中的原子,默认{R}为在任何环中的原子 |
[r5] |
在五元环中的原子 |
"r<number>"表示<number>元环中的原子 |
[v4] |
4价原子 |
"v<number>"表示任何含有键的数量为<number>的原子。另外"="表示双键,"#"表示三键 |
[X2] |
与两个原子链接的原子 |
"X<number>"表示任何与<number>个原子相连的原子(包括氢原子) |
[H] |
氢原子 |
一个氢原子(通常也叫一个显式氢,explicit hydrogen)具有一些特殊的性质[H+],[2H],[H][H]等。[H+]和[2H]含义相似 |
[H1] |
与一个氢相连的原子 |
"H<number>"表示任何与<number>个氢(显式或隐式氢)相连的原子。[*H]表示没有氢相连的原子 |
* |
任何原子 |
"*"表示通配原子,匹配任意重原子(非氢原子) |
三、键属性
SMARTS |
匹配结构 |
说明 |
CC |
两个由单键相连接的脂肪碳 |
所有SMILES的键的属性在SMARTS中都可以使用,包括隐式单键、显式单键(-)、双键(=)、三键(#)、芳香键(:) |
[#6]~[#6] |
两个由任意键相连的碳 |
"~"表示通配键 |
[#6]@[#6] |
两个在同一个环中相连的碳 |
"@"表示在同一个环中 |
[F/?[#6]=C/Cl] |
氟原子通过"/"("/"指定了顺反异构构型)或未指明的键与碳原子相连(比如可以匹配到"F/C=C/Cl"或"FC=C/Cl",不能匹配到"F\C=C/Cl") |
"?"表示"或不确定",还可以和手性描述符"@"一起使用 |
四、逻辑操作符
SMARTS |
匹配结构 |
说明 |
!c |
非芳香的碳 |
"!"表示"非" |
[N,#8] |
匹配脂肪族氮或匹配一个氧 |
","表示"或",优先级高于"与"(";"),低于另一个"与"("&") |
[#7,C&+O,+1] or [#7,C+O,+1] |
氮原子或中性脂肪碳原子或带一个正电荷的原子 |
"&"表示"与"(优先级高),是默认的逻辑操作符,可以省略 |
[#7,C;+0,+1] |
氮或脂肪碳,且不带或带一个正电荷 |
";"也表示"与",但优先级低 |
五、递归SMARTS
SMARTS |
匹配结构 |
说明 |
[$(O);$(CC)] |
一个与脂肪氧相连的原子,或一个连接有两个脂肪碳的原子 |
"$<SMARTS>"表示匹配周围具有某种结构的原子 |
[$([CX3]=[OX1]),$([CX3+]-[OX1-])] |
与一个羰基相连的原子,或相对合理的结构 |
|
[$([A]aaO);$([A]aaaN)] |
芳环上位于氧的邻位,氮的间位的原子 |
|
六、组合匹配
SMARTS |
匹配结构 |
说明 |
[#8].[#8] |
匹配两个氧(例如O=O, OCCO, O.CCO) |
"."表示无需连接 |
([#8].[#8]) |
在同一个结构中匹配两个氧(例如O=O, OCCO,无法匹配O.CCO) |
可以在SMARTS外加圆括号,表示括号内的结构需要在同一组分中出现 |
([#8]).([#8]) |
在不同的结构中匹配两个氧(例如O.CCO,无法匹配O=O, OCCO) |
可以使用多个圆括号,表示需要在不同的组分中进行匹配 |
七、反应SMARTS
SMARTS |
匹配结构 |
说明 |
[#6]=,:[#6] |
由一个双键或芳香键连接的的碳 |
分子SMARTS(没有">"符号)可以对任意反应组分(反应物、试剂或产物)中进行匹配 |
>>[#6]=,:[#6] |
产物中碳由一个双键或芳香键连接 |
反应SMARTS(带有">"符号)不能用于分子的匹配 |
反应SMARTS还剩下一些比较难理解,等明白了再补上。
参考DAYLIGHT的SMARTS介绍。英文版在这里。
原文件在这里