RDKit|通过Recap和BRICS对分子拆解与合成

三种碎片化方法:RECAP, BRICS与eMolFrag 如果有低级的化学错误请戳戳>v< RECAP Recap可以模仿实验室中的正向合成过程来进行逆向操作,对分子进行一系列的转换与分解,最终得到一组合理的分子片段。 简介 组合化学:若用一个构建块的n个单元和另一个构建块的n个单元同时反应,就能产生n*n个化合物,效率非常高。 组合化学的重点:找到高质量的构建块。 解决方法:运用RECAP, 基于化学知识将分子划分成构建块,并存入库中。之后就可以直接从这个库中取构建块使用。 一些不太相关的话 在这篇论文中motif和fragment是类似的意思 阅读详情

Recap和BRICS对分子拆解与合成

1.Recap拆解

另一个与化学反应相关的功能是Recap,Recap可以模仿实验室中的正向合成过程来进行逆向操作,对分子进行一系列的转换与分解,最终得到一组合理的分子片段。Recap可以对拆解过程进行追踪,并形成类似树的数据结构。原始分子记为根节点(root),被拆解的分子记为父节点(parent),拆解得到的分子记为子节点(children),某节点下的所有分支节点为子孙节点(all children),某节点上的所有父节点为祖先节点(ultimate parents),无法继续拆解分子记为叶子节点(leaves)。所有英文翻译对应recap中的属性或方法名。

  • Recap算法拆解分子:Recap.RecapDecompose(mol)
>>> from rdkit.Chem import Recap
>>> from rdkit import Chem
>>> from rdkit.Chem import AllChem as Chem
>>> m = Chem.MolFromSmiles('c1ccccc1OCCOC(=O)CC')
>>> hierarch = Recap.RecapDecompose(m)

可以从节点对象通过函数获取其叶子节点、子孙节点,得到的都是字典,键为节点的smiles,值为节点对象。

  • 叶子节点函数:hierarch.GetLeaves()
  • 子孙节点函数:hierarch.GetAllChildren()
  • 祖先节点函数,返回列表:getUltimateParents()
>>> print(hierarch.GetLeaves().keys())
dict_keys(['*C(=O)CC', '*CCO*', '*c1ccccc1', '*CCOc1ccccc1'])
>>> print(hierarch.GetAllChildren().keys())
dict_keys(['*C(=O)CC', '*OCCOc1ccccc1', '*CCO*', '*c1ccccc1', '*CCOC(=O)CC', '*CCOc1ccccc1'])
>>> print(hierarch.getUltimateParents()[0].smiles)
'CCC(=O)OCCOc1ccccc1'

还可以查看节点的如下属性:

  • smiles:smiles(字符串)
  • 子节点:children(字典)
  • 父节点:parents(字典)
>>> child = hierarch.children['*OCCOc1ccccc1']
>>> print(child.smiles)
'*OCCOc1ccccc1'
>>> print(child.children.keys())
dict_keys(['*CCO*', '*c1ccccc1'])
>>> print(child.parents.keys())
dict_keys(['CCC(=O)OCCOc1ccccc1'])
  • 查看叶子节点的分子
>>> leaves = list(hierarch.GetLeaves().values())
>>> Chem.Draw.MolsToGridImage([x.mol for x in leaves], molsPerRow=4, subImgSize=(200, 200))

1

2.BRICS拆解

Rdkit中还有一种BRICS算法,同样可以用于拆解分子。与recap不同,该算法是根据键是否能够合成来进行拆解。该方法返回一个经过去重的列表,在原子上的序号对应一种特定的反应类型。

  • BRICS算法拆解分子:BRICS.BRICSDecompose(m)
>>> from rdkit.Chem import BRICS
>>> m = Chem.MolFromSmiles('c1ccccc1OCCOC(=O)CC')
>>> BRICS.BRICSDecompose(m)
{'[1*]C(=O)CC', '[16*]c1ccccc1', '[3*]O[3*]', '[4*]CC[4*]'}
  • 对一组分子生成片段
