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

rdkit 子结构搜索 文章目录一、引入所需库二、子结构搜索2.1 判断是否有子结构2.2 获取第一个子结构对应的原子编号2.3 获取对应所有子结构2.4 子结构搜索考虑手性2.4.1 不考虑手性2.4.2 考虑手性三、smarts 一、引入所需库 #! /usr/bin/python # coding: utf-8 # rdkit 子结构搜索 from rdkit import Chem 二、子结构搜索 子结构搜索可以通过SMARTS匹配符完成。 2.1 判断是否有子结构 首先创建分子对象,然后定义匹配模式,最后判断是否 阅读详情

一、简单子结构搜索

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. 获取所有匹配的结构

  • 获取所有子结构:GetSubstructMatches()
    返回值是原分子中与子结构匹配的原子索引。本例中一共返回4个结果
>>> matches = m.GetSubstructMatches(p)
>>> matches
((5, 6, 11, 17, 18), (5, 17, 11, 6, 7), (6, 5, 17, 11, 12), (6, 11, 17, 5, 4))

3. 查看匹配的结构

  • 直接展示图片:MolToImage(m, highlightAtoms)
    通过highlightAtoms传入匹配的子结构
>>> Draw.MolToImage(m, highlightAtoms=matches[0])
  • 搜索结果之一
    结果1

二、带条件的子结构搜索

2020.03版本以后,rdkit提供了一个可选功能,用于检查并筛选出符合条件的子结构。使用的时候 把这段代码粘过去,按流程操作 就好了。条件可以在matchers中定义,符合matchers中指定条件的子结构才会被返回。

1. 定义条件

  • 假设要寻找一个侧链都带芳香性的子结构
    只需要修改matchers字典,向matchers中添加一个键值对,键为"all_aromatic",值为判断每个原子的芳香性。
>>> class SidechainChecker(object):
>>>     # 在这里添加条件
>>>     matchers = {'all_carbon':lambda at: at.GetAtomicNum() == 6,
>>>                 'all_aromatic':lambda at: at.GetIsAromatic()}
>>>     
>>>     def __init__(self, query, pName='queryType'):
>>>         # atom: [(idx, prop), ()]
>>>         self._atsToExamin = [(x.GetIdx(), x.GetProp(pName)) for x in query.GetAtoms() if x.HasProp(pName)]
>>>         self._pName = pName
>>>         
>>>     def __call__(self, mol, vect):
>>>         seen = [0] * mol.GetNumAtoms()
>>>         for idx in vect:
>>>             seen[idx] = 1
>>>         for idx, qtyp in self._atsToExamin:
>>>             midx = vect[idx]
>>>             stack = [midx]
>>>             atom = mol.GetAtomWithIdx(midx)
>>>             stack = [atom]
>>>             while stack:
>>>                 atom = stack.pop(0)
>>>                 if not self.matchers[qtyp](atom):
>>>                     return False
>>>                 seen[atom.GetIdx()] = 1
>>>                 for nbr in atom.GetNeighbors():
>>>                     if not seen[nbr.GetIdx()]:
>>>                         stack.append(nbr)
>>>         return True

2. 对侧链设置条件

  • 给原子设置属性:SetProp(key, values)
    key:属性名
    values:属性值
    注:p中第五个原子(索引为4),即"*",表示与p连接的侧链。
  • 这里需要侧链带有芳香性的子结构
>>> atom = p.GetAtomWithIdx(4)
>>> atom.SetProp("queryType", "all_aromatic")
  • 查看所有属性:GetPropNames()
  • 查看属性值:GetProp(key)
>>> print(list(atom.GetPropNames()))
>>> atom.GetProp('queryType')
['queryType']
'all_aromatic'

3. 使用条件进行筛选

  • 返回侧链都带有芳香性的子结构,同样要 粘过去按流程操作
  • 再用GetSubstructMatches()搜索
>>> params = Chem.SubstructMatchParameters()
>>> checker = SidechainChecker(p)
>>> params.setExtraFinalCheck(checker)
>>> matches = m.GetSubstructMatches(p, params)
>>> matches
((5, 6, 11, 17, 18),)
  • 现在只剩一个结果了,查看一下,匹配的侧链为一个芳香环
>>> Draw.MolToImage(m, highlightAtoms=matches[0])

结果2

4. 其他条件举例

  • 返回侧链只含有碳的子结构,重新设置属性:SetProp(“queryType”, “all_carbon”)
    注:all_carbon需要提前在matchers中定义好
