当前位置: 首页 > news >正文

用RDKit的摩根指纹做分子相似性分析:从SMILES到相似度矩阵的完整流程

基于RDKit摩根指纹的分子相似性分析实战指南

在药物发现和材料科学领域,快速评估化合物间的结构相似性是一项基础而关键的任务。摩根指纹(Morgan Fingerprints)作为一种高效的分子表征方法,能够将复杂的3D分子结构转化为可计算的数字向量,为大规模化合物筛选和机器学习建模提供了可能。本文将带您从SMILES字符串出发,逐步构建完整的分子相似性分析流程,涵盖指纹生成、相似度计算到结果可视化的全链路操作。

1. 环境配置与基础概念

RDKit作为开源化学信息学工具包,已成为分子指纹计算的事实标准。通过Conda可快速安装:

conda install -c rdkit rdkit

摩根指纹的核心原理在于原子环境编码。与传统的MACCS键(166位固定指纹)不同,摩根指纹通过分析每个原子周围特定半径(radius)内的结构特征,生成可变长度的特征向量。例如radius=2时,算法会考察原子周围两键范围内的所有连接方式。

关键参数对比:

参数类型MACCS键摩根指纹
编码方式预定义子结构原子环境枚举
向量长度固定166位可调(通常1024-4096)
计算复杂度中高
适用场景快速初筛精细相似度分析

提示:ECFP4指纹相当于radius=2的摩根指纹,二者在药物发现中常可互换使用

2. 从SMILES到指纹向量

假设我们有以下5个药物分子的SMILES表达式:

