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

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

一、分子指纹计算

本文介绍在windows环境下,使用rdkit函数在postgresql数据库中进行相似性搜索。环境搭建、数据表准备不再赘述,可以参考这篇文章。在上述工作基础上,继续进行指纹计算、建立索引。操作之前先看看在postgresql中支持的指纹函数:

  • layered_fp(mol):另一种rdkit原创指纹,官方文档的解释是它一种子结构指纹,与rdkit拓扑子图的生成步骤一致,但根据子图生成指纹向量的过程有所不同。在子结构指纹类别中,layered指纹的表现不如pattern指纹,因此不像其他指纹这么被人所熟知。
  • torsionbv_fp(mol):对分子计算topological-torsion的bfp(bit fingerprint)型指纹
  • torsion_fp(mol):计算topological-torsion的sfp(sparse fingerprint)型指纹
  • morganbv_fp(mol, int default 2):计算指定半径(默认为2)的morgan型bfp指纹
  • morgan_fp(mol, int default 2):计算morgan的sfp指纹
  • featmorganbv_fp(mol, int default 2):计算morgan FCFP(用官能团归类)的bfp指纹
  • featmorgan_fp(mol, int default 2):计算morgan FCFP的sfp指纹
  • atompairbv_fp(mol):atompair的bfp指纹
  • atompair_fp(mol):atompair的sfp指纹
  • rdkit_fp(mol):rdkit的拓扑指纹
  • maccs_fp(mol):预定义的MACCS指纹

接下来在postgresql中计算分子指纹

  • 根据rdk.mols中的m列(存放分子的mol对象),计算torsion、morgan ECFP、morgan FCFP指纹,分别命名为torsionbv、mfp2、ffp2,并放入到rdk.fps表中
select id, torsionbv_fp(m) as torsionbv, morganbv_fp(m) as mfp2, featmorganbv_fp(m) as ffp2 into rdk.fps from rdk.mols;
  • 分别对torsionbv、mfp2、ffp2建立索引
create index fps_ttbv_idx on rdk.fps using gist(torsionbv);
create index fps_mfp2_idx on rdk.fps using gist(mfp2);
create index fps_ffp2_idx on rdk.fps using gist(ffp2);

二、相似性搜索

进行相似性比对和搜索需要用到相似性搜索相关的操作符:

  • 百分号"%":使用tanimoto相似性作为标准进行相似性搜索,返回的结果是给定分子与库中分子的相似性是否超过阈值(通过rdkit.tanimoto_threshold设置),用在where条件后,可以得到达到一定相似性的分子

  • 井号"#",与上面的操作符类似,使用dice相似性,阈值可通过rdkit.dice_threshold进行设置。

  • 带尖括号的百分号"<%>":使用tanimoto最近邻搜索

  • 带尖括号的井号"<%>":使用dice最近邻搜索。

  • 接下来使用tanimoto系数作为筛选标准,对新输入分子进行相似性搜索

select count(*) from rdk.fps where mfp2%morganbv_fp('O=C1CN=C(c2ccccn2)c2ccccc2N1');
  • 通过设置相似性的阈值,来对结果进行限制
set rdkit.tanimoto_threshold=0.3;
  • <%>的使用
select id, mfp2<%>morganbv_fp('O=C1CN=C(c2ccccn2)c2ccccc2N1') knn from rdk.fps order by knn asc limit 10;

在这里插入图片描述

三、自定义搜索函数

如果自带的函数无法满足需求,还可以通过create or replace function来创建一个新的函数。用下面的自定义函数为例进行介绍:

  • 自定义函数的名称为get_mfp2_neighbors,该函数可以接收一个text类型的参数smiles
  • 自定义函数的返回值为一个table,包含了int类型的id,mol类型的m,双精浮点类型的similarity
  • 该函数结果是由两个表按id连接形成,第一个表来自rdk.fps,该表中包含了id,m,similarity,其中similarity是给定分子与库中分子morgan指纹的tanimoto相似性系数。第二个表来自rdk.mols
  • 两个表合并后,做一步筛选,只有与给定分子的相似性到达阈值才能被展示。最后再排个序返回
create or replace function get_mfp2_neighbors(smiles text)
returns table(id int, m mol, similarity double precision) as
$$
select id, m, tanimoto_sml(morganbv_fp(mol_from_smiles($1::cstring)), mfp2) as similarity from rdk.fps join rdk.mols using (id)
where morganbv_fp(mol_from_smiles($1::cstring))%mfp2
order by morganbv_fp(mol_from_smiles($1::cstring))<%>mfp2;
$$ language sql stable;
  • 测试一下自定义函数
