文章目录

  • 一、引入所需库
  • 二、化学反应实例
  • 三、化学反应模板
  • 四、化学反应注意事项

RDKit提供化学反应引擎,其中化学反应模板是基于smarts构建。反应物+反应引擎就可以生成产物。

一、引入所需库

#! /usr/bin/python
# coding: utf-8from rdkit import Chemfrom rdkit.Chem import AllChem
from rdkit.Chem import Draw

二、化学反应实例

示例反应

rxn = AllChem.ReactionFromSmarts('([Cl;H0;D1;+0:1]-[c;H0;D3;+0:2](:[c:3]):[n;H0;D2;+0:4]:[c:5])>>(C-[n;H0;D3;+0:4](:[c:5]):[c;H0;D3;+0:2](=O):[c:3]).(Cl-P(-Cl)(=O)-[Cl;H0;D1;+0:1])')
img = Draw.ReactionToImage(rxn
)
img.save('/Users/zeoy/st/drug_development/st_rdcit/img/mol31.jpg'
)

反应模板如下图所示:

从反应模板中,我们看到主要的变化是Cl变成羰基氧,N上多了一个甲基

注:这是一个逆反应模板

反应物如下图所示 :

mol = Chem.MolFromSmiles('CC(C)(Nc1nc(Cl)c(-c2ccc(F)cc2)c(-c2ccncc2)n1)c1ccccc1')
Draw.MolToImageFile(mol,"/Users/zeoy/st/drug_development/st_rdcit/img/mol32.jpg",size=(350, 300),legend='CC(C)(Nc1nc(Cl)c(-c2ccc(F)cc2)c(-c2ccncc2)n1)c1ccccc1'
)


. 创建具体反应规则的引擎对象rxn = AllChem.ReactionFromSmarts(tem)
.输入反应物,借助引擎产生反应rxn.RunReactants([productmol])

def getrxns(rxn, product_smi):"""获取反应规则的引擎对象product_smi 反应物"""product_mol = Chem.MolFromSmiles(product_smi)reactions = rxn.RunReactants([product_mol])rxns = []for reaction in reactions:smis = []for compound in reaction:smi = Chem.MolToSmiles(compound)smis.append(smi)rxnstr = '.'.join(smis) + '>>' + product_smi# newr = canon_reaction(rxnstr)# rxns.append(newr)return rxnstem = '([Cl;H0;D1;+0:1]-[c;H0;D3;+0:2](:[c:3]):[n;H0;D2;+0:4]:[c:5])>>(C-[n;H0;D3;+0:4](:[c:5]):[c;H0;D3;+0:2](=O):[c:3]).(Cl-P(-Cl)(=O)-[Cl;H0;D1;+0:1])'
rxn = AllChem.ReactionFromSmarts(tem)
product_smi = 'CC(C)(Nc1nc(Cl)c(-c2ccc(F)cc2)c(-c2ccncc2)n1)c1ccccc1'
reactions = getrxns(rxn, product_smi)
for reaction in reactions:img = Draw.ReactionStringToImage(reaction)display(img)

三、化学反应模板

化学反应模板主要可通过两种方法获取:1. 自动抽取;2. 化学家编码。

  1. 自动提取 软件:RDKit中没有提供自动提取反应模板的方法。 ASKCOS 开源了自动提取模板的方法。 原理就是化学环境发生变化的原子定义为反应中心,然后基于反应中心拓展一定的半径或者基团。
    对反应模板进行高亮显示 :
  2. 化学家编码 化学家通过对反应进行归纳,整理出的反应规则,典型代表Chemtic 软件。

四、化学反应注意事项

利用化学反应引擎产生的产物,不一定符合化学规则,因此需要进行对产物进行检查。

tem = '([Cl;H0;D1;+0:1]-[c;H0;D3;+0:2](:[c:3]):[n;H0;D2;+0:4]:[c:5])>>(C-[n;H0;D3;+0:4](:[c:5]):[c;H0;D3;+0:2](=O):[c:3]).(Cl-P(-Cl)(=O)-[Cl;H0;D1;+0:1])'
rxn = AllChem.ReactionFromSmarts(tem)def getrxns_reactants(rxn, product_smi):product_mol = Chem.MolFromSmiles(product_smi)reactions = rxn.RunReactants([product_mol])rxns = []for reaction in reactions:smis = []for compound in reaction:smi = Chem.MolToSmiles(compound)smis.append(smi)newr = '.'.join(smis)rxns.append(newr)return rxnsprosmi = "COC(=O)c1cccc(-c2nc(Cl)cc3c(OC)nc(C(C)C)n23)c1"
rs = getrxns_reactants(rxn, prosmi)print(rs)  # ['COC(=O)c1cccc(-c2n(C)c(=O)cc3c(OC)nc(C(C)C)n23)c1.O=P(Cl)(Cl)Cl']
print(len(rs))  # 1smi = rs[0]
m = Chem.MolFromSmiles(smi, sanitize=False)if m is None:print('invalid Smiles')
else:try:mi = Chem.SanitizeMol(m)print(mi)print('smiles is ok')except:print('invalid chemistry')  # invalid chemistry