from rdkit import Chem from rdkit.Chem import AllChem smiles_list = [ 'CN1C=NC2=C1C(=O)N(C(=O)N2C)C', # 咖啡因 'CC1=CC(=O)C=CC1=O', # 对苯醌 'C1=CC(=C(C=C1O)O)O', # 没食子酸 'CC(=O)OC1=CC=CC=C1C(=O)O', # 阿司匹林 'CN(C)CCCN1C2=CC=CC=C2SC1=O' # 氯丙嗪 ] mols = [Chem.MolFromSmiles(smi) for smi in smiles_list]

生成2048位摩根指纹向量的典型操作:

morgan_fps = [AllChem.GetMorganFingerprintAsBitVect(mol, radius=2, nBits=2048) for mol in mols]

半径参数选择建议:

  • radius=1:仅考虑直接键连原子,适用于高通量初筛
  • radius=2:平衡精度与效率(推荐默认值)
  • radius≥3:捕获更复杂特征,但计算量显著增加

3. 构建相似度矩阵

Tanimoto系数(Jaccard相似度)是最常用的指纹相似度度量:

from rdkit import DataStructs import numpy as np n_mols = len(morgan_fps) sim_matrix = np.zeros((n_mols, n_mols)) for i in range(n_mols): sims = DataStructs.BulkTanimotoSimilarity(morgan_fps[i], morgan_fps) sim_matrix[i,:] = sims

得到的5x5对称矩阵显示分子对相似度:

咖啡因 对苯醌 没食子酸 阿司匹林 氯丙嗪 咖啡因 1.00 0.12 0.18 0.23 0.31 对苯醌 0.12 1.00 0.05 0.11 0.08 没食子酸 0.18 0.05 1.00 0.29 0.14 阿司匹林 0.23 0.11 0.29 1.00 0.17 氯丙嗪 0.31 0.08 0.14 0.17 1.00

注意:Tanimoto系数范围0-1,>0.85通常表示高度相似结构

4. 高级分析与可视化

4.1 热图聚类分析

使用Seaborn可视化相似度矩阵:

import seaborn as sns import matplotlib.pyplot as plt plt.figure(figsize=(8,6)) sns.heatmap(sim_matrix, annot=True, xticklabels=['咖啡因','对苯醌','没食子酸','阿司匹林','氯丙嗪'], yticklabels=['咖啡因','对苯醌','没食子酸','阿司匹林','氯丙嗪']) plt.title('分子相似度矩阵(Tanimoto系数)') plt.show()

4.2 相似原子贡献映射

定位对相似度贡献最大的原子区域:

from rdkit.Chem import SimilarityMaps mol1 = mols[0] # 咖啡因 mol2 = mols[4] # 氯丙嗪 weights = SimilarityMaps.GetAtomicWeightsForFingerprint( mol1, mol2, SimilarityMaps.GetMorganFingerprint) fig = SimilarityMaps.GetSimilarityMapFromWeights(mol2, weights)

4.3 降维与聚类

对大型化合物库,可结合UMAP降维:

from umap import UMAP umap_2d = UMAP(metric='jaccard') embeddings = umap_2d.fit_transform(sim_matrix)

5. 实战优化策略

  1. 指纹长度选择

    • 小库筛选(<1k化合物):1024位足够
    • 中等库(1k-100k):推荐2048位
    • 超大库(>100k):考虑4096位
  2. 混合指纹策略

    def hybrid_fingerprint(mol): mfp = AllChem.GetMorganFingerprintAsBitVect(mol, 2, 1024) maccs = MACCSkeys.GenMACCSKeys(mol) hybrid = DataStructs.ExplicitBitVect(1024 + 166) hybrid.SetBitsFromList(mfp.GetOnBits() + [x+1024 for x in maccs.GetOnBits()]) return hybrid
  3. 并行计算加速

    from multiprocessing import Pool def calculate_fp(smi): mol = Chem.MolFromSmiles(smi) return AllChem.GetMorganFingerprintAsBitVect(mol, 2, 2048) with Pool(4) as p: fps = p.map(calculate_fp, smiles_list)

在实际项目中,我们发现对天然产物库(如ZINC20子集)进行相似性筛选时,合理设置radius和指纹长度可将计算时间从小时级缩短到分钟级。例如对50k分子库,radius=2+nBits=2048配置在16核服务器上可在15分钟内完成全矩阵计算。

http://www.jsqmd.com/news/903878/

相关文章:

  • 大同黄金回收选哪家靠谱 这份五月实测指南给你答案 - 专业黄金回收
  • 蓝牙音箱DIY焊接组装全攻略:从PCB到成品的电子制作实践
  • 邮件系统国密加密改造,到底该怎么做?(附真实案例)
  • 中石化加油卡回收一般几折?2026最新面值折扣对照表 - 可可收公众号
  • 2026韩国F2/F5签证办理优选|深度测评:口碑TOP5移民机构全解析 - 资讯焦点
  • AI搜索优化标杆,助力山东企业抢占AI流量入口
  • 基于BLE与ESP32-C3的智能门铃DIY:告别RF干扰,实现低功耗与远程监控
  • 3步解密网易云音乐NCM格式:重获音乐自由的开源方案
  • Agent设计模式
  • 网站SEO优化要注意什么?AI写文章不被惩罚的2个细节
  • 2026年6月浪琴中国区售后全面升级|最新官方维修服务探测报告及售后指南 - 浪琴服务中心
  • Windows NAS进阶玩法:除了存电影,如何用它搭建私人远程办公与媒体库(Jellyfin+内网穿透实战)
  • 论文党必看!书匠策AI的免费查重功能到底有多香?手把手带你搞定
  • 老旧厂房升级管道系统,2026哪些工程公司能兼顾效率与安全? - 品牌2025
  • 2026年腻子品牌推荐需补充权威数据支撑:湖州艺术漆/耐擦洗墙面涂料/腻子品牌推荐/腻子施工服务/刷墙面大白找谁/选择指南 - 优质品牌商家
  • MON51调试器I2C通信改造与嵌入式开发实践
  • 阿里 AgenUI 开源库前后端实战教程 —— Day 2:后端接入 Spring AI Alibaba 鸿蒙端引入 AgenUI
  • Windows环境下RTL1090与adsbscope联调避坑指南:解决端口31011与地图定位问题
  • 广告监管升级,赣州实体店AI获客的正确姿势是什么? - 优家闲谈
  • 【ChatGPT影评写作黄金公式】:豆瓣9.0+高赞影评的5步生成法(附23个真实失效prompt避坑清单)
  • AI 智能体培训后可以做什么工作?就业方向全景图
  • 2026西安各区注册公司,选长安德勤财税更快更省心! - 小柏云
  • 2026年优质资管系统软件推荐,集团不动产私有化平台测评 - 品牌2025
  • 打破隔阂:Mac用户如何用飞秋实现与Windows同事的无缝沟通
  • YM 设计甄选|2026 武汉家装全案流程 本土优质装企收费白皮书 - 品牌评测官
  • DIY旧书改造:打造可调光书本氛围灯的全流程指南
  • 2026年5月重庆不锈钢橱柜厂家实力排行一览:重庆厨房橱柜/重庆厨房设备供应商/重庆商用不锈钢厨房设备/优选推荐 - 优质品牌商家
  • 基于ESP8266与FFT的音乐响应无限镜DIY全解析
  • 猫抓浏览器扩展:三步解锁网页视频音频自由下载
  • 9.LeetCode 209. 长度最小的子数组 | 滑动窗口专题详解