第二章 · 2.7

2.7 化学反应的表示与变换:Reaction SMARTS

Representing Chemical Reactions
反应是分子集合到分子集合的变换。本节先立反应 SMILES 的三段式骨架与试剂的角色,再以原子映射定义反应中心——键级变化的键集合,并讨论映射缺失时的自动补齐;在此之上引入反应模板与 Reaction SMARTS:通配图模式写成图重写规则,模板半径决定特化与泛化的取舍;最后回到 Corey 的逆合成分析,把模板反向应用组织成 AND/OR 搜索树,说明组合爆炸的根源及其对第 4 章生成模型的意义。

2.7.1 从分子到反应:三段式的文本表示

前六节处理的都是静态分子。化学反应把一组分子变成另一组分子:键断裂、键生成、原子重新组合。要让机器处理反应,先要给它一种文本。2.2 节的 SMILES 解决了单个分子;按角色把若干 SMILES 拼装起来,就得到反应 SMILES(reaction SMILES):三段式“反应物>试剂>产物”,两个大于号把一条反应切成三栏(Daylight 理论手册)。同一栏内的多个分子以点号分隔,与混合物的写法一致。

三栏的划分标准是键的变化。反应物(reactants)指发生键变化的分子——至少有一个原子卷入断裂或生成的键;试剂(agents)只提供环境:溶剂、催化剂、酸碱,箭头上方写的那些名字。图 2.7-1 是全文标注的酯化:乙酸与甲醇缩合生成乙酸甲酯与水,酸催化剂放在中栏,两侧点号各分隔两个组分。一个语法细节要分清:严格的三段式中栏只能容纳分子 SMILES——硫酸、吡啶的分子式放得进去,heat、80C 这类条件文本放进去会解析失败(实测如此);温度与操作条件应作为反应的附加数据保存,图上箭头旁的“加热”是教学示意图的标注,不是字符串的一部分。试剂栏可以为空(写作“>>”),此时反应只剩净变换的骨架。

乙酸与甲醇在酸催化下酯化:三栏布局,各原子带映射编号,断裂键与生成键高亮 反应物 reactants 试剂 agents 产物 products > > C C O O :6 :1 :2 :3 断 点号 · 分隔同侧多组分 C O :5 :4 H⁺ Δ(加热) 催化剂与条件 不发生键变化 不进入原子守恒 C C O O C :6 :1 :2 :4 :5 成 O H H :3 反应中心 = 键级变化的键集合:C:1–O:3 断裂(灰虚线)、C:1–O:4 生成(深色粗线),其余键原样保持。 同一编号即同一原子:O:3 由酸羟基氧转为水的氧,O:4 由甲醇氧转入酯基;中栏的 H⁺ 不进入编号。
图 2.7-1 酯化反应的三段式与原子映射。左栏为反应物(乙酸与甲醇,点号分隔),中栏为试剂(酸催化与加热,不发生键变化),右栏为产物(乙酸甲酯与水)。编号 :1–:6 标出“同一原子”在箭头两侧的去向;深色描边的原子为卷入反应中心的原子。键的变化只有两条:C:1–O:3 断裂、C:1–O:4 生成。

三段式只编码结构骨架,编码不了别的东西:计量比、速率、温度区间、立体选择性与机理细节都不在其中(立体化学可用 @ 记号局部表达,但反应数据很少完备到这一步)。同样要认清:“反应物/试剂”的边界是标注约定而非物理——数据库里两者经常混排,把角色理顺本身就是反应数据清洗的第一道工序,2.6 节的问题在反应层面重演。USPTO 专利反应集是这类数据的最大来源,其角色划分的噪声是公认的局限(Coley et al., 2017)。

2.7.2 原子映射:反应数据真正携带的信息

