SMARTS表达式

SMARTS是SMILES的扩展,用于描述分子模式和性质,尤其在子结构搜索和反应模板中表现出强大功能。它包含原子基元、键基元,支持逻辑算符和递归表达式,能灵活匹配复杂结构。例如,[OH]c1ccccc1可以用来查找含苯酚的分子。SMARTS还允许通过逻辑运算符组合表达式,如[!C;R]匹配非脂肪族且在环上的原子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SMARTS表达式

本文为转载文章,来自于https://zhuanlan.zhihu.com/p/477094703, 源英文文章来自于https://www.daylight.com/dayhtml/doc/theory/theory.smarts.html

简介

SMARTS表达式是Daylight公司对SMILES表达式(相信大家都很熟悉,在ChemDraw里也可以直接使用)的一个扩展,其意思为SMiles ARbitrary Target Specification,是一种描述分子模式和性质的语言。所有的SMILES表达式都可以在SMARTS中正常使用,同时在SMARTS体系中加入了逻辑算符和更多的分子描述符,这就使得其在子结构搜索、构建反应模板等方面非常强大,就像正则表达式(部分规则也与正则表达式相同)一样,可以匹配分子中的任意结构。

举个例子,如果想要在分子数据库中搜索含有苯酚的结构,就可以使用SMARTS字符串[OH]c1ccccc1(这同时也是一个正确的SMILES字符串)使用SMARTS就可以实现灵活、高效的子结构搜索。

在SMILES语言中,有两种基本的符号类型:原子和键。使用这些SMILES符号,可以表示一个以节点和边构成的图,通过说明每个节点代表什么类型的原子,每个边代表什么类型的键,就可以完整表达一个分子。

以上的逻辑在SMARTS中同样适用,只不过在SMARTS中增加了逻辑算符和特殊的原子、键的符号,使得结构的表达更加灵活、通用。例如在SMARTS原子符号中,[C,N] 表示这个原子是脂肪族的C原子或是脂肪族的N原子;在键符号中,波浪线”~“可以匹配任意类型的键。

原子基元 Atomic Primitives

SMARTS提供了一系列能够描述原子性质的基元符号。下表列出了SMARTS中特有的符号(所有SMILES中的原子符号在SMARTS中都是正确的)。表格中,<n> 表示一个整数,<c> 表示手性类。

注意,原子基元H有两种含义,一是表示氢元素本身,二是表示性质。例:[H] 表示氢原子,[*H2] 表示任意一个带有两个氢的原子。

符号符号意义原子性质要求默认值(不加参数)
*通配符任何原子
a芳香族芳香性原子
A脂肪族脂肪族原子
D<n>有<n>个显示键连的原子(与隐式氢相连的不算)有1个显示键连的原子
H<n>总的氢原子数有<n>个相连的氢的原子有1个相连的氢的原子
h<n>隐式氢原子数有<n>个隐式氢的原子至少有1个隐式氢的原子
R<n>环的关系在<n>个最小环中的原子任何在环上的原子
r<n>环的大小在<n>元最小环中的原子任何在环上的原子
v<n>键价总键价为<n>的原子 (包括隐式氢,双键为2,三键为3)总键价为1的原子
X相连与<n>个原子相连的原子(包括隐式氢)与1个原子相连的原子
x环相连与<n>个环相连的原子至少与1个环相连的原子
-<n>负电荷有-<n>个电荷的原子有1个负电荷的原子 --表示有2个负电荷,以此类推)
+<n>正电荷有+<n>个电荷的原子有1个正电荷的原子(++表示有2个正电荷,以此类推)
#n原子序数原子序数为的原子
@手性逆时针
@@手性顺时针
@<c><n>手性手性类手性(看不懂)
@<c><n>?手性或未指定手性<c><n>或未指定
<n>相对原子质量相对原子质量为的原子未指明原子质量

注:

  1. 隐式氢:正常情况下用SMARTS储存分子不会显示氢原子,其以隐式氢的形式存在,我们可以通过一些操作加上氢原子,使其变成显示氢。
  2. 最小环:例如萘(两个苯并环)可以看成是一个十元环。但最小环将其看作两个六元环的并环,其中有两个碳同时在两个环上即 [R2]

例:

C脂肪族碳原子
c芳香性碳原子
a芳香性原子
[#6]原子序数为6的原子,即碳原子
[Ca]钙原子
[++]带两个正电荷的原子
[R]任何一个在环上的原子
[X3]有3个键连的原子(包括隐式氢)
[v3]总键价为3的原子(包括隐式氢)
CC@HO匹配手性(从C端看H-F-O呈逆时针)
CC@?HO匹配手性(包括未指定手性)即可以匹配到CC@HO,也可以匹配到CCHO,不能匹配到CC@@HO。

键基元 Bond Primitives

符号键属性要求
-匹配单键(脂肪族)
/表示方向"上"
\表示方向"下"
/?匹配"上"或是未指定
\?匹配"下"或是未指定
=双键
#三键
:芳香键
~任意键(通配符)
单键或芳香性键

:双键两侧的结构分别用符号/和\表示,例如,F/C=C/F 表示反二氟乙烯,它的两个氟原子位于双键的两侧。

F/C=C\F 表示顺二氟乙烯,它的两个氟原子位于双键的同一侧。

例:

C任何脂肪族碳原子
cc任何一对相连的芳香碳
c:c由芳香键连接的芳香碳
c-c单键连接的芳香族碳(如联苯)

逻辑算符

原子和键基元可以通过使用逻辑运算符组合成表达式。在下表中,e 表示任何一个原子或键的表达式。逻辑运算符按优先级递减的顺序列出(优先级高的运算符先求值)。

符号表达式意义
感叹号!e1非e1
与符号e1&e2e1和e2(高优先级)
逗号e1,e2e1或e2
分号e1;e2e1和e2(低优先级)

所有非基元的原子表达式都必须括在方括号中。默认操作是&(高优先级"and"),也就是说,两个相邻的没有插入逻辑运算符的表达式必须都为真,才能使表达式(或子表达式)为真。

例:

[CH2]含两个氢的脂肪族碳(亚甲基碳)
[!C;R]非脂肪族碳以及在环上的原子
[!C;!R0]同上("!R0"表示不在零元环上的原子)
[n;H1]芳香族氮原子连接一个氢,如吡咯氮
[n&H1]同上
[nH1]同上
[c,n&H1]所有芳香族碳或芳香族氮原子连接一个氢
[X3&H0]总共有三个键连且没有氢的原子
[c,n;H1](芳香族碳原子或芳香族氮原子)并且只有一个氢
[Cl]所有氯原子
[35*]所有相对原子质量为35的原子
[35Cl]相对原子质量为35的氯同位素
[F,Cl,Br,I]任意一个卤素

递归SMARTS

任何SMARTS表达式都可以用这种形式从我们想要研究的原子开始编写SMARTS来定义原子环境。

S M A R T S SMARTS SMARTS

这样的定义可以被认为是原子性质。这些表达式可以与其他原子基元以相同的方式使用(也可以嵌套)。"$"表示匹配周围具有某种结构的原子,例如:

*C连接甲基(或亚甲基)碳的原子
*CC与乙基碳相连的原子
[ ( ∗ C ) ; (*C); (C);(*CC)]同时在上述两种环境的结构(匹配CCC)

下面的例子说明了这种表达式的作用,它导出了芳环上正对氧和间对氮的甲基碳的表达式。

CaaO碳和氧处于邻位
CaaaN碳和氮处于间位
Caa(O)aN碳和氧处于邻位并且与氮处于间位(但只能匹配到二号位是氧,三号位是氮的情况)
Ca(aO)aaN碳和氧处于邻位并且与氮处于间位(但只能匹配到二号位是氧,五号位是氮的情况)
C[$(aaO);$(aaaN)]碳和氧处于邻位并且与氮处于间位(可以匹配到所有情况)

组合匹配

SMARTS可能包含圆括号,可用于对点断开连接的片段进行分组。这个分组操作符使得SMARTS能够表达更强大的组件查询。通常,一组括号可以包括任何合法的SMARTS表达式。其中的两个或多个表达式可以组合成更复杂的SMARTS

一组括号中的所有原子和键表达式必须在目标的单个组件中匹配。

SMARTSSMILES能否使用SMARTS匹配SMILES
C.CCCCC可以,"."表示两边的结构无需连接
(C.C)CCCC可以,在SMARTS外加圆括号,表示括号内的结构需要在同一组分中出现
(C).(C)CCCC不可以,使用多个圆括号,表示需要在不同的组分中进行匹配
(C).(C)CCCC.CCCC可以
(C).CCCCC可以
(C).(C).CCCCC.CCCC可以,前两个碳要在不同的组分中,后一个可以匹配任意一个碳

使用圆括号可以帮助我们区别分子内/分子间反应

C(=O)O.OCC>>C(=O)OCC.O匹配酯化反应
(C(=O)O).(OCC)>>C(=O)OCC.O匹配分子间酯化反应
(C(=O)O.OCC)>>C(=O)OCC.O匹配分子内酯化反应

反应查询

一个Reaction Query可以由可选的反应物,试剂和产物组成,它们之间用">"隔开。一个Reaction Query的部分与目标反应的对应部分相匹配。注意,用一个Molecule Query去匹配一个反应是合理的。如果这个分子的SMARTS式与目标反应的任意一部分匹配,则可以成功匹配。实际上用一个Molecule Query去匹配一个目标反应就是一个未指明SMARTS作用的匹配。

QueryTargetMatches
C>>CC>>CN2
>C>CC>>CN0
>>CCC>>CN1
CCC>>CN3

我们可以在原子后面加上":"和数字来标记该原子,如果原子做了标记,就会与对应的被标记的原子匹配,不会匹配到没有标记的原子上。如果在Query中未做标记,那么Target中的标记会被忽略。(原文中接下来举的例子相当晦涩,我们用另一个例子来说明)

SMARTS匹配结构备注
[#6]=,:[#6]与一个双键或者芳香性键相连的碳分子SMARTS式,即没有">"的SMARTS表达式可以匹配反应SMARTS中的任意部分(反应物、试剂、产物)
>>[#6]=,:[#6]产物中的与一个双键或芳香性键相连的碳反应SMARTS,即有">"的SMARTS表达式不会匹配分子
[C:1]>>[C:1]对反应的碳原子做标记原子如果做了标记,就会与对应的被标记的原子匹配,不会匹配到没有标记的原子上
[C:1]>>C反应碳未成对的标记是无效的
[C:1][C:1]>>[C:1]多次标记反应碳SMARTS map classes inter-relate reactants to products but don’t intra-relate reactants or products. (Although query reactants have the same class, they can match target reactants of different classes.)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值