select * from get_mfp2_neighbors('O=C1CN=C(c2ccccn2)c2ccccc2N1') limit 10;

在这里插入图片描述

  • 因为自定义函数中用到了tanimoto系数,同样可以调整阈值来限制结果,感兴趣的可以自己尝试

本文参考自rdkit官方文档。

基于大语言模型的逆合成分析:RetroAgent智能体架构与实现 逆合成分析是有机化学与药物研发中的核心任务,旨在将目标分子拆解为可商购的起始原料。传统方法依赖专家经验与规则库,存在灵活性不足等问题。随着大语言模型在逻辑推理与代码生成任务上展现强大能力,将其与结构化化学知识库结合,构建智能体系统成为新兴解决方案。这类系统通过将LLM作为推理引擎,调用外部工具进行精确检索与评估,实现了灵活规划与科学准确性的平衡。在工程实践中,需关注提示词设计、工具调用可靠性及搜索空间优化等关键技术点。RetroAgent项目正是这一方向的典型探索,它通过结构化记忆库与多步规划循环,为AI驱 阅读详情

相关推荐

5、深入探索RDKit:分子处理与规范化的实践指南

本文深入介绍了开源工具包RDKit在化学信息学中的应用,涵盖分子结构的摄取与输出、规范化处理、子结构搜索、可视化展示、描述符计算、分子指纹及其相似性比较等核心功能,并进一步探讨了其在神经网络输入层的应用及与PostgreSQL数据库的集成能力。通过代码示例和流程图,帮助读者全面掌握RDKit的实际操作技巧。

p4q5r6s7t的博客 79

基于PostgreSQL使用rdkit做化合物检索

文章目录基于`PostgreSQL`使用`rdkit`做化合物检索一、`rdkit`安装使用二、根据化合物SMILES生成相应的表用于子结构搜索与相似度搜索基础准备,假设表 `compoundStructures`用于存储化合物的smiles抽象生成专用于子结构搜索的表抽象生成专用于相似度查询 基于PostgreSQL使用rdkit做化合物检索 一、rdkit安装使用 运行一下命令,可参考rdki...

780

postgresql与rdkit

从数据库和化学信息学一线开发人员的角度出发,通过实打实的案例,结合外在的系统表信息、参数信息、执行计划信息反向把 PgSQL 查询优化器的原理深入浅出、透彻地讲解明白。

【亲测免费】 推荐文章:探索 PostgreSQL 的相似度查询:pg_similarity

推荐文章:探索 PostgreSQL 的相似度查询:pg_similarity 项目简介 pg_similarity 是一个 PostgreSQL 扩展,它提供了用于文本、数值和其他类型数据的相似度查询功能。通过利用 pg_similarity,您可以轻松地在 PostgreSQL 数据库中执行多种类型的相似度比较,并获得更精确的搜索结果。 项目链接: 功能与用途 1. 文本相似度查询 pg_si...

gitblog_00045的博客 1526

pg_similarity:一组用于执行相似性查询的函数和运算符

介绍 pg_similarity是对支持相似性查询的扩展。 就实现而言,该实现紧密地集成在RDBMS中,因为它定义了运算符,因此可以使用~~~代替传统的运算符(=和<>)。 ! (这些运算符中的任何一个都代表相似性函数)。 pg_similarity具有三个主要组成部分: 函数:实现文献中可用的相似性算法的一组函数。 这些函数可以用作UDF,并且将是实现相似性运算符的基础; 运算符:在相似度函数顶部定义的一组运算符。 他们使用相似性函数来获取相似性阈值,并将其值与用户定义的阈值进行比较,以判断其是否匹配; 会话变量:一组存储相似性函数参数的变量。 这些变量可以在运行时定义。 安装 PostgreSQL所支持上都支持pg_similarity 。 安装步骤取决于您的操作系统。 您还可以掌握克隆Git存储库的最新修补程序和功能。 $ git clone https://github

从《视觉SLAM十四讲》到项目实战:一文读懂拓扑地图与语义地图为何是服务机器人的未来

本文探讨了服务机器人地图技术的演进,从传统几何地图到拓扑地图与语义地图的跨越。通过分析栅格地图的局限性和拓扑地图、语义地图的优势,揭示了它们在动态开放环境中的智能应用。文章还介绍了多模态语义融合架构和动态语义更新技术,为服务机器人的未来发展提供了技术路线图。