>>> atom = p.GetAtomWithIdx(4)
>>> atom.SetProp("queryType", "all_carbon")
>>> params = Chem.SubstructMatchParameters()
>>> checker = SidechainChecker(p)
>>> params.setExtraFinalCheck(checker)
>>> matches = m.GetSubstructMatches(p, params)
>>> matches
((5, 6, 11, 17, 18), (5, 17, 11, 6, 7))

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

RDkit二:利用RDkit筛选进行化学小分子2D药效团筛选 RDkit二:利用RDkit筛选进行化学小分子药效团筛选 阅读详情

相关推荐

RDKit安装全攻略:解决“找不到包”与“下载0%”难题

在化学信息学和药物研发领域,软件环境的稳定部署是开展计算工作的基础。包管理器如Conda和Pip通过解析依赖关系、管理渠道(Channel)和镜像源,为复杂科学计算库的安装提供了自动化解决方案。其核心价值在于确保跨平台、可复现的环境构建,从而提升科研与工程效率。然而,在实际应用中,特别是在安装依赖海外源的大型工具包时,用户常面临“找不到包”和“下载卡顿”两大挑战。前者通常与渠道配置错误、Python版本不匹配或虚拟环境隔离有关;后者则主要受限于默认海外镜像的网络速度以及庞大依赖包的连锁下载。针对这些高频痛点

weixin_34203832的博客 595

Rdkit|SMARTS语言应用

Rdkit|SMARTS语言应用

发呆的比目鱼的博客 1089

ZINC15数据库实战指南:从筛选到下载化合物数据的完整流程

