news 2026/5/28 15:02:18

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用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分钟内完成全矩阵计算。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 15:02:15

快速体验Taotoken旗舰模型Qwen与Gemini的最新能力

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 快速体验Taotoken旗舰模型Qwen与Gemini的最新能力 对于AI爱好者和研究者而言&#xff0c;能够第一时间体验业界领先的大语言模型&a…

作者头像 李华
网站建设 2026/5/28 15:01:13

XPM5236 36W USB PD 等多协议降压芯片

1 特性  输入耐压 42V  支持 USB Type -C 协议 - 配置为 DFP&#xff08;Source&#xff09; - 广播 3A 电流  支持 USB Power Delivery&#xff08;PD&#xff09;3.0 协议 - 集成完整 PD3.0 分层通信协议 - PDO 电压&#xff1a;5V&#xff0c;9V&#xff08;XPM5236A&…

作者头像 李华
网站建设 2026/5/28 15:01:06

3分钟搞定网页视频下载:猫抓资源嗅探器完全使用指南

3分钟搞定网页视频下载&#xff1a;猫抓资源嗅探器完全使用指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为无法下载在线视频而烦恼吗&a…

作者头像 李华
网站建设 2026/5/28 14:58:29

论文查重居然能免费?书匠策AI这个功能,很多同学还不知道!

各位正在赶论文的同学们&#xff0c;大家好&#xff01;我是你们的论文写作科普博主。 今天咱们不聊怎么选题、怎么搭大纲&#xff0c;咱聊一个所有写论文的人都绑不开的坎——查重。 你是不是也经历过这种绝望&#xff1a;辛辛苦苦写了一万字&#xff0c;拿去查重一看&#…

作者头像 李华
网站建设 2026/5/28 14:53:00

华清远见亮相第64届高博会:聚焦具身智能,打造嵌入式/物联网/人工智能/机器人产教融合实践教学新生态

5月24日&#xff0c;为期三天的第64届高等教育博览会在南昌圆满落下帷幕。本届高博会以“赋能协同卓越&#xff1a;服务高等教育强国建设”为主题&#xff0c;汇聚全国1500余所高校、1000余家企业及10万余名专业观众&#xff0c;共同探讨新时代高等教育改革与人才培养创新路径。…

作者头像 李华