仅凭三段式,机器只知道“这些分子进了、那些分子出了”,不知道谁变成了谁。补上这一环的是原子映射(atom mapping):给反应物与产物中“同一个原子”标注同一个整数,映射号写在原子方括号内(如 [CH3:1])。它是纯粹的标注层——抹掉全部映射号,反应的化学含义分毫未变;但有了映射,键的变化可以逐条导出,图 2.7-1 中酸羟基氧与水的氧同为 O:3、甲醇的氧转入酯基成为 O:4,去向一目了然。

定义

键编辑集合(反应中心的简化定义)。已映射反应 R → P 中,键级发生变化的键的全体:任取两个带映射号的原子 a、b,若它们在 R 与 P 中的键级不同——无键变有键、单键变双键均算——这条键属于该集合:断裂的键 ∪ 生成的键 ∪ 变键级的键。

\[RC(R \to P) = { (a, b) : ord_{R}(a, b) ≠ ord_{P}(a, b) }\]
(2.7-1)a、b 为带映射号的原子对;ord(x, y) 为两原子间键的键级,无键记 0。键级 1 → 0 即断裂,0 → 1 即生成。这是“基于映射的键编辑集合”:在原子对应已定、氢不作显式顶点的常用表示下,它准确提取成键、断键与变键级;但化学变化不止这些——乙酸加氨的质子转移中重原子键级零变化,变的是氢数与形式电荷;2-丁烯的 E/Z 异构化键级不变,变的是立体信息。完整的反应变化宜记作 ΔE = (ΔB, ΔH, Δq, Δs, …)——键、氢数、电荷、立体各自的差异,取哪些分量由任务决定(RDChiral 的模板提取就比较氢数、电荷、芳香性等多项原子属性)。不能把某个表示选择下没记到的变化,说成反应没有发生。

换个角度说:无映射的反应只有“表观”,映射给出“对应”。历史文献与专利几乎从不给出映射,自动补齐于是成为反应信息学的第一道工序。两条主要路线:结构对齐——在反应物与产物之间找最大公共子结构,保留的骨架直接对号,剩余原子再按连接度配对;数据驱动——RXNMapper 一类工具以 Transformer 注意力从大规模反应数据中直接学出原子对应(Schwaller et al., 2021)。两条路线都有失败模式,映射错误并不罕见。

注记

映射号是标注,不是物理。原子并没有编号,映射是人对“同一原子”的认定。认定错了——本该给氧的编号标给了氮——式 (2.7-1) 算出的键编辑集合就全错。影响的边界要分清:模板提取、反应中心标注、局部环境表示这些逐原子使用对应的方法被直接污染;不直接用映射的分子指纹差值(下段)受影响是间接的。另外,“一致地重新编号”不改变对应关系;“删除映射号”不改变两侧结构,却丢失原子来源——Daylight 文档用不同原子对应能区分不同变换解释的案例说明,删除映射并非对反应信息毫无影响。使用公开反应数据前,先问映射从哪里来。

反应变化的概念也撑起了反应的向量化,但表示路径不止一条。Schneider 等(2015)的差异指纹并不逐原子使用映射:分别计算产物侧与反应物侧的原子对指纹再相减(RDKit 的实现同路,可选并入试剂指纹),用于大规模反应分类与相似性检索——实测对同一条酯化保留、删除甚至交换映射号,默认差异指纹完全相同,而键编辑集合早已改变。依赖原子对应的另一路是直接建模反应中心:Jin、Coley、Barzilay 与 Jaakkola(2017)用 Weisfeiler–Lehman 差分网络在底物图上定位反应中心、枚举候选产物再评分排序,把“找反应中心”变成可学习的任务(用模板枚举加神经网络排序的姊妹工作见 Coley et al., 2017)。这条线索在第 4 章正面展开。

2.7.3 反应模板:从个例到广义变换