>>> import os
>>> from rdkit.Chem import RDConfig
>>> cdk_file = os.path.join(RDConfig.RDDocsDir, 'Book\data\cdk2.sdf')
>>> cdk2mols = Chem.SDMolSupplier(cdk_file)
>>> allfrags = set()
>>> for m in cdk2mols:
>>>     pieces = BRICS.BRICSDecompose(m)
>>>     allfrags.update(pieces)
>>> print(len(allfrags))
90
>>> print(sorted(allfrags)[:3])
['NS(=O)(=O)c1ccc(N/N=C2\\C(=O)Nc3ccc(Br)cc32)cc1', '[1*]C(=O)C(C)C', '[1*]C(=O)NN(C)C']

3.BRICS合成

  • BRICS模块除了支持拆解分子,也可以对一组片段进行合成:BRICS.BRICSBuild()
  • 返回一个生成器,可以通过next()来获取元素
  • 生成的分子也是未经过核对的,可以对分子重新计算一下隐式化合价、环相关等属性,并做更新:UpdatePropertyCache()
>>> fragms = [Chem.MolFromSmiles(x) for x in sorted(allfrags)]
>>> ms = BRICS.BRICSBuild(fragms)
>>> prods = [next(ms) for x in range(4)]
>>> [prod.UpdatePropertyCache(strict=False) for prod in prods]
>>> Chem.Draw.MolsToGridImage(prods, molsPerRow=4, subImgSize=(200, 200))

2
可以通过设置随机种子或设置scrambleReagents参数来保证可重复性

  • 在BRICSBuild执行前设置随机种子
>>> import random
>>> random.seed(100)
>>> fragms = [Chem.MolFromSmiles(x) for x in sorted(allfrags)]
>>> ms = BRICS.BRICSBuild(fragms)
>>> prods = [next(ms) for x in range(4)]
>>> [prod.UpdatePropertyCache(strict=False) for prod in prods]
>>> Chem.Draw.MolsToGridImage(prods, molsPerRow=4, subImgSize=(200, 200))

3

  • 设置scrambleReagents参数
>>> fragms = [Chem.MolFromSmiles(x) for x in sorted(allfrags)]
>>> ms = BRICS.BRICSBuild(fragms, scrambleReagents=False)
>>> prods = [next(ms) for x in range(4)]
>>> [prod.UpdatePropertyCache(strict=False) for prod in prods]
>>> Chem.Draw.MolsToGridImage(prods, molsPerRow=4, subImgSize=(200, 200))

本文参考自rdkit官方文档。
代码及源文件在这里。

从洗碗到叠衣:用RECAP算法让机器人学会‘吃一堑长一智’ 本文探讨了RECAP算法如何让机器人通过试错学习实现‘吃一堑长一智’,从洗碗到叠衣等家务任务中不断改进。该算法结合强化学习与专家干预数据,通过价值评估和策略优化,显著提升机器人的学习效率和任务成功率,为家庭服务机器人的智能化发展提供了新思路。 阅读详情

相关推荐

rdkit Recap、BRICS分子片段拆分与合成

主要是这个函数Chem.FragmentOnBonds 的拆分实现,dummyLabels=[(0, 0)] 第一个0表示前面替换,后一个对应后端;这里元组只能是数字()(,)((),())

weixin_42357472的博客 2186

rdkit Recap、BRICS将smiles切分为片段(fragment)

【代码】rdkit Recap、BRICS将smiles切分为片段(fragment)

Drug discovery 1868

RDKit | RDKit 中的RECAP进行分子裂解

当用多种化合物构建文库时, 用多种化合物构建,以覆盖尽可能多的生理活性 在已发现的生物活性化合物附近使用化合物构建 有一种思方式根据化合物之间的距离和相似性来选择具有各种骨架的化合物。 另一种方法是在配体的基础上插入“基本活性”的亚结构。此时,考虑到合成化学的观点,如果化合物可以自动片段化成可能影响其活性的部分结构,则可以进行有效的化合物设计。 化合物碎片化和从头设计 假设分子被分解为...