weixin_30292843的博客 478

AIDD - 人工智能药物设计 - RDKit:化合物相似性搜索

局部相似性专注于分子拓扑结构上是否具有特定的官能团以及是否具有某些特定的对于分子识别至关重要的原子排布。全局分子相似性总是与小分子的生物响应行为联系在一起,不断与生物活性紧密相关的分子特征做任何假设;基于分子相似性的虚拟筛选核心是“相似性假设”,这个假设首先由 Johnson 和 Maggiora提出,即结构类似的化合物具有类似的物化性质和生物活性,相似性方法在医药领域极具价值。化合物相似性在化学信息学和药物发现中具有悠久的历史,许多计算方法采用相似度测定来鉴定研究的新化合物。

itwangyang520的博客 836

【可不卸载重装】VS2019新建项目里没有CUDA选项

问题:VS2019 新建项目里没有CUDA选项,vs也属性没有cuda。这是因为你在Visual Studio 2019安装之前,先安装了CUDA Toolkit。

qq_62844901的博客 1321

RDKit|支持RDKit的PostgreSQL环境搭建与基本操作

文章目录一、环境配置1.windows下的安装与初始化2.用户设置与服务启动二、操作使用1.cmd操作2.python操作 一、环境配置 PostgreSQL是一个开源、可扩展的关系型数据库,rdkit官网文档里也是以postgresql作为案例进行演示。本文介绍带rdkit插件的postgresql在windows系统上的环境配置,以及在python环境下的基本操作。 1.windows下的安装与初始化 直接在cmd下使用conda安装 C:\Users\Administrator> conda

最会设计的科研狗 1694

企业级智能知识库问答AI助手(大模型+Python)

智能知识问答库AI助手

usa_washington的博客 1655

Win11系统下Abaqus2022与VS2022+oneAPI2023环境配置全攻略(附VUMAT子程序避坑指南)

本文详细指导在Windows 11系统下,为Abaqus 2022配置Visual Studio 2022与Intel oneAPI 2023的Fortran编译环境,以支持VUMAT等用户子程序开发。内容涵盖软件安装顺序、环境变量关联、快捷方式修改及关键验证步骤,并提供了首个VUMAT子程序的实战编写与模型验证方法,帮助用户高效搭建稳定可靠的仿真开发平台。

pytorch8learner的博客 319

【亲测免费】 RDKit 开源化学信息学软件教程

**RDKit** 是一个用于化学信息学和机器学习的开源软件库,由C++开发,并提供了Python接口。该项目采用BSD许可,旨在为企业和个人提供友好的开源环境进行化学数据处理。核心功能包括分子结构处理(2D和3D),描述符计算,指纹生成,以及用于机器学习的特征提取。此外,它还支持PostgreSQL数据库中的子结构和相似性搜索,以及KNIME的工作流节点。 ## 2. 项目快速启动 ### ...

gitblog_00130的博客 1251

【阅读文献笔记】FoundationStereo: Zero-Shot Stereo Matching

提出首个零样本泛化立体匹配基础模型设计 STA 模块融合单目先验提出 AHCF 模块增强代价滤波构建 100 万合成数据集 FSD + 自净化流程。

qq_46460379的博客 1258

RDKit入门与进阶教程(30篇)

RDKitRDKit是用C ++和Python编写的化学信息学和机器学习软件集。项目包含:BSD许可证- 开源的商业友好许可证核心数据结构和算法C++编写使用Boost.Python生...

DrugOne 7895

解密TMS320F28377D双核工程中的内存分配艺术:从CMD文件到实战优化

本文深入解析TMS320F28377D双核DSP的内存管理艺术,从CMD文件配置到实战优化技巧。详细介绍了SARAM、GSRAM等内存类型的特性与配置方法,提供双核协同、性能优化及高级调试的实用方案,帮助开发者提升系统实时性和稳定性。

weixin_29190651的博客 663

基于STM32、HAL库的ZMOD4510AI4R气体传感器驱动程序设计

ZMOD4510AI4R是Renesas公司推出的一款数字空气质量传感器,主要用于检测臭氧(O₃)和总挥发性有机化合物(TVOC)浓度。(status & 0x80)) // 检查数据就绪位。// 等待测量完成 (实际应用中应该使用非阻塞方式)// 转换为ppb (简化转换,实际应根据传感器文档校准)* @param hzmod: ZMOD4510句柄。* @param tvoc: TVOC浓度(ppb)* @param ozone: 臭氧浓度(ppb)* @param hi2c: I2C句柄。