单条反应只是个例,合成化学的知识以“一类反应”存在:酯化、酰胺化、偶联。把个例归纳成类,靠的是反应模板(reaction template)。从大量已映射反应出发:取出反应变化位点,连同指定半径的邻近环境,再把具体原子泛化为查询条件——碳写作 [#6](原子序数 6,不分芳香与否),带两个氢的氮写作 [N;H2]。这些片段是构建官能团查询的基础条件,不是官能团的完整定义:[#6] 同时匹配脂肪碳与芳香碳(C 才限定非芳香、c 限定芳香);[N;H2] 也锁不定中性伯胺——实测它还命中酰胺氮、磺酰胺氮,甚至质子化的二甲胺 C[NH2+]C(两个碳取代基)。识别“中性伯胺”须再加连接度与电荷谓词,并按任务排除酰胺、磺酰胺环境。数百万条专利反应可以抽出数万到数十万条特化模板(量级随提取半径与归并口径而变——Segler 的规则提取工作得到的两套规则库分别约 1.7 万与 30 万条,采用了不同的环境范围与频率阈值),归并后常用的泛化模板在千条量级。

定义

反应模板。从已映射反应中提取的广义变换:反应中心 + 给定半径 r 的邻近环境,写成“左侧模式 → 右侧模式”的图重写规则。半径 r 给定后,一条模板压缩“这一类反应”;数据集中出现过的全部模板,构成该数据集化学操作的字典。

模板的粒度由半径决定(图 2.7-2、表 2.7-1)。方向上,半径增大增加局部上下文、缩小匹配范围;幅度却取决于模板里还保留了哪些元素、离去基、氢数与电荷约束——半径 0 若锁死了离去基,也覆盖不了“一切酰基转移”;半径 2 若环境稀疏,也未必复现文献先例。真实提取流程还不一定是等半径截取:RDChiral 会按预定义官能团扩展局部环境,两个都标称“半径 1”的流程未必生成同样粒度的模板。特化与泛化是一组权衡,半径只是其中最直观的旋钮。

同一个酰化中心在半径 0 与半径 1 两种模板粒度下的形态与覆盖面差异 半径 0:仅反应中心 C O O N 离去 进入 [CX3](=[OX1])[OX2] >> [CX3](=[OX1])[NX3] 覆盖:广——同型酰基转移大多命中(仍受元素与离去基约束); 误配:高——酸酐、碳酸酯、氨基甲酸酯一并命中。 半径 1:中心 + 一层邻居 #6 C O O N #6 [#6][C](=O)O . [#6]N >> [#6][C](=O)N[#6] 覆盖:窄——无相应碳—氮邻接环境者出局; 误配:低——邻居排除不相关底物。 半径每加一环,模板更特化:覆盖收缩、误配下降——粒度是覆盖与精度之间的旋钮。
图 2.7-2 模板提取半径:特化与泛化。同一个酰化中心(C、=O、离去的 O、进入的 N,深色描边),左图只取中心原子,模板成为一切酰基转移的通配规则;右图纳入一层邻居(灰色 #6 节点),模板开始要求“酰基碳连着碳、氮上连着碳”的邻接环境。下方为两种粒度的示意写法。
表 2.7-1模板提取半径的特化—泛化权衡(以酰化模板为例)
提取半径模板内容覆盖面误配风险典型角色
半径 0(仅中心)中心原子与改写的键广(仍受元素、离去基与氢数约束)高:酸酐、碳酸酯、氨基甲酸酯易混入提示“此处有反应”,难以定前体
半径 1(含一层邻居)中心 + 直接键合原子较广:同型底物大多覆盖中:排除无相应官能团组合的底物模板库的常用默认粒度
半径 ≥ 2(多层环境)中心及二层以外环境窄:环境充分时接近逐例低(环境充分时接近先例复现)反应检索与分类、特化路线复用
警示

没有普适最优半径。对固定的数据集与评价目标,可以用验证选出合适的半径;跨任务不存在唯一解:逆合成要覆盖——漏掉一条可行模板即漏解;反应分类要精度——混入异类反应即错分。同一反应集在不同半径下抽出的模板数量可以相差一个量级。评估“基于模板”的方法,先弄清其模板库口径:半径、原子泛化程度、归并规则——口径不同,数字不可比;再看可验证的指标:独立模板数、每条模板支持的反应数、目标命中率、每目标候选数与给定预算下的路线求解表现。

模板因此成为合成可达性(synthetic accessibility)的粗粒度模型:一个分子“可达”,若存在模板链把商业起始原料一步步变换到它。但要收紧推论的方向:当前模板库与搜索过程没有找到路线,只说明该系统暂未找到——模板遗漏、库存范围、表示差异、搜索预算都能造成空手而归,不能直接证明分子难以合成;反过来,找到模板链也只是“已知化学操作可及”,不等于实验可行。相比逐原子打分的经验规则,模板模型直接对应“已知的化学操作”,解释性强;代价同样明确——模板之外的新化学天然不可达,它只能回答已知问题。

2.7.4 Reaction SMARTS:把变换写成图重写规则

模板怎样落到纸面?答案接回 2.3 节的 SMARTS。Reaction SMARTS 把变换写成一对图模式:左侧模式匹配反应物,右侧模式给出产物,两侧以原子映射号对齐保留下来的原子。左侧被匹配而不带映射号的原子是离去基团,产物中不再出现;右侧不带映射号的原子是新建的。这是一条名副其实的图重写规则(graph rewriting rule):在底物图上找到同构于左侧模式的子图,按右侧模式改写边、重建分子。Daylight 规范中的 SMIRKS 是加了严格限制的子集——不止两侧映射原子集一致,还涉及映射原子的数量与类型、显式氢与变化位点上的表达;RDKit 文档则明确把自家的 Reaction SMARTS 与 SMIRKS 区分开。本节代码采用 RDKit 语义,可执行的规则不等于符合 Daylight SMIRKS 规范(Daylight 理论手册;Landrum et al., 2026)。

通配符在规则里扮演 R 基。[#6] 只约束“原子序数 6”——脂肪碳、芳香碳都放行(限定芳香须写 [c]);[#6;R] 进一步要求处于环上;[N;H2] 是“带两个氢的非芳香氮”,如 2.7.3 所述它不是中性伯胺的完整定义。通配的深浅逐原子可调,模板的特化程度因此是连续旋钮,而非二选一——2.7.3 节的半径权衡在原子层面重现。举一个整类反应的简化例子:钯催化的Suzuki 偶联(Suzuki coupling)可写作 [#6:1][B](O)O.[#6:2]Br>>[#6:1][#6:2](钯催化剂与碱入试剂栏):两个碳片段各贡献一个 [#6]——作为碳—碳连接的示例未限定芳基,把它当该反应类的完整定义会放过这一步限定;断裂的 C–Br 与离去的硼酸基不带映射号,新生的 C:1–C:2 是唯一的成键事件。

下面把 2.7.1 节的酯化写成规则并应用于真实底物。六个映射原子中四个是核心(C:1、O:2、O:3、O:4),另两个 [#6] 是 R 基锚点;键的变化只有断裂与生成各一条。

from rdkit import Chem
from rdkit.Chem import AllChem

# 酯化模板(净变换):C:1–O:3(酸羟基)断裂,C:1–O:4(醇氧)生成;
# [#6:6] 与 [#6:5] 是两个 R 基——通配只约束元素,不约束环境
ester = AllChem.ReactionFromSmarts(
    "[#6:6][C:1](=[O:2])[O;H1:3].[#6:5][O;H1:4]"
    ">>[#6:6][C:1](=[O:2])[O:4][#6:5].[OH2:3]")

acid = Chem.MolFromSmiles("CC(=O)O")    # 乙酸:R 基 = CH3
alc  = Chem.MolFromSmiles("CO")         # 甲醇:R 基 = CH3
groups = ester.RunReactants((acid, alc))    # 枚举全部匹配位置的产物组
print(len(groups))                          # 1:单羟基底物只有一组
prods = []
for grp in groups:
    for p in grp:
        Chem.SanitizeMol(p)                 # 引擎产物默认未完成清洗,须显式执行
        prods.append(Chem.MolToSmiles(p))
print(prods)   # ['COC(C)=O', 'O'] —— 乙酸甲酯 + 水;映射原子全部守恒

把底物换成乙醇,同一规则给出乙酸乙酯——通配符放行了模板视野之外的骨架。执行方式的三点纪律。其一,RunReactants 返回的是全部匹配组:多羟基底物会枚举出多个不同单酯(1,2-丙二醇两组),对称底物给出重复组(乙二醇两组同产物),无匹配时返回空元组——直接取 [0] 会任意舍弃候选、保留重复,或在无匹配时下标越界;认真使用的骨架是“检查输入与模板—枚举产物组—逐组结构检查—按规则去重—再排序筛选”。其二,引擎生成的产物默认未完成 sanitization,SanitizeMol 必须显式执行——通过价键校验与“实验上能得到”也是两层:前者是结构合法性,后者是化学可行性。其三,模板编码的是净变换:酯化经四面体中间体多步完成,图重写一步到位——模板是计量关系的账本,不是机理的影片,电子推动另有表示体系;写错的模板会安静地产出错误分子,责任在使用者(Landrum et al., 2026)。

2.7.5 思想源头:Corey 的逆合成分析与 AND/OR 搜索树

模板正向用是预测产物,反向用就是规划合成。思想源头在 Corey:合成设计可以形式化为“目标分子的结构变换”序列(Corey & Wipke, 1969)。1969 年的 Science 论文与 LHASA 程序给出完整设想:图形输入目标分子,计算机沿“感知—策略—变换”循环递归展开候选路线。逆合成分析(retrosynthetic analysis)由此定形:把目标当作可拆解的结构,反复施加切断(disconnection)——逆着一条正向模板断开一根键——得到前体(precursor)集合,直到全部前体落入商业可得的起始原料。切断所得的抽象碎片即合成子(synthon),与前体(真实试剂)相对。

递归展开天然长成一棵 AND/OR 搜索树(AND/OR search tree)(图 2.7-3)。OR 层枚举不同切断——断酯键、换酰源——彼此替代,任选其一即可;AND 层是同一切断要求的前体集合——水杨酸与乙酸酐缺一不可。每个前体又是新目标,递归下探。“找到一条路线”等价于在树中找到一棵解子树:OR 节点任选其一,被选中的 AND 组里每个前体分支都必须解到起始原料——只沿某一条根到叶的路径走不完,因为兄弟前体也要各有着落。(另一种建法把“当前待解决分子的集合”作为状态,此时一条状态路径即一条完整方案,Segler 等的搜索即取此表示;两种表示都成立,只是不能在同一段论述里混用。)

目标分子阿司匹林经两种切断得到前体集合,其中一个前体再递归展开的树形结构 起始原料 中间体 / 目标 OR:任选其一 AND:缺一不可 目标 T:阿司匹林 CC(=O)Oc1ccccc1C(=O)O OR 切断① 酯键:酰基—氧键 水杨酸 可再切断 乙酸酐 起始原料 AND:两个前体齐备才算一条路线 切断② 酯键:酰氯酰源 水杨酸 可再切断(同①) 乙酰氯 起始原料 AND:前体集合共同定义一条路线 递归展开(深度 +1) OR 切断③ Kolbe–Schmitt 羧化 苯酚 CO₂ 两个前体均为起始原料,此分支封叶 搜索树为何爆炸 目标平均 b 个切断(OR),每次平均 k 个前体(AND), 前体又各自成为新目标——宽度逐层乘 bk。 展开规模约 (bk)d;b=3、k=2、d=8:约 1.7×106。
图 2.7-3 逆合成的 AND/OR 搜索树(以阿司匹林为例)。根为目标分子;OR 节点(圆)枚举彼此替代的切断方案;每个 AND 组(虚线框)是同一切断所需的前体集合,缺一不可。本例假设水杨酸不在起始原料清单中,作为中间体递归展开:Kolbe–Schmitt 羧化把苯酚与 CO₂ 接成水杨酸。找到一棵全部叶均为起始原料的解子树(OR 任选、AND 全解),即找到一条合成路线。

为什么爆炸?分支每层相乘,规模按深度指数增长:

\[N(d) \approx (bk)^{d}\]
(2.7-2)b:每个分子的平均候选反应数(OR 分支);k:每个反应的平均前体数(AND 展开);d:反应递归轮数。这是均匀展开模型的数量级估计:(bk)^d 对应最深一层的分子节点数——b=3、k=2、d=8 时为 6⁸ = 1 679 616;全部分子节点合计 Σ(bk)ᵢ = 2 015 539,反应节点另计。它不是精确的总节点数,更不是完整合成路线的条数。具体数值见习题 2.7-3。

浅看分支并不凶:每步三五条候选很平常;乘方立刻失控。三层结构性对策沿用至今。起始原料清单提前终止——节点一旦命中库存即封叶;启发式给切断排序——Corey 的战略键分析,优先断出最大结构简化的键;检索算法控制探索次序——蒙特卡洛树搜索是当代版本(Segler et al., 2018)。1969 年设想的框架,今天仍在同一棵树上做文章。

“反向用模板”这一步本身也有一课,值得用代码钉牢。把上面的 Suzuki 模板左右互换去拆联苯,实测得到 26 组候选,其中 24 组连结构检查都过不了——反向查询里的 [#6:1][#6:2] 省略了键符号,芳香环内部的键也进入匹配范围;把要切断的键明确写成 [c:1]-[c:2](显式单键)后只剩两组有效候选,且互为对称匹配的重复(苯硼酸 + 溴苯)。方向一换,原本用于生成产物的表达就变成查询条件,匹配语义须重新检查——正向能跑的字符串,不保证反向有合适的匹配范围。反向生成的前体也只是候选构造,不是正向实验可行性的证明。另一个概念边界:逆合成变换不只“断一根键”——把醇目标追溯为羰基前体主要是官能团与键级的变化,环化反应的逆向也不止一条断键;单键切断是入门例子,不是逆合成的全部定义。

2.7.6 模板作为先验:通向第 4 章

回到表示的主线。第 4 章会遇上“从头逐原子生成分子”的模型:自回归地逐步生成原子与键。这类模型的结构合法性检查通常不能保证产物可合成。反应模板提供了另一种先验:将搜索限制在模板库覆盖的变换内,有助于控制逆合成树的分支数。模板来自已知反应,但应用到新底物时,产物仍需检查结构、条件和选择性;模板匹配本身不保证实验成功。固定模板库也会限制可探索的反应类型。

当代数据驱动逆合成沿两条路推进:模板推荐——学习“对这个目标该用哪条模板”,把庞大的模板库压缩成排序问题,并配合蒙特卡洛树搜索做路线规划(Segler et al., 2018);无模板模型——绕开模板直接生成前体,如序列到序列模型直接输出前体的 SMILES 序列(Liu et al., 2017;这类方法生成的是序列表示,并非所有无模板方法都直接产出分子图)。产物预测是同一问题的正向姊妹题:在底物图上定位反应中心、枚举候选产物再评分排序(Jin et al., 2017),或以模板枚举加神经网络排序(Coley et al., 2017)。两条路线的较量与融合,留待 4.7 节讨论。

本章至此收束。RDKit 给出的三样东西——分子图、SMILES 与 SMARTS、反应与模板——为后续章节提供基础:第 3 章在分子表示上训练性质模型,第 4 章把生成与反应变换接起来。后续讨论仍会使用原子映射、反应中心、模板与键切断等概念。

习题 2.7-1

已映射的酰胺化反应:[CH3:1][C:2](=[O:3])[OH:4].[CH3:5][NH2:6]>>[CH3:1][C:2](=[O:3])[NH:6][CH3:5].[OH2:4]。(1) 分别列出箭头两侧全部带映射号原子之间的键及键级;(2) 用式 (2.7-1) 求反应中心的键集合;(3) N:6 上的一个氢去了哪里?这对“氢原子是否需要映射”说明什么?

参考解答

(1) 反应物:1–2(单)、2=3(双)、2–4(单)、5–6(单);产物:1–2(单)、2=3(双)、2–6(单)、5–6(单)。(2) 逐对比较:键 (2,4) 由 1 变 0——断裂;键 (2,6) 由 0 变 1——生成;其余键级不变。键编辑集合 = {C:2–O:4 断裂,C:2–N:6 生成}。(3) N 的一个氢随质子转移落到 O:4 上,成为水的氢——这是由氢数变化写出的形式收支;没有显式氢映射或实验示踪,不能确认溶液中“某一个具体氢原子”的实际去向。氢原子通常不显式映射:本例的键编辑集合由重原子键级即可确定,省略氢是这类任务的合理简化——但不能推广成“净反应都不需要关心氢的变化”:质子转移类反应的全部变化恰恰在氢与电荷上(2.7.2 的反例)。这正是“模板是账本不是影片”的一个实例。

习题 2.7-2

对阿司匹林(乙酰水杨酸,CC(=O)Oc1ccccc1C(=O)O)做一步逆合成分析:(1) 指出应切断的键,给出前体集合;(2) 写出对应的正向 Reaction SMARTS 模板(酰氯版),并指出离去基;(3) 该切断对应哪类反应,催化剂与溶剂应放在三段式的哪一栏?

参考解答

(1) 切乙酰基与酚氧之间的酯键(酰基—氧键):前体为水杨酸(邻羟基苯甲酸)与乙酰氯(工业上常改用乙酸酐)。(2) 限定“芳香酚羟基被酰氯酰化”的正向模板:[CX3:1](=[OX1:2])Cl.[c:3][OX2;H1;+0:4]>>[C:1](=[O:2])[O;H0;+0:4][c:3]——酰基碳、羰基氧、酚氧与芳环碳全部带映射号,原子来源在产物中保留(给这些原子加同位素标记可验证);Cl 被匹配而无映射号,即离去基;[c:3] 把反应位点钉在芳香碳的酚氧上,避开水杨酸的羧基羟基。两个易踩的坑值得实测:若第二个反应物不带任何映射号(写成 [#6:1][C](=O)Cl.[O;H1]>>[#6:1][C](=O)[O]),图重写时第二个底物没有可保留的原子来源,产物只是乙酸(两组重复);若把 [c:3] 放宽回 [#6:2],水杨酸的酚羟基与羧基羟基都会被枚举——得到阿司匹林与混合酸酐两个候选。模板枚举的是反应位点,不是实验主产物的预测;模板的 Validate() 通过也不担保语义正确(上述较宽模板的校验恰好返回 (0,0))。省略的 HCl 与碱盐也说明:这是主产物骨架的枚举规则,不是物料衡算。(3) 酚羟基的酰化;碱(吡啶、三乙胺或 DMAP)与溶剂入中栏试剂——严格说中栏只能放分子 SMILES(吡啶、三乙胺都放得进),温度等条件应存为附加数据;水杨酸与酰化剂入左栏反应物,它们之间的键发生了变化。

习题 2.7-3

设某目标分子递归逆合成中,每个中间体平均有 b = 3 种可行切断,每种切断平均给出 k = 2 个前体,完整展开深度 d = 8。(1) 用式 (2.7-2) 估计最深一层的分子节点数,并给出全部层的合计;(2) 简化假设所有分支统一提前两层封叶(有效深度降为 6),规模降为多少?若只知道“平均深度减少两层”,这个 36 倍还能直接套用吗?(3) 由此说明:为什么实用系统必须把库存检查与打分剪枝放进搜索循环内部,而不是先展开完再过滤?

参考解答

(1) 最深层 N ≈ (bk)d = 6⁸ = 1 679 616 ≈ 1.7×10⁶;全部层合计 Σi=0..86i = 2 015 539(反应节点另计)。(2) 统一提前两层封叶相当于有效深度降为 6:N′ ≈ 6⁶ = 46 656,缩小 36 倍,仍在万级。但“平均提前两层”推不出这个 36 倍:随机深度 D 下,期望规模 E[6D] 一般不等于 6E[D]——指数函数里不能用平均值替代逐点计算,36 倍只在“统一截断”的简化假设下成立。(3) 爆炸按指数走,任何“先展开、后过滤”的方案都要先付清指数代价再丢弃大部分节点。把可用性检查与优先级打分做进扩展循环(best-first 或蒙特卡洛树搜索),等于在乘方之前先砍基数与排序——只有在这一层介入,搜索才做得动。习题 2.7-2 的一步切断若在深度 1 就被库存命中封叶,整棵子树根本不会展开。


关键术语

反应 SMILES (reaction SMILES)
“反应物>试剂>产物”三段式的反应文本表示,同侧多组分以点号分隔。
原子映射 (atom mapping)
给反应物与产物中同一原子标注同一编号的标注层,反应信息的真正载体。
反应中心 (reaction center)
发生化学变化的原子与键;本节简化定义下即键编辑集合,完整描述还含氢数、电荷与立体差异。
反应模板 (reaction template)
反应中心加指定半径邻近环境的广义变换,从已映射反应集中提取。
Reaction SMARTS (Reaction SMARTS)
左右图模式加映射对齐写成的变换语言;SMIRKS 是其规范子集。
图重写规则 (graph rewriting rule)
在图中定位同构子图并按模式改写边与节点的产生式规则。
合成可达性 (synthetic accessibility)
以模板链与起始原料库存衡量目标分子可被合成的难易。
逆合成分析 (retrosynthetic analysis)
Corey 的方法学:目标分子经反复切断回溯至起始原料。
切断 (disconnection)
逆合成中逆着正向模板断开一根键的操作,前体集合由此产生。
合成子 (synthon)
切断所得的抽象碎片,与实际使用的前体试剂相对。
AND/OR 搜索树 (AND/OR search tree)
OR 枚举替代方案、AND 汇聚前体集合的递归搜索结构。

参考文献与延伸阅读

  1. Corey EJ, Wipke WT. 1969. Computer-assisted design of complex organic syntheses. Science 166:178–192.
  2. Daylight Chemical Information Systems. Daylight Theory Manual: Reaction SMILES and SMIRKS. Daylight 官方理论文档.
  3. Schneider N, Lowe DM, Sayle RA, Landrum GA. 2015. Development of a novel fingerprint for chemical reactions and its application to large-scale reaction classification and similarity. Journal of Chemical Information and Modeling 55:39–53.
  4. Coley CW, Barzilay R, Jaakkola TS, Green WH, Jensen KF. 2017. Prediction of organic reaction outcomes using machine learning. ACS Central Science 3:434–443.
  5. Jin W, Coley C, Barzilay R, Jaakkola T. 2017. Predicting organic reaction outcomes with Weisfeiler-Lehman network. In: Advances in Neural Information Processing Systems 30 (NIPS 2017).
  6. Liu B, Ramsundar B, Kawthekar P, et al. 2017. Retrosynthetic reaction prediction using neural sequence-to-sequence models. ACS Central Science 3:1103–1113.
  7. Schwaller P, et al. 2021. Extraction of organic chemistry grammar from unsupervised learning of chemical reactions. Science Advances 7:eabe4166.
  8. Segler MHS, Preuss M, Waller MP. 2018. Planning chemical syntheses with deep neural networks and symbolic AI. Nature 555:604–610.
  9. Landrum G, et al. 2026. RDKit Documentation: Chemical Reactions; Reaction Fingerprints. RDKit 官方文档,2026.03 系列.