DrugOne 2298

Rdkit|化学反应高级功能

Rdkit|化学反应高级功能

发呆的比目鱼的博客 1149

RDKit:基于RECAP生成片段

尝试使用RECAP进行分子碎裂! RDKit代码: #导入模块,载入分子 #!usr/bin/python3 from rdkit import Chem from rdkit.Chem import Recap from rdkit.Chem import Draw from rdkit.Chem.Draw import IPythonConsole mol = Chem.MolFr...

DrugOne 2271

RDKit | 基于片段的分子生成(骨架A+骨架B)

环境 Win10 RDKit2020.09.1 Python=3.7.9 基于双片段的分子生成 导入库 import numpy as np from rdkit import rdBase, Chem from rdkit.Chem import AllChem, Draw, BRICS, Descriptors from rdkit.ML.Descriptors import MoleculeDescriptors print(rdBase.rdkitVersion) ...

DrugOne 2979

RDKit|分子子结构的删除、替换与切割

文章目录分子子结构操作1.删除子结构2.替换子结构3.切掉侧链4.切掉母核 分子子结构操作 RDKit包含了一些修改分子的函数,这些函数可以方便地对分子进行子结构删除/替换等操作。更复杂的操作可以看Chemical Reactions中相关的功能。 1.删除子结构 先初始化一下 定义一个苯丙氨酸分子,要把苯甲基删掉,变成甘氨酸 >>> from rdkit import Ch...

最会设计的科研狗 5377

RD kit官方指南

RDkit指南~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

【药物设计】三种分子碎片化方法介绍:Recap、BRICS与eMolFrag

本文介绍了三种分子碎片化方法:RECAP、BRICS与eMolFrag。RECAP通过11种预定义键断裂分子,模拟逆向合成过程,生成树状结构碎片,适用于组合化学构建块筛选。BRICS改进断裂规则并引入重组模体,通过同位素标签和连接原子标记断裂点,产生非冗余碎片集。eMolFrag方法未展开说明。文章详细解析了RECAP的实现原理、断裂规则和RDKit代码应用,并比较了RECAP与BRICS在标记断裂点时的差异。两种方法都注重保留有用片段并避免过度碎片化,为药物发现和分子设计提供有效工具。

小哲的博客 1685

RDKit|搜索子结构时对侧链进行条件限制

文章目录一、简单子结构搜索1. 初始化2. 获取所有匹配的结构3. 查看匹配的结构二、带条件的子结构搜索1. 定义条件2. 对侧链设置条件3. 使用条件进行筛选4. 其他条件举例 一、简单子结构搜索 1. 初始化 m表示待搜索的原始分子 p表示带侧链的四元环结构 >>> from rdkit import Chem >>> from rdkit.Chem import Draw >>> m = Chem.MolFromSmiles('C2NCC2CC1C(CCCC)C(OCCCC)C1c2ccccc2') >>> p = Chem.MolFromSmarts('C1CCC1*') 2. 获取

储能系统架构和控制

探讨了储能系统中EMS(能源管理系统)、BMS(电池管理系统)和PCS(功率转换系统)之间的协同机制,以及组串式和集中式储能系统的技术架构、优势和局限性。EMS根据电价、电网需求和电池状态制定充放电策略,BMS提供电池数据,PCS执行充放电控制。组串式系统具有独立管理和灵活扩展的优势,但成本较高;集中式系统成本效益高,但存在环流和木桶效应问题。

蓝龙宝藏的博客 3967

浅谈 ReCAP(Recursive Context-Aware Reasoning and Planning)——大模型推理与规划的递归范式

