RDKit|摩根分子指纹计算、提取与可视化

本文详细介绍了使用RDKit进行摩根分子指纹的计算,包括SparseIntVects、ExplicitBitVects、FCFPs的生成,以及指纹的提取与可视化方法。通过实例展示了如何获取和解析指纹信息,以及如何从指纹中提取分子子结构。

一、摩根分子指纹计算

1.简介

摩根分子指纹(Morgan Fingerprints),是一种圆形指纹,也属于拓扑型指纹,是通过对标准的摩根算法进行改造后得到。可以大致等同于扩展连通性指纹(Extended-Connectivity Fingerprints,ECFPs)。

这类指纹有诸多优点,例如计算速度快、没有经过预定义(可以表示无穷多种不同的分子特征)、可以包含手性信息、指纹中的每个元素代表一种特定子结构、可以方便地进行分析和解释、可以根据不同的需要进行相应的修改等。这类指纹设计的最初目的是用于搜索与活性相关的分子特征,而非子结构搜索。此外也可以用于相似性搜索、聚类、虚拟筛选等方向。指纹的生成过程大致分为以下几个步骤:

  • 1.原子初始化。为每个重原子分配一个整数标识符
  • 2.迭代更新。以每个重原子为中心,将周围一圈的重原子合并进来,直到到达指定半径。
  • 3.特征生成。对子结构进行运算,并生成特征列表。

更多内容可以参考ChemAxon的介绍,还有ECFPs的文章

ECFPs可以捕捉到精确的子结构细节,相对应的,功能基指纹(Functional class fingerprints,FCFPs)则更为泛化,可以将同一类功能基作为一种特征结构。在rdkit中两种特征都可以通过GetMorganFingerprint实现。

  • 先定义两个分子
>>> from rdkit import Chem
>>> from rdkit import DataStructs
>>> from rdkit.Chem import AllChem
>>> from rdkit.Chem import Draw
>>> m1 = Chem.MolFromSmiles('ClC1=COCNC1')
>>> m2 = Chem.MolFromSmiles('BrC1=COCNC1')
>>> Draw.MolsToGridImage([m1, m2], subImgSize=(150, 150), legends=['ClC1CNCOC1', 'BrC1CNCOC1'])

初始化分子

2.SparseIntVects

  • 以SparseIntVects方式生成ECFPs指纹:GetMorganFingerprint(mol, radius, …)
    或者称为SparseBitVects
    mol:mol对象
    radius:考虑半径
  • 使用Dice方法比较两个指纹的相似性:DiceSimilarity()
>>> fp1 = AllChem.GetMorganFingerprint(m1, 2)
>>> fp2 = AllChem.GetMorganFingerprint(m2, 2)
>>> DataStructs.DiceSimilarity(fp1, fp2)
0.7
  • 查看长度:GetLength()
    返回指纹的长度
  • 查看非空元素:GetNonzeroElements()
    返回值是一个字典,键对应非空指纹的位数,值是指纹出现的频数
>>> print(fp1.GetLength())
4294967295
>>> print(fp1.GetNonzeroElements())
{
   
   39328034: 1, 211414882: 1, 362715007: 1, 2626911012: 1, 2968968094: 2, ..
### 摩根指纹的定义 摩根指纹Morgan Fingerprint)是一种基于分子图的圆形指纹,用于表征化学分子的结构特性。它通过分析分子中原子及其邻域的连通性和环境特征,在给定的半径范围内对每个原子的局部环境进行编码[^2]。具体来说,摩根指纹通过对分子图执行多次迭代扩展操作,逐步增加考虑的邻居范围,从而捕捉更复杂的分子拓扑信息。 在实际应用中,可以通过散列函数将这些复杂的信息映射到固定长度的二进制向量上,例如常见的1024位或2048位向量[^3]。这种设计使得摩根指纹能够高效地表示分子结构,并支持快速比较和相似性计算。 --- ### 摩根指纹的用途 #### 1. **分子相似性评估** 摩根指纹广泛应用于化学信息学领域,特别是在药物发现过程中。通过比较不同化合物之间的摩根指纹,可以量化它们的结构相似性。这有助于识别具有潜在生物活性的新候选分子[^4]。 #### 2. **虚拟筛选** 在大规模分子数据库中,利用摩根指纹可以快速筛选出目标配体结构类似的化合物集合。这种方法显著提高了早期药物研发阶段的工作效率[^2]。 #### 3. **机器学习模型训练** 摩根指纹常作为输入特征用于构建各种预测模型,例如定量构效关系(QSAR)建模、毒性预测以及药代动力学性质估计等任务。由于其良好的表达能力和可解释性,成为许多研究工作的首选描述符之一[^1]。 #### 4. **数据可视化聚类分析** 借助摩根指纹的距离度量方法(如Tanimoto系数),研究人员还可以对大量化合物样本实施降维处理并绘制分布图谱,进而揭示隐藏在其背后的规律模式[^3]。 --- ```python from rdkit import Chem from rdkit.Chem import AllChem # 创建一个简单的苯环分子对象 mol = Chem.MolFromSmiles('c1ccccc1') # 计算摩根指纹,默认参数设置为radius=2,nBits=1024 fp = AllChem.GetMorganFingerprintAsBitVect(mol, radius=2, nBits=1024) print(fp.ToBitString()) # 输出对应的比特字符串形式 ``` 上述代码片段展示了如何使用RDKit库生成指定大小的摩根指纹向量实例化过程。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值