9.1 反应表征与原子映射


文档摘要

9.1 反应表征与原子映射 本节摘要:反应 SMILES 用一个大于号把反应写成一行字符串——反应物大于试剂大于产物——原子映射号则把产物里的每个原子接回它在反应物里的出处。本节讲清这两层语法的写法与作用,示范反应模板的抽取与应用,并用"Suzuki 类似物枚举"的完整代码案例演示反应数据的第一个高价值用途:自动生成可合成的类似物库。 反应信息学开张。前八章的世界里分子是静止的标本;本节起,分子开始转化。把反应写成机器可算的数据,是一切反应智能的地基——地基里最重要的两块砖,是反应 SMILES 与原子映射。 反应也是一行字符串 反应 SMILES 在普通 SMILES 之间插入大于号分隔符:反应物在前、试剂居中、产物在后,形如"反应物大于试剂大于产物"。苯硼酸与溴苯的偶联缩写一行就能装下;

9.1 反应表征与原子映射

本节摘要:反应 SMILES 用一个大于号把反应写成一行字符串——反应物大于试剂大于产物——原子映射号则把产物里的每个原子接回它在反应物里的出处。本节讲清这两层语法的写法与作用,示范反应模板的抽取与应用,并用"Suzuki 类似物枚举"的完整代码案例演示反应数据的第一个高价值用途:自动生成可合成的类似物库。

反应信息学开张。前八章的世界里分子是静止的标本;本节起,分子开始转化。把反应写成机器可算的数据,是一切反应智能的地基——地基里最重要的两块砖,是反应 SMILES 与原子映射。

反应也是一行字符串

反应 SMILES 在普通 SMILES 之间插入大于号分隔符:反应物在前、试剂居中、产物在后,形如"反应物大于试剂大于产物"。苯硼酸与溴苯的偶联缩写一行就能装下;试剂里的催化剂、碱原样写在中间段。解析器按同样的化合价规则校验三段,原子平衡(反应物加试剂的原子应能拼出产物)可当作第一道质检。

原子映射解决一个更深的问题:产物的羰基碳来自反应物的哪一个碳?给每个原子编一个映射号(产物三号碳与反应物三号碳是同一个原子),反应就从"两堆分子的字符串"升级为"原子级的转化记录"。它是后续一切精细加工的前提——模板抽取要知道哪些键断了哪些键成了,得靠映射;反应相似度比较、催化剂作用位点分析,同样以映射为基础。自动映射的现状要如实交代:基于注意力机制的映射工具在常见反应类型上准确率可观,但复杂重排、多中心反应仍会出错,映射质量抽检是反应数据入库的固定工序

反应模板:转化的结构化抽取

模板是反应的"句型":把反应实例中真正变化的原子环境抽出来,其余静止的骨架用通配符代替。抽出来的模板形如"芳基溴加芳基硼酸变联芳基",配上任意芳香取代基就能批量"造句"。模板的两难要心里有数:抽得粗(只看断键处近邻)泛化好但易产错(管不住不该动的基团),抽得细(多包几层环境)特异安全但覆盖窄——工业模板库通常分层存储,检索时由粗到细。

图 9-1:从反应实例到模板再到类似物

图 9-1:从反应实例到模板再到类似物

案例:用偶联模板自动造一打类似物

背景。项目的活性系列靠一个联芳基骨架撑着,药物化学同事想要一批"换个取代基"的类似物排进下一轮合成。人工写一百条反应式太慢,反应信息学的解法是:拿模板当模具,把采购库里的硼酸与溴代芳烃批量"压"成类似物。

操作。定义模板、跑反应、三重过滤:

from rdkit import Chem from rdkit.Chem import AllChem, rdMolDescriptors as rd from rdkit.Chem.FilterCatalog import FilterCatalog, FilterCatalogParams # Suzuki 类反应模板(示意:芳基溴与芳基硼酸缩合成联芳基) rxn = AllChem.ReactionFromSmarts( "[c:1][Br].C(B)(O)[c:2]>>[c:1][c:2]") acids = ["Cc1ccc(B(O)O)cc1", "Oc1ccc(B(O)O)cc1", "Clc1ccc(B(O)O)cc1"] bromides = ["c1ccc(Br)cc1", "COc1ccc(Br)cc1", "Cc1ccc(Br)cc1", "Brc1ccc(cc1)C(=O)O"] catalog = FilterCatalog(FilterCatalogParams()) valid_products = set() for br in bromides: # 枚举所有组合 for bo in acids: for out in rxn.RunReactants( (Chem.MolFromSmiles(br), Chem.MolFromSmiles(bo))): prod = out[0] Chem.SanitizeMol(prod) # 过滤一:价态校验 smi = Chem.MolToSmiles(prod) mol = Chem.MolFromSmiles(smi) if mol is None or rd.CalcExactMolWt(mol) > 500: continue # 过滤二:类药门槛 if catalog.HasFilterMatch(mol): continue # 过滤三:反应性警报 valid_products.add(smi) print(len(valid_products)) # 去重后的类似物清单 for s in sorted(valid_products): print(s)

结果。四乘三的组合跑完,经三重过滤剩下十来个独特产物——联芳核上分别顶着甲基、羟基、氯、酯基的合理组合,全是采购库原料直接可及的分子。清单直接交给采购下单:这是一份"天然可合成"的候选库。

解读。三处值得咀嚼。其一,映射号在模板里的角色:[c:1][c:2] 标记了转化中"幸存并接线"的两个芳碳,模板因此知道新键连在哪,与取代基无关——这就是原子映射的结构红利。其二,枚举即组合爆炸:原料池放大到几百,产物轻松破万,三重过滤与去重不是可选项而是必需品;SanitizeMol 拦下的正是模板过粗时最常见的"不该发生的反应"。其三,产物的"可合成性"是模板赋予的——与 8.2 节生成模型的产出对比:那边要先过 SA 分数与逆合成检验(9.2 节),这边出厂即带路线,这正是模板枚举在工业界长盛不衰的原因。

变式。沿着表征继续挖:反应相似度——把映射好的反应转成"反应指纹",找"跟这个转化最像的历史反应",条件优化与事故排查都用得上;催化剂数据挖掘——在映射基础上统计配体与产物的关联,给 9.3 节的条件推荐供弹药;专利反应库结构化——把上万篇专利的反应段落批量转成映射记录,是自建模板库的重资产玩法。

本节要点回顾

  • 反应 SMILES 三段式:反应物大于试剂大于产物,一行装下一次转化。
  • 原子映射是结构红利:映射号让模板知道键连在哪,是模板、相似度、条件挖掘的共同前提。
  • 模板两难分层解:粗模板泛化、细模板安全,工业库分层存储由粗到细检索。
  • 枚举必配三重过滤:价态、类药、警报——模板枚举的产物天然"可合成",但也会复制模板的粗心。
  • 下一站:类似物是顺藤摸瓜,陌生分子是凭空规划——9.2 节把整个合成路线当图搜出来。

作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U