2.7.1 从分子到反应:三段式的文本表示
前六节处理的都是静态分子。化学反应把一组分子变成另一组分子:键断裂、键生成、原子重新组合。要让机器处理反应,先要给它一种文本。2.2 节的 SMILES 解决了单个分子;按角色把若干 SMILES 拼装起来,就得到反应 SMILES(reaction SMILES):三段式「反应物>试剂>产物」,两个大于号把一条反应切成三栏(Daylight 理论手册)。同一栏内的多个分子以点号分隔,与混合物的写法一致。
三栏的划分标准是键的变化。反应物(reactants)指发生键变化的分子——至少有一个原子卷入断裂或生成的键;试剂(agents)只提供环境:溶剂、催化剂、酸碱,箭头上方写的那些名字。图 2.7-1 是全文标注的酯化:乙酸与甲醇缩合生成乙酸甲酯与水,酸催化与加热放在中栏,两侧点号各分隔两个组分。试剂栏可以为空(写作「>>」),此时反应只剩净变换的骨架。
三段式只编码结构骨架,编码不了别的东西:计量比、速率、温度区间、立体选择性与机理细节都不在其中(立体化学可用 @ 记号局部表达,但反应数据很少完备到这一步)。同样要认清:「反应物/试剂」的边界是标注约定而非物理——数据库里两者经常混排,把角色理顺本身就是反应数据清洗的第一道工序,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 中的键级不同——无键变有键、单键变双键均算——这条键属于反应中心。反应中心 = 断裂的键 ∪ 生成的键 ∪ 变键级的键。
换个角度说:无映射的反应只有「表观」,映射给出「对应」。历史文献与专利几乎从不给出映射,自动补齐于是成为反应信息学的第一道工序。两条主要路线:结构对齐——在反应物与产物之间找最大公共子结构,保留的骨架直接对号,剩余原子再按连接度配对;数据驱动——RXNMapper 一类工具以 Transformer 注意力从大规模反应数据中直接学出原子对应(Schwaller et al., 2021)。两条路线都有失败模式,映射错误并不罕见。
映射号是标注,不是物理。原子并没有编号,映射是人对「同一原子」的认定。认定错了——本该给氧的编号标给了氮——式 (2.7-1) 算出的反应中心就全错,由此提取的模板、差异指纹与训练数据随之全部污染。下游一切「键的变化」都是派生品:映射的可信度决定整条数据链的可信度。使用公开反应数据前,先问映射从哪里来。
反应中心的概念也撑起了反应的向量化。Schneider 等(2015)把产物一侧的原子环境减去反应物一侧的原子环境,得到反应差异指纹,用于大规模反应分类与相似性检索——算的仍是「哪里变了」。反应中心还可以直接建模:Coley 等(2017)用图卷积网络在底物图上预测哪条键将被改写,再对候选产物排序,把「找反应中心」变成一个可学习的任务。这条线索在第 4 章正面展开。
2.7.3 反应模板:从个例到广义变换
单条反应只是个例,合成化学的知识以「一类反应」存在:酯化、酰胺化、偶联。把个例归纳成类,靠的是反应模板(reaction template)。从大量已映射反应出发:取出反应中心,连同指定半径的邻近环境,再把具体原子泛化为查询条件——脂肪碳写作 [#6]、伯胺写作 [N;H2]——即得一条广义变换。数百万条专利反应可以抽出数万到数十万条特化模板(量级估计,随提取半径与归并口径而变),归并后常用的泛化模板在千条量级。
反应模板。从已映射反应中提取的广义变换:反应中心 + 给定半径 r 的邻近环境,写成「左侧模式 → 右侧模式」的图重写规则。半径 r 给定后,一条模板压缩「这一类反应」;数据集中出现过的全部模板,构成该数据集化学操作的字典。
模板的粒度由半径决定(图 2.7-2、表 2.7-1)。半径 0 只留反应中心:几乎一切同型反应都命中,覆盖极广;但「形似而非」的底物也一并命中,误配率高。半径 1 把直接邻居带上:模板开始区分环境,覆盖收缩,误配下降。半径 2 以上接近逐例复现:精确,但每条模板只服务少数反应。特化与泛化不可兼得,半径是这组权衡的旋钮。
| 提取半径 | 模板内容 | 覆盖面 | 误配风险 | 典型角色 |
|---|---|---|---|---|
| 半径 0(仅中心) | 中心原子与改写的键 | 极广:一切酰基转移都命中 | 高:酸酐、碳酸酯、氨基甲酸酯一并命中 | 提示「此处有反应」,难以定前体 |
| 半径 1(含一层邻居) | 中心 + 直接键合原子 | 广:同型底物大多覆盖 | 中:排除无相应官能团组合的底物 | 模板库的常用默认粒度 |
| 半径 ≥ 2(多层环境) | 中心及二层以外环境 | 窄:接近逐例复现 | 低:几乎等价于文献先例 | 反应检索与分类、特化路线复用 |
粒度没有最优解。半径的选择取决于任务:逆合成要覆盖——漏掉一条可行模板即漏解;反应分类要精度——混入异类反应即错分。同一反应集在不同半径下抽出的模板数量可以相差一个量级。评估任何「基于模板」的方法前,先弄清其模板库的提取口径:半径、原子泛化程度、归并规则;口径不同,数字不可比。
模板因此成为合成可达性(synthetic accessibility)的粗粒度模型:一个分子「可达」,若存在模板链把商业起始原料一步步变换到它;连一步模板都套不上的分子,合成难度大概率偏高。相比逐原子打分的经验规则,模板模型直接对应「已知的化学操作」,解释性强;代价同样明确——模板之外的新化学天然不可达,它只能回答已知问题。
2.7.4 Reaction SMARTS:把变换写成图重写规则
模板怎样落到纸面?答案接回 2.3 节的 SMARTS。Reaction SMARTS 把变换写成一对图模式:左侧模式匹配反应物,右侧模式给出产物,两侧以原子映射号对齐保留下来的原子。左侧被匹配而不带映射号的原子是离去基团,产物中不再出现;右侧不带映射号的原子是新建的。这是一条名副其实的图重写规则(graph rewriting rule):在底物图上找到同构于左侧模式的子图,按右侧模式改写边、重建分子。Daylight 规范中的 SMIRKS 是加了严格对应限制的子集(要求两侧映射原子集一致),工程语境里两词常混用(Daylight 理论手册)。
通配符在规则里扮演 R 基。[#6] 只约束「是个碳」,把骨架其余部分放行;[#6;R] 进一步要求处于环上,[N;H2] 锁定伯胺。通配的深浅逐原子可调,模板的特化程度因此是连续旋钮,而非二选一——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 节的酯化写成规则并应用于真实底物。四个映射原子全部保留,键的变化只有断裂与生成各一条;两个 [#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
prods = ester.RunReactants((acid, alc))[0] # 左侧模式匹配底物图,右侧模式重建产物
print([Chem.MolToSmiles(p) for p in prods])
# ['COC(C)=O', 'O'] —— 乙酸甲酯 + 水;映射原子全部守恒
把底物换成乙醇,同一规则给出乙酸乙酯——通配符放行了模板视野之外的骨架。两点提醒。其一,模板编码的是净变换:酯化经四面体中间体多步完成,图重写一步到位——模板是计量关系的账本,不是机理的影片,电子推动另有表示体系。其二,右侧模式决定产物的合法性:映射原子照搬属性,重建后仍需通过价键校验;写错的模板会安静地产出错误分子,责任在使用者(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 层是同一切断要求的前体集合——水杨酸与乙酸酐缺一不可。每个前体又是新目标,递归下探。「找到一条路线」等价于在树中找到一条从根到全部起始原料叶的解路径。
为什么爆炸?分支每层相乘,规模按深度指数增长:
浅看分支并不凶:每步三五条候选很平常;乘方立刻失控。三层结构性对策沿用至今。起始原料清单提前终止——节点一旦命中库存即封叶;启发式给切断排序——Corey 的战略键分析,优先断出最大结构简化的键;检索算法控制探索次序——蒙特卡洛树搜索是当代版本(Segler et al., 2018)。1969 年设想的框架,今天仍在同一棵树上做文章。
2.7.6 模板作为先验:通向第 4 章
回到表示的主线。第 4 章会遇上「从头逐原子生成分子」的模型:自回归地逐个吐出原子与键。对合成而言,这类模型的输出空间是全部合法分子——绝大多数与已知化学毫无关系。模板给出强得多的先验:把搜索限制在模板库覆盖的变换之内,每一步的产物天然合法、天然有文献先例,逆合成树的有效分支因子骤降。代价同样明确:模板之外的新反应类型永远走不通——先验即天花板。
当代数据驱动逆合成沿两条路推进:模板推荐——学习「对这个目标该用哪条模板」,把庞大的模板库压缩成排序问题;无模板模型——绕开模板直接预测前体图(Segler et al., 2018)。产物预测是同一问题的正向姊妹题:从底物预测反应中心与产物(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
对阿司匹林(乙酰水杨酸,CC(=O)Oc1ccccc1C(=O)O)做一步逆合成分析:(1) 指出应切断的键,给出前体集合;(2) 写出对应的正向 Reaction SMARTS 模板(酰氯版),并指出离去基;(3) 该切断对应哪类反应,催化剂与溶剂应放在三段式的哪一栏?
(1) 切乙酰基与酚氧之间的酯键(酰基—氧键):前体为水杨酸(邻羟基苯甲酸)与乙酰氯(工业上常改用乙酸酐)。(2) 模板:[#6:1][C](=O)Cl.[#6:2][O;H1]>>[#6:1][C](=O)[O;H0][#6:2]——更简洁的等价写法 [#6:1][C](=O)Cl.[O;H1]>>[#6:1][C](=O)[O]:酚氧保留成为酯氧,Cl 被匹配而无映射号,即离去基;[#6:1] 承载酰基的 R 基,[#6:2] 是芳环上接氧的碳。(3) 酚羟基的酰化;碱(吡啶、三乙胺或 DMAP)与溶剂入中栏试剂,水杨酸与酰化剂入左栏反应物——它们之间的键发生了变化。
习题 2.7-3
设某目标分子递归逆合成中,每个中间体平均有 b = 3 种可行切断,每种切断平均给出 k = 2 个前体,完整展开深度 d = 8。(1) 用式 (2.7-2) 估计搜索树的展开规模;(2) 若起始原料命中使分支平均提前两层封叶,规模降为多少(量级)?(3) 由此说明:为什么实用系统必须把库存检查与打分剪枝放进搜索循环内部,而不是先展开完再过滤?
参考解答(1) N ≈ (bk)d = 6⁸ = 1 679 616 ≈ 1.7×10⁶。(2) 提前两层封叶相当于有效深度降为 6:N′ ≈ 6⁶ = 46 656,规模缩小 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 汇聚前体集合的递归搜索结构。
参考文献与延伸阅读
- Corey EJ, Wipke WT. 1969. Computer-assisted design of complex organic syntheses. Science 166:178–192.
- Daylight Chemical Information Systems. Daylight Theory Manual: Reaction SMILES and SMIRKS. Daylight 官方理论文档.
- 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.
- 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.
- Schwaller P, et al. 2021. Extraction of organic chemistry grammar from unsupervised learning of chemical reactions. Science Advances 7:eabe4166.
- Segler MHS, Preuss M, Waller MP. 2018. Planning chemical syntheses with deep neural networks and symbolic AI. Nature 555:604–610.
- Landrum G, et al. 2026. RDKit Documentation: Chemical Reactions; Reaction Fingerprints. RDKit 官方文档,2026.03 系列.