corlin6688的博客 312

RDKit数据库集成:PostgreSQL化学数据库完整搭建教程

RDKit是一个功能强大的化学信息学开源库,它提供了丰富的化学计算和分子处理功能。通过将RDKit与PostgreSQL数据库集成,我们可以构建一个高效的化学数据库系统,实现分子结构的存储、检索和分析。本教程将带你完成从环境准备到高级查询的完整搭建过程,让你快速掌握化学数据库的核心技术。 ## 环境准备:搭建基础架构 在开始之前,我们需要确保系统中已安装PostgreSQL数据库和RDKit库

gitblog_00438的博客 393

LeetCode 面试经典 150 题回顾

最经典 150 题,掌握面试所有知识点 面试经典 150 题 : 题目分析、解题思路、复杂度分析、代码展示

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 8万+

如何快速掌握RDKit:化学信息学与机器学习的终极开源工具指南

RDKit是一个功能强大的开源化学信息学软件库,由C++开发并提供Python接口,采用BSD许可协议。它能帮助企业和个人高效处理化学数据,核心功能涵盖分子结构处理(2D和3D)、描述符计算、指纹生成及机器学习特征提取,还支持PostgreSQL数据库中的子结构和相似性搜索,以及KNIME工作流节点。 ## ???? 零基础入门:RDKit安装与配置全攻略 ### 快速安装步骤(Python环境)...

gitblog_00237的博客 998

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

RDKit数据库扩展模块深度解析:从安装到高级查询

还在为化学信息学数据处理效率低下而烦恼?还在手动处理分子相似性搜索和子结构匹配?RDKit PostgreSQL扩展模块(Cartridge)为你提供了一站式解决方案!本文将带你从零开始,深入探索RDKit数据库扩展的强大功能,掌握从安装配置到高级查询的完整技能栈。 ## 读完本文你将获得 - ✅ RDKit PostgreSQL扩展的完整安装指南(Linux/Windows/macOS) -...

gitblog_00381的博客 1039

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

pythonrdkit教程_RDKit入门与进阶教程(30篇)

RDKitRDKit是用C ++和Python编写的化学信息学和机器学习软件集。项目包含:BSD许可证- 开源的商业友好许可证核心数据结构和算法C++编写使用Boost.Python生成的Python 3.x包装器使用SWIG生成的Java和C#包装器2D和3D分子操作用于机器学习的描述符和指纹生成用于PostgreSQL的分子数据库cartridge,支持子结构和相似性搜索以及许多描述符K...

weixin_39980575的博客 1804

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

RDKit终极指南:从分子结构到机器学习模型的完整化学信息学解决方案

你是否曾经为处理复杂的分子数据而烦恼?想要在药物发现、材料科学或化学研究中快速分析成千上万个化合物?RDKit正是你需要的化学信息学利器!作为开源化学信息学工具包,RDKit提供了从分子结构处理到机器学习建模的全套解决方案,让化学家和数据科学家能够高效处理化学数据。 ## 🔬 RDKit核心功能深度解析 ### 分子结构与可视化模块 RDKit最强大的功能之一就是分子结构处理。它支持多种化学

gitblog_00132的博客 278

RDKit终极指南:3个核心功能解析与5大实战应用场景

RDKit是一个功能强大的开源化学信息学工具包,专门用于处理分子结构数据、计算化学描述符以及构建机器学习模型。作为化学家和数据科学家的首选工具,RDKit提供了从分子可视化到药物发现的全套解决方案。本文将带你深入探索RDKit的核心功能、实战应用场景以及进阶技巧,帮助你快速掌握这个化学信息学利器。🚀 ## 🔬 RDKit核心功能深度解析 ### 1. 分子结构处理与可视化 RDKit的核心

gitblog_01000的博客 263

RDKit|分子指纹提取、相似性比较及应用

文章目录一、分子指纹提取1.Topological Fingerprints2.MACCS3.Atom Pairs and Topological Torsions4.Morgan Fingerprints (Circular Fingerprints)二、相似性比较 一、分子指纹提取 1.Topological Fingerprints 也叫RDKit topological fingerprint。该算法受Daylight fingerprint启发而产生,它会计算所有介于minPath和maxPath

最会设计的科研狗 1万+

Rdkit| 相似性计算

Rdkit| 相似性计算

发呆的比目鱼的博客 3817
上一篇: RDKit|在PostgreSQL中进行分子结构搜索与查询
下一篇: 案例研究|它凭借AI刷新了药物先导物设计的最快记录!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值