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

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

基于RDKit摩根指纹的分子相似性分析实战指南在药物发现和材料科学领域快速评估化合物间的结构相似性是一项基础而关键的任务。摩根指纹Morgan Fingerprints作为一种高效的分子表征方法能够将复杂的3D分子结构转化为可计算的数字向量为大规模化合物筛选和机器学习建模提供了可能。本文将带您从SMILES字符串出发逐步构建完整的分子相似性分析流程涵盖指纹生成、相似度计算到结果可视化的全链路操作。1. 环境配置与基础概念RDKit作为开源化学信息学工具包已成为分子指纹计算的事实标准。通过Conda可快速安装conda install -c rdkit rdkit摩根指纹的核心原理在于原子环境编码。与传统的MACCS键166位固定指纹不同摩根指纹通过分析每个原子周围特定半径radius内的结构特征生成可变长度的特征向量。例如radius2时算法会考察原子周围两键范围内的所有连接方式。关键参数对比参数类型MACCS键摩根指纹编码方式预定义子结构原子环境枚举向量长度固定166位可调通常1024-4096计算复杂度低中高适用场景快速初筛精细相似度分析提示ECFP4指纹相当于radius2的摩根指纹二者在药物发现中常可互换使用2. 从SMILES到指纹向量假设我们有以下5个药物分子的SMILES表达式from rdkit import Chem from rdkit.Chem import AllChem smiles_list [ CN1CNC2C1C(O)N(C(O)N2C)C, # 咖啡因 CC1CC(O)CCC1O, # 对苯醌 C1CC(C(CC1O)O)O, # 没食子酸 CC(O)OC1CCCCC1C(O)O, # 阿司匹林 CN(C)CCCN1C2CCCCC2SC1O # 氯丙嗪 ] mols [Chem.MolFromSmiles(smi) for smi in smiles_list]生成2048位摩根指纹向量的典型操作morgan_fps [AllChem.GetMorganFingerprintAsBitVect(mol, radius2, nBits2048) for mol in mols]半径参数选择建议radius1仅考虑直接键连原子适用于高通量初筛radius2平衡精度与效率推荐默认值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-10.85通常表示高度相似结构4. 高级分析与可视化4.1 热图聚类分析使用Seaborn可视化相似度矩阵import seaborn as sns import matplotlib.pyplot as plt plt.figure(figsize(8,6)) sns.heatmap(sim_matrix, annotTrue, 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(metricjaccard) embeddings umap_2d.fit_transform(sim_matrix)5. 实战优化策略指纹长度选择小库筛选1k化合物1024位足够中等库1k-100k推荐2048位超大库100k考虑4096位混合指纹策略def hybrid_fingerprint(mol): mfp AllChem.GetMorganFingerprintAsBitVect(mol, 2, 1024) maccs MACCSkeys.GenMACCSKeys(mol) hybrid DataStructs.ExplicitBitVect(1024 166) hybrid.SetBitsFromList(mfp.GetOnBits() [x1024 for x in maccs.GetOnBits()]) return hybrid并行计算加速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分子库radius2nBits2048配置在16核服务器上可在15分钟内完成全矩阵计算。
http://www.zskr.cn/news/1414975.html

相关文章:

  • 从零写一个 Python 目录扫描器:学习笔记
  • 别再死磕VBA了!用Python+pywin32给AutoCAD写脚本,5个实用函数搞定数据类型转换
  • Sora 2如何实现毫米级物理仿真?:拆解其隐式神经辐射场(iNeRF)+时空扩散双引擎架构
  • Arduino蓝牙遥控小车:从硬件选型到代码调试的完整实践指南
  • 老客户转介绍率不到5%,怎么设计一个让人愿意推荐的机制?
  • 文献 建立了 VoronaGasyCodes 鸟类公共数据库
  • C++ 继承详解(上):从代码复用到切片与隐藏
  • VideoDownloadHelper终极指南:免费快速下载全网视频的完整教程
  • DBX部署教程:打造支持AI SQL助手的数据库管理环境
  • 良久团购技术拆解:多层级结算系统如何支撑40万团长?
  • 别再只用Softmax了!聊聊Sparse Softmax在NLP任务中的实战效果与避坑指南
  • 《流畅的Python》读书笔记14(补充01): 从协议到抽象基类 - 策略模式实现动态折扣计算
  • Akagi麻将AI助手:告别凭感觉打牌,让数据驱动你的每一次决策
  • ChatGPT价值主张设计实战手册(从伪需求到真变现的7步飞轮模型)
  • OpenMetadata元数据管理实践指南:构建企业级数据治理平台
  • Tftpd64 TFTP服务器架构设计与企业级部署优化方案
  • 猫抓浏览器扩展:终极网页资源嗅探工具完全指南
  • 别再只调参了!深入LOAM源码,拆解Ji Zhang论文里那个防止状态估计‘退化’的关键函数
  • 2026 年郑州 GEO 优化服务盘点:中小企业主如何理性考量 - 资讯速览
  • 高中语文古诗词和文言文必背72篇电子版及朗读音频
  • Sora 2如何实现“一秒一情绪”预告片输出?独家解析其多模态时序对齐技术(附可复现LSTM-Prompt微调方案)
  • 一行配置告别 Claude Code 闪屏卡顿:无闪烁全屏渲染模式详解
  • 基于自适应滑模控制与混沌系统的医疗数据安全传输实践
  • 避坑指南:Labelme与Anaconda混装导致的‘命令找不到’问题,我是如何解决的
  • Sora 2生成VR内容总失败?3类致命提示词陷阱+4种空间一致性校验方法(附NASA VR实验室验证数据)
  • Bambu Studio 本地化实战:从代码到全球化的深度开发指南
  • Linux编译C++项目内存爆了?手把手教你用Swap文件快速扩容(附Ubuntu/CentOS命令)
  • 为什么你的Sora 2 360°输出出现接缝撕裂?3个被忽略的UV映射参数+实时调试命令行速查表
  • 企业需要什么样的“小龙虾“?
  • RedisDesktopManager Windows版:3步搞定Redis数据库可视化管理的终极免费方案