社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

通过经验与机器学习方法修正化学反应数据

DrugAI • 2 年前 • 257 次点击  
——背景——

在计算机辅助合成路线设计中,不缺项的、配平的化学反应数据有着十分重大的意义。使用不缺项且配平的化学反应SMILES能避免数据中的错误,并方便反应原子-原子编号计算和反应模板提取流程。遗憾的是,目前常用于逆合成与化学反应相关机器学习任务的反应数据如USPTO与Reaxys反应数据都包含大量缺项与未配平的反应(图1)。这些问题源于文献对反应的记录不完整和基于文献的文本挖掘在识别反应实体上存在困难。

图1 Reaxys中的反应记录,反应试剂中的氢气参与了反应,但未出现在反应式中
配平不缺项的化学反应是一个简单的线性代数问题,但对于缺项化学反应的补全目前尚无较好的解决方案。由于缺乏充足的不缺项、配平的化学反应数据,单纯基于反应模板的方法或基于机器学习的方法都不可靠,二者的组合可能是解决问题的最佳方案。来自剑桥大学的Zhang Chonghuan等人最近提出了一种结合经验与语言模型的化学反应补全与配平方案1,目前发表在ChemRxiv中。

——方法简述——

基于经验的补全与配平:ChemBalancer

化学反应数据库中的少部分反应已经配平,或可以通过较为简单的方式补全并配平。作者提出了ChemBalancer工具,用于判断反应是否已配平,并根据反应是左侧(Left hand side,LHS)缺项还是右侧(Right hand side,RHS)缺项分别处理补全操作。ChemBalancer的计算流程如图2所示。作者定义配平的反应是左右两侧各类型重原子数和总电荷都相等的反应。未配平的反应首先通过线性代数计算反应系数尝试配平,但限制最大的反应系数为6以防止产生假阳性结果。无法配平或左右两侧所含原子类型不一致的反应,需要判断其为LHS缺项还是RHS缺项。对LHS缺项的反应,作者在从USPTO数据中提取到的全部反应试剂和溶剂分子中选出一个能配平反应的分子;若存在多种可能,所有补全结果会通过RXNMapper2工具计算原子编号的confidence score,并保留排名第一的结果。对RHS缺项的反应,作者人工定义了仅包含32个分子和离子的库(help species),从中选出能配平反应的物种。如果LHS和RHS同时缺项,则优先处理LHS缺项,但允许在LHS补全得不到结果时,将help species也用于补齐LHS缺项。ChemBalancer无法处理的LHS和RHS缺项将通过后续的语言模型处理。

图2 ChemBalancer的计算流程

补全化学反应的语言模型ChemMLM

有些反应的补全无法通过添加数据中已有的或人工定义的分子实现,可以借助化学语言模型推断,NLP中预测句子缺失词的任务与此很相似。作者训练了基于RoBERTa3架构的ChemMLM模型, 如图3所示。ChemMLM通过未配平的化学反应SMILES预测其中可能缺少的单个分子。作者使用化学语言模型中不常见的BPE算法4对SMILES进行分词,得到共计2863个token。作者认为这样能使分子SMILES由数量较少的token构成,让模型更容易学习SMILES中的语义,但单个token可能会横跨两个相邻的SMILES,导致预测中出现多个分子。ChemMLM的训练数据来自Reaxys和USPTO数据中可由ChemBalancer配平的全部反应。模型训练的每个epoch中,训练数据里有随机15%的token被替换为mask token。

图3 ChemMLM模型架构

ChemMLM的预测方式如图4所示。ChemMLM仅能预测固定数目的未知token,但缺失分子的token数不确定。因此输入的反应SMILES会根据缺项情况,在反应左侧或右侧尝试补充1-333个mask token(333是数据集中单个分子具有的最大token数)用于预测,再将预测的全部token组合,过滤不符合SMILES语法的组合得到反应可能缺失的分子。最后,使用ChemMLM预测的所有补全的反应SMILES将通过ChemBalancer进一步尝试配平以获得最终结果。ChemMLM与ChemBalancer结合后的计算流程如图5所示。

图4 ChemMLM的预测方式

图5 ChemMLM与ChemBalancer结合的计算流程

——结果——

ChemBalancer对USPTO和Reaxys反应数据的补全结果如图6统计所示。ChemBalancer无法处理的反应中大部分是RHS缺项的,而LHS缺项极少,这说明大部分反应缺少的是某种副产物,而反应物不完整是很少见的。ChemBalancer配平的全部反应均可作为ChemMLM的训练数据,作者比较了仅使用USPTO来源数据训练和使用USPTO+Reaxys来源数据(combined)训练的效果。

图6 ChemBalancer的补全结果


图7 ChemMLM的测试结果

ChemMLM的测试结果如图7统计所示,short、middle和long分别表示缺失分子由1个、1-10个和10个以上token组成。对不超过10个token组成的缺失分子,ChemMLM预测非常准确,但对更大分子预测很困难。ChemMLM在LHS和RHS补全上没有显著差异;单独使用USPTO来源数据训练的效果比使用全部数据更好。作者选用在USPTO来源数据上训练的ChemMLM与ChemBalancer结合进行反应补全测试。

图8 ChemBalancer+ChemMLM的补全结果


图9 ChemBalancer+ChemMLM的补全结果,红色虚线框内为补全的物种,反应原子-原子编号由RXNMapper计算

ChemBalancer和ChemMLM组合的补全结果如图8统计所示。由于ChemMLM计算量很大,Reaxys反应中仅抽取了1%的未配平反应参与测试。作者的计算流程成功补全了USPTO中66.8%的反应与Reaxys抽取反应中53%的反应,且大部分结果都由ChemBalancer和ChemMLM共同完成。图9中展示了部分由该计算流程补全的反应案例。作者指出ChemBalancer本身和这套计算流程都会产生假阳性结果,仅由质量守恒无法判断配平的反应在化学上是否正确。反应的化学正确性只能由其他方法评估。

——总结——

作者提出了一种基于经验的化学反应补全工具ChemBalancer与基于语言模型的化学反应补全模型ChemMLM,二者的组合在USPTO和Reaxys反应的修正中取得了较好效果。作者指出该方法的主要问题为计算复杂、假阳性无法避免、成功率有待提高等,并提出原子-原子编号计算任务与化学反应补全任务之间存在紧密联系。作者的工作为进一步提高化学反应数据质量打下了基础,并为化学反应数据处理方法贡献了宝贵的经验。

参考文献:

[1] Zhang, Chonghuan et al. “Completing and balancing database excerpted chemical reactions with a hybrid mechanistic-machine learning approach” ChemRxiv preprint (2023). DOI: 10.26434/chemrxiv-2023-hrgfw.

[2] Schwaller, Philippe et al. "Extraction of Organic Chemistry Grammar from Unsupervised Learning of Chemical Reactions." Sci. Adv. 7.15 (2021): eabe4166. DOI: 10.1126/sciadv.abe4166.

[3] Liu, Yinhan et al. “RoBERTa: A Robustly Optimized BERT Pretraining Approach” arXiv preprint (2019). DOI: 10.48550/arXiv.1907.11692

[4] Sennrich, Rico et al. “Neural Machine Translation of Rare Words with Subword Units” arXiv preprint (2016). DOI: 10.48550/arXiv.1508.07909


点击左下角的"阅读原文"即可查看原文章。


作者:郭家盛

审稿:黄志贤

编辑:黄志贤



GoDesign

ID:Molecular_Design_Lab

( 扫描下方二维码可以订阅哦!)



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/159964
 
257 次点击