rdkit 化学反应ReactionFromSmarts相关推荐

  1. RDKit | 基于RDKit绘制化学反应

    基于RDKit绘制化学反应 导入库 from rdkit import RDConfig import unittest import random from rdkit import Chem fr ...

  2. RDKit|在化学反应中对原子进行保护

    文章目录 1.rxn文件创建反应 2.保护目标原子 在化学反应中保护原子 本文是化学反应的进阶操作,关于使用rdkit进行化学反应的操作可以参考这篇文章.有时在使用rxn文件时,很难准确表达或全面考虑 ...

  3. RDKit | 基于RDKit和SMARTS的化学反应处理

    SMILES和SMARTS的区别 SMILES: 分子描述语言 SMILES (Simplified Molecular Input Line Entry System)是一种分子描述语言,由Dayl ...

  4. RDKit | 基于RDKit通过SMARTS定义反应模式来生成反应产物

    简介 RDKit中,通过SMARTS定义一个反应模式,并根据该模式从反应物中生成产物. 环境 Windows 10 pro RDkit 2019.09.1 化学反应 尝试碳原子的羟基化反应. SMAR ...

  5. RDKit相关文章汇总

    RDKit简介: RDKit在2000-2006年期间在Rational Discovery开发和使用,用于构建吸收.分布.代谢.代谢.毒性和生物活性的预测模型.2006年6月Rational Dis ...

  6. DGL RDKit | 基于GCN的多任务分类模型

    DGL 纽约大学.纽约大学上海分校.AWS上海研究院以及AWS MXNet Science Team共同开源了一个面向图神经网络及图机器学习的全新框架,命名为Deep Graph Library(DG ...

  7. “RDKit | 化学信息学与AI”专栏介绍及专栏内容分类(持续更新......)

    "RDKit | 化学信息学与AI"专栏介绍 介绍RDKit相关知识点和运用以及RDKit作为处理化学.生物.药学和材料学科中分子数据作为可输入机器学习和深度学习模型的重要工具应用 ...

  8. RDKit | 基于RDKit处理化学信息学中的反应方程式

            将研究化合物之间的转化,即如何处理化学信息学中的化学反应. 首先,您将学习如何扩展单个化合物的表示法,例如先前处理的MOL文件和SMILES表示法,以表达化学反应.接下来,让学习如何在 ...

  9. 遇事不决,量子力学:谷歌量子计算模拟化学反应登上Science封面

    视学算法报道 编辑:张倩.杜伟 转载自公众号:机器之心 原子和分子是受量子力学控制的系统,用量子计算模拟化学反应,或许是最好的方法. 去年 10 月,谷歌宣布实现「量子优越性」的论文登上了<自然 ...

  10. ICLR 2022 under review|化学反应感知的分子表征学习

    今天给大家介绍一篇关于分子表征学习的文章.分子表征学习(MRL)旨在将分子嵌入到实向量空间中.然而,现有的基于SMILES(简化分子线性输入系统)或GNN(图神经网络)的MRL方法要么以SMILES字 ...

最新文章

  1. wordpress acf字段 不同样式_WordPress强大搜索功能如何实现?安装Ivory Search插件
  2. 《Science》基因组比对的革命性技术
  3. 利用OpenCV的级联分类器类CascadeClassifier和Haar特征实现人脸区域的检测
  4. PowerDesigner16建表在SQL SERVER 2008报 对象名 'sysproperties' 无效。
  5. linux shell zsh,Linux终极shell Z Shell 用强大的zsh oh-my-zsh把Bash换掉
  6. python中如何保存文件_如何在python中处理后保存文件?
  7. 蒙特卡洛方法习题_蒙特卡洛方法
  8. java使用zxing_在Java中使用Zxing读取QRCode
  9. 《Python核心编程》第12章 习题
  10. 威纶触摸屏键盘不显示数字_详解 | 威纶触摸屏数值输入元件应用
  11. html武侠文字游戏源码,执剑行!最新武侠文字mud游戏
  12. Windows Mobile 播放声音文件
  13. JavaScript学习笔记(二)
  14. 一年讲50本书,年收入过亿,罗振宇没做到的,樊登读书会凭什么?
  15. 使用京东云免费云主机搭建CentOS
  16. 网络对抗技术---实验一
  17. 安卓开发实战之app之版本更新升级(DownloadManager和http下载)完整实现
  18. php7生成随机字符和随机数
  19. linux缓存清除命令行,unix - Cookies和缓存,如何在Linux和Mac上从命令行清除它们? - 堆栈内存溢出...
  20. 期末备考数据库知识点(sql server2008)

热门文章

  1. 对不起,学会这些 Linux 知识后,我有点飘
  2. matlab 0106,matlab中的plotyy
  3. SQOOP学习笔记-报错怎么办?打就完了!
  4. 某策略游戏(SLG)数据分析:新增、付费和活动效果评估
  5. TDR/TDT测量原理分析
  6. 15块rmb做一个语音识别控制的0.3W白光LED便利USB灯
  7. 蓝桥杯 历年试题 矩阵翻硬币
  8. 联通4g满格但是网速慢_4G信号明明满格,但网速却慢过蜗牛,是什么原因?
  9. [论文总结] 科技论文英语写作笔记1
  10. 工作流引擎——构建企业流程管控体系