摘要: ReCAP提出了一种递归、可回溯、可修正的长链推理机制,使大语言模型(LLM)能像程序一样递归执行复杂任务,并通过环境反馈动态调整计划。其核心是通过**上下文感知规划(π)拆分嵌套子任务,递归任务栈实现深度优先执行,以及反馈驱动的计划修正(ρ)**实现自我修复。相比传统方法(如CoT、ReAct),ReCAP具备层级性、错误恢复能力和结构化上下文管理,显著提升了长链任务的稳定性与可控性。该框架适用于智能体规划、工具编排等场景,为LLM赋予类程序化的推理能力。

青衫客36的博客 1426

普罗米修斯监控达梦数据库集群

-----------------------------------新增文件---------------------------------------注:图上即为启动成功,如果没有问题,则使用nohup后台启动程序。官网地址:https://github.com/gy297879328/dameng_exporter。注:prometheus的对数据库的指标采集如果高于60s一次,请手动修改提供表盘中的计算值。修改dameng_exporter.config配置文件,修改账号密码的部分。

weixin_49985403的博客 1681

rdkit 化学反应高级功能

文章目录一、引入所需库二、保护原子三、把分子切成片段3.1 Recap方法3.2 BRICS方法四、组合分子片段--BRICS方法五、自定义片段生成方法 一、引入所需库 #! /usr/bin/python # coding: utf-8 from rdkit import Chem from rdkit.Chem import AllChem from rdkit.Chem import Draw from rdkit.Chem import Recap from rdkit.Chem import

qq_36801966的博客 1801

matlab液体湿润模拟,【水文模型】01 三水源新安江模型

目录一、概述1.1 流域概况1.2 产流方式论证1.3 设计基本任务1.4 设计原始资料二、新安江模型2.1 流域划分2.2 产汇流计算2.2.1 蒸散发计算2.2.2 产流计算2.2.3 水源划分2.2.4 汇流计算2.3 模型参数2.3.1 参数物理意义2.3.2 参数率定结果2.4 模拟结果2.4.1 精度统计表2.4.2 计算与实测流量过程线比较三、精度统计与误差分析3.1 精度统计3.2...

weixin_34173656的博客 5327

2025年12月11日 Coherent收发器下沉到数据中心:调研

技术可行性已基本具备。随着3nm DSP技术的成熟和Coherent-Lite等低功耗方案的推出,Coherent技术与IMDD的功耗差距在800G及以上速率节点快速缩小。特别是在1.6T及更高速率,两种技术的功耗开始趋于收敛。同时,通过系统级优化,如将DSP功能从可插拔模块转移到ASIC芯片,可实现30%以上的功耗降低。在成本方面,硅光技术的进步使得单通道硅光引擎BOM成本降至18美元,较2020年下降62%,逼近InP方案的经济临界点。光学系统机会丰富多样。

weixin_51184047的博客 1167

利用python构建分子碎片库

基于分子文件构建分子碎片库。内嵌Brics, Recap, MacFrags三种算法。RECAP(Retrosynthetic Combinatorial Analysis Procedure):RECAP 是一种基于化学反应规则的分子切割方法,通过将分子沿特定的化学键进行断裂,生成更小的碎片。这些碎片可以帮助研究者更好地了解分子的结构和活性关系。BRICS。

recher_He1107的博客 1113

ST-LINK调试STM32H743必看:CubeMX工程中缺失的这行代码导致程序跑飞

本文深入剖析了使用ST-LINK调试STM32H743时,因CubeMX工程中缺失电源电压档位配置代码而导致程序跑飞或出现“Can not access memory”错误的问题。文章解释了H7系列电源与时钟耦合的核心原理,提供了具体的代码修复方案和系统化的调试排查思路,帮助开发者从根本上解决这一常见调试困境。

weixin_29191669的博客 281

详解rlinf强化学习RECAP 算法四步曲