在药物发现和计算化学领域,化合物数据库是进行虚拟筛选和机器学习模型训练的基础设施。这类数据库的核心原理在于对海量小分子进行标准化处理,包括质子化状态枚举、3D构象生成和物化性质计算,从而为研究人员提供可直接使用的结构化数据。其技术价值在于极大提升了研究效率,避免了从零开始收集和清洗数据的重复劳动。在实际应用中,研究人员可以根据分子量、LogP、氢键供受体数量等物化性质,或通过子结构和药效团进行精准筛选,快速构建用于虚拟筛选或模型训练的数据集。本文以ZINC15为例,详细解析了从访问数据库、理解数据组织逻辑(

weixin_30457465的博客 300

RDKit|突出分子差异

目录1. 导入相关包2. 两种高亮方式方法一:通过子结构匹配进行高亮方法二:直接高亮指定的原子编号3. 高亮分子的不同子结构 如果出现导入失败,请先安装RDKit,'pip install RdKit’即可。 输出: 图1 高亮分子子结构图根据方法一打印出来的原子编号,在方法二中使用该原子编号。​​​​​​​ 图2 方法二高亮分子子结构图图1和图2,标记出的分子子结构是一样的,可想而知,两种方法都能够达到同样的效果。但是方法一更简单直观。定义两种分子并可视化:​​​​​​​ 图3

qq_39889473的博客 1105

基于LLM Agent的核磁共振谱图自动解析:从原理到工程实践

核磁共振(NMR)谱图解析是有机化学和药物研发中确定分子结构的关键技术,其核心原理是通过分析原子核在磁场中的共振频率(化学位移)和耦合裂分,推断原子的化学环境与连接关系。传统解析高度依赖专家经验,流程繁琐且易出错。随着大语言模型(LLM)在复杂推理与规划任务上展现出强大能力,结合其工具调用特性,为自动化、可解释的NMR解析提供了新范式。LLM Agent作为协调中枢,能够系统化地规划“数据预处理-子结构推导-结构组装-谱图验证”的工作流,并调用专业工具(如RDKit、谱图预测API)执行具体计算,从而将化学

weixin_34138056的博客 445

AI4S算法:从分子逆向合成到药物设计的核心技术解析

AI4S算法:从分子逆向合成到药物设计的核心技术解析 如果你正在关注AI在科学计算领域的最新进展,那么AI4S(AI for Science)这个术语一定不会陌生。特别是在药物研发、材料设计等化学领域,AI4S算法正在彻底改变传统的研究范式。一个典型的例子是:过去化学家需要数月甚至数年才能完成的分子合成路线设计,现在通过AI算法可以在几分钟内给出多个可行方案。 但AI4S算法的价值远不止于此。从分子结构的逆向分析到配方的智能预测,从反应路径的模拟到新材料的虚拟筛选,这套技术体系正在成为科研和工业界的核心竞争

weixin_33868027的博客 361

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

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

最会设计的科研狗 5377

用RDKit玩转分子相似性:从SDF文件处理、指纹计算到相似度地图可视化全流程

本文详细介绍了如何使用RDKit进行分子相似性分析的全流程,包括SDF文件处理、摩根分子描述符计算和相似度地图可视化。通过实战案例和代码示例,帮助研究人员高效处理化合物数据,优化药物研发和材料科学中的分子筛选过程。

weixin_34221654的博客 446

RDKit|在PostgreSQL中进行分子相似性搜索

文章目录一、分子指纹计算二、相似性搜索三、自定义搜索函数 一、分子指纹计算 本文介绍在windows环境下,使用rdkit函数在postgresql数据库中进行相似性搜索。环境搭建、数据表准备不再赘述,可以参考这篇文章。在上述工作基础上,继续进行指纹计算、建立索引。操作之前先看看在postgresql中支持的指纹函数: layered_fp(mol):另一种rdkit原创指纹,官方文档的解释是它一种子结构指纹,与rdkit拓扑子图的生成步骤一致,但根据子图生成指纹向量的过程有所不同。在子结构指纹类别中,l

最会设计的科研狗 1123

ZINC15数据库自动化下载与清洗实战:Python脚本实现大规模分子数据获取

在药物发现和计算化学领域,高质量分子数据库是虚拟筛选和机器学习模型训练的基石。ZINC15作为一个权威的免费类药分子数据库,收录了超过2.3亿个分子的标准化3D结构、理化性质及供应商信息,为研究提供了宝贵的“即用型”数据源。其核心价值在于通过预处理(如质子化、能量最小化)和丰富标签(如LogP、氢键供受体),极大降低了数据准备门槛。在工程实践中,通过Python脚本调用其API接口,可实现海量数据的自动化、批量化获取,并集成RDKit等工具进行去盐、标准化和过滤等数据清洗操作,最终形成适用于分子对接或机器学

weixin_34319111的博客 358

RDKit|广义子结构搜索

在这篇文章中,我将展示如何将所有这些结合起来使用 RDKit 进行“广义子结构搜索”。在文章的底部,有几个 Python 函数可以在其他脚本中使用,以使这个过程更容易。我还将尝试找出一种将其纳入未来 RDKit 版本的好方法。3. 链接节点 + 变量附件 + 互变异构体枚举查询。3. 链接节点 + 变量附件 + 互变异构体枚举查询。1. 导入相应包和数据。1. 导入相应包和数据。2. 定义查询目标。

qq_39889473的博客 249

如何调试AiZynthFinder:常见问题与解决方案大全

AiZynthFinder是一款强大的逆合成规划工具,能够帮助化学研究者快速设计化合物合成路线。然而在使用过程中,新手用户可能会遇到各种技术问题。本文将系统梳理AiZynthFinder的常见错误类型、调试方法和解决方案,让你轻松应对各类挑战,提升逆合成规划效率。 ## 一、了解AiZynthFinder的工作原理 在开始调试前,先了解AiZynthFinder的核心工作流程有助于更快定位问题

gitblog_00406的博客 453

化学分子结构与性质采集——PubChem/ChemSpider API实战、SMILES解析与分子可视化

在药物发现、材料科学和环境监测等领域,化学分子数据的获取与处理是科研工作的基础环节。PubChem作为全球最大的免费开放化学数据库,收录了超过1.2亿种化合物的结构、性质和生物活性数据;ChemSpider则提供了超过2600万种化学结构的社区注释数据。如何高效、稳定地从这些平台批量采集分子数据,并对SMILES字符串进行深度解析与可视化渲染,是化学信息学领域的核心技能。本文将围绕和的批量数据采集、RDKit对SMILES的解析与分子属性计算、以及2D/3D分子可视化。

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 149

反常识,用代码优化汽油燃烧,减少尾气,传统改发动机,颠覆优化烃类分子组成,输出更清洁,高辛烷值的燃烧配方。

更让他困惑的是,加油站提供了十几种不同标号的汽油,从92到98,价格差异巨大,但他根本不知道哪种更适合自己的车,更不知道这些燃料在气缸里究竟发生了什么化学反应。与此同时,某大型炼油厂的技术总监李工正在为新的环保法规发愁。2026年实施的"国七"排放标准对NOx、PM2.5、VOCs的排放限制比国六再严30%,传统的"改进发动机+加装后处理装置"方案已经逼近成本和技术的天花板。本系统采用"分子设计先于工程制造"的颠覆性思路:不改造发动机,不增加后处理,直接通过优化汽油的分子组成来实现更清洁、更高性能的燃烧。

2301_82202864的博客 451

5分钟搞定单细胞marker基因气泡图:scDotPlot保姆级教程(含Seurat适配)

本文提供了一份详细的scDotPlot R包使用教程,帮助用户在5分钟内完成单细胞marker基因气泡图的绘制。教程涵盖环境准备、Seurat和SingleCellExperiment对象的适配处理、进阶可视化技巧及自动化报告生成,特别适合生物信息学新手和临床研究者快速掌握这一高效的可视化工具。

weixin_29047545的博客 262

渲染TA实战:冰面效果制作分享

这里画一张图:我们可以看到,如果深度图的范围没有进过缩放,那就是0-1,但是归一化的-viewDir的向量长度为1,如果-viewDir不和表面垂直(这是绝大多数的情况),那么viewDir.z的分量就是一个不定值,我们不好确定需要走多少步,viewDir才能和底面相交。然后我们需要冰面的Alpha图:因为冰是透明物体,所以相对于Albedo,我们更需要的是一张冰面裂纹的蒙版图,这张图需要记录冰面的裂纹走向和深浅、冰封的气泡、以及因为压力或气体等原因产生的类似雾的效果。

qq_41166022的博客 1028

onepot-Bench 0:面向实验室感知的化学模拟基准测试框架解析

计算化学的可靠性离不开基准测试与实验对照。传统基准常聚焦于预测数值的准确性,却忽略真实实验中的反应顺序、条件变化与结果记录。一种新的评估范式——实验室感知(lab-aware)基准测试,强调模拟流程对实验全过程的描述能力。onepot-Bench 0正是为此设计的in silico化学基准框架,它将反应条件、步骤与结果纳入统一评测体系,帮助研究者评估酶催化、反应预测等模型在接近真实实验场景下的表现。无论是化学信息学工具开发,还是自动化实验数据管线建设,均可通过该框架构建可复现的评估流程。本文从部署、任务构造

weixin_34408624的博客 347

Livox-avia+FAST-LIO麻瓜使用教程

激光雷达 SLAM Fastlio 安装

aaaaaaaaaww12的博客 3677

预算约束下基于短期图记忆的分子优化算法实现与验证

分子优化是药物发现和材料设计中的核心计算问题,旨在通过算法高效搜索具有目标属性的新分子结构。其基本原理是在庞大的化学空间中,利用机器学习模型作为替代评估器(Oracle),以规避昂贵的第一性原理计算或真实实验。该技术的核心价值在于,在有限的计算或实验预算约束下,通过智能搜索策略,在“穷举不可行”与“随机搜索效率低”之间取得平衡,从而加速研发进程。典型的应用场景包括候选药物分子的活性优化、材料功能属性的定向设计等。本文聚焦于一种融合了**短期图记忆**机制的**预算约束Oracle**优化方法,该机制通过图神

weixin_30608503的博客 383

【AI助力科研】不看一篇文献,手把手教你用chatGPT写文献综述!

这篇文章以【AI助力科研】为题,介绍了如何利用ChatGPT编写文献综述的方法。作者通过详细的指导,展示了不需要阅读大量文献,只需依靠ChatGPT模型即可完成文献综述的过程。该方法旨在提高科研工作者的效率,减少阅读负担,并且能够生成具有逻辑性和准确性的文献综述。

研究方向//图像视频处理/信号算法/红外无损检测/数值仿真/机器学习/优化算法/python/matlab 2万+

ABAP Reduced Message Types:用精简 IDoc + Change Pointer,把主数据分发做得又快又省

本文介绍了SAP系统集成中主数据分发的精简优化方法。通过创建"精简消息类型"(Reduced Message Types),可以在不改标准IDoc类型的前提下,只发送接收系统真正需要的数据。文章详细解析了主数据变更链路的完整流程,包括变更文档、变更指针和IDoc生成机制,并重点说明了如何在BD53事务中创建精简消息类型、选择保留字段、激活变更指针等实操步骤。此外,还介绍了通过BD59过滤对象和BD64分发模型实现更精确的数据分发,以及变更指针的激活验证、IDoc生成作业和定期清理等运维要

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 134
上一篇: RDKit|搜索并高亮展示分子中匹配的子结构
下一篇: 化学信息学|SMARTS规则速查表
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值