这个四步流程是RECAP 算法标注回报→ 为离线数据添加 reward/return 标签训练价值模型→ 学会评估状态好坏计算优势→ 区分好/坏的数据点优化策略→ 基于优势信号提升策略让我深入分析训练价值模型的逻辑。首先查看核心代码文件。设计点实现方式优势价值表示分类分布(201 bins)支持多模态价值分布,提供不确定性损失函数Dirac delta 投影 + 交叉熵平滑处理连续价值的离散化视觉编码SigLIP 预训练模型强大的视觉特征提取语言编码Gemma3 预训练模型理解任务描述。

hongyucai的博客 493

Arch Linux 命令大全,值得收藏!

Arch Linux 是一款轻量级、高度可定制的 Linux 发行版,以其简洁和强大的特性深受高级用户喜爱。但对于新手来说,完全掌握 Arch Linux 的操作需要时间和实践。本文将为您详细介绍常用的 Arch Linux 命令,涵盖系统管理、文件操作、用户管理、软件安装与管理、网络配置和磁盘管理等内容,帮助您更高效地使用 Arch Linux。

网络技术联盟站 973

不加行也能填满:用 ABAP BDC 驯服 Table Control 滚动录制缺陷,批量维护供应商银行账户

摘要 本文探讨了在SAP ECC/S4HANA系统中处理供应商主数据时,Table Control控件带来的批量导入挑战。文章指出,银行账户维护界面中Table Control的滚动动作难以被录制工具捕捉,导致批量导入数据时仅能填充前5行。解决方案是通过BDC_OKCODE显式触发翻页(如=P+),并配合行号拼接(如(01)~(05))将数据写入不可见行。文中提供了完整的ABAP程序示例,展示了如何读取外部文件、动态生成BDCDATA、处理表格翻页逻辑,最终通过CALL TRANSACTION执行XK01事

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 272

rdkit | 药物分子进行片段分解

rdkit | 药物分子进行片段分解

发呆的比目鱼的博客 2077

不提交也不释放的事务,数据库连接还有可能被复用

摘要 实验发现Spring事务管理下,未提交事务的数据库连接池连接仍可被复用,这与传统认知相悖。通过配置HikariCP连接池(最大2连接)并设计测试接口,观察到未提交事务的连接会被后续请求复用。这可能导致GTID错误(当MySQL开启GTID且混用事务/非事务表时)以及数据修改丢失问题。研究揭示了Spring事务管理机制与连接池交互的特殊行为,对高并发系统设计具有重要启示。

蔡定努 176

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

文章目录在化学反应中保护原子1.rxn文件创建反应2.保护目标原子 在化学反应中保护原子 本文是化学反应的进阶操作,关于使用rdkit进行化学反应的操作可以参考这篇文章。有时在使用rxn文件时,很难准确表达或全面考虑到每个细节,导致不需要的原子发生反应,并产生副产物。而rdkit也提供了保护原子的操作,避免不需要的原子参与到反应中。还是以形成酰胺键为例。 1.rxn文件创建反应 通过rxn文件创建一个反应模式:ReactionFromRxnFile() 检查一下该反应:ReactionToImage()

最会设计的科研狗 611

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

STM32开发实战指南:从环境搭建到外设避坑与物联网应用

嵌入式开发离不开对单片机底层原理与外围电路设计的深刻理解。STM32作为当前最主流的MCU之一,凭借丰富的生态和通用性,成为工程师的首选平台。实际项目中常会遇到各种细节陷阱:例如使用ILI9341屏幕时读到0xA1A1而非正确ID,或服务器返回的UTF-8数据在GBK字库下显示乱码,又或通过485总线控制伺服电机时CRC校验失败。这些问题的根源往往在于SPI时序配置、编码转换机制、Modbus协议帧结构等基础能力。掌握通用的硬件调试思路比死记代码更有价值。本文从开发环境搭建、核心外设踩坑、显示与编码处理、电

weixin_34242509的博客 564

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: RDKit|在化学反应中对原子进行保护
下一篇: RDKit|分子基础操作与药效团查找
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值