RDKit|分子片段、片段指纹与指纹重要性分析

本文介绍了如何使用RDKit进行分子片段生成、片段指纹创建和指纹重要性分析。通过实例展示了从分子中提取官能团,生成并查看分子片段,以及如何利用片段指纹进行信息增益和卡方检验等重要性分析。

一、分子片段生成

分子片段(Molecular Fragments)是一组相连的原子,并可能包含有相关官能团。在rdkit中提供了一系列用于分析、操作分子片段的工具。说起来比较抽象,操作起来也比较抽象。

  • 获取官能团库:RDConfig.RDDataDir目录下的’FunctionalGroups.txt’
  • 根据官能团库实例化一个参数器:FragmentCatalog.FragCatParams()
>>> import os
>>> from rdkit import Chem
>>> from rdkit.Chem import Draw
>>> from rdkit.Chem import RDConfig
>>> from rdkit.Chem import FragmentCatalog
>>> fName = os.path.join(RDConfig.RDDataDir, 'FunctionalGroups.txt')
>>> fparams = FragmentCatalog.FragCatParams(1, 6, fName)
  • 查看库中包含的官能团数量:GetNumFuncGroups()
  • 查看每个官能团对应的基团:GetFuncGroup()
>>> print(fparams.GetNumFuncGroups())
>>> m = fparams.GetFuncGroup(0)
>>> m
39

在这里插入图片描述

  • 传入参数器,创建一个片段存储器:FragmentCatalog.FragCatalog()
    产生的分子片段都会存储在该对象中
  • 创建一个片段生成器:FragmentCatalog.FragCatGenerator()
    通过该对象生成片段
  • 计算分子片段:AddFragsFromMol()
  • 查看分子片段数量:GetNumEntries()
>>> m = Chem.MolFromSmiles('OCC=CC(=O)O')
>>> fcat = FragmentCatalog.FragCatalog(fparams)
>>> fcgen = FragmentCatalog.FragCatGenerator()
>>> fcgen.AddFragsFromMol(m, fcat)
>>> fcat.GetNumEntries()
3
  • 通过存储器查看片段:fcat.GetEntryDescription()
    尖括号中的内容:表示与片段相连的官能团,以下面的结果为例:
    第0号片段中,对应着一个乙基片段,该乙基与一个羟基相连。
    第1号片段中,对应着一个乙烯片段,该乙烯与一个羧基相连。
>>> print(fcat.GetEntryDescription(0))
>>> print(fcat.GetEntryDescription(1))
C<-O>C
C=C<-C(=O)O>

关于官能团的详细信息,可以通过下述方法获取:

  • 向存储器传入分子片段id,获取片段中所包含的官能团编号:fcat.GetEntryFuncGroupIds()
  • 向参数器传入官能团编号,获取官能团对应的mol对象:fparams.GetFuncGroup()
>>> print(list(fcat.GetEntryFuncGroupIds(0)))
>>> funcgroup = fparams.GetFuncGroup(34)
>>> print
### Ecp6分子指纹的介绍 Ecp6(Extended-Connectivity Fingerprints 6)分子指纹是一种广泛应用于化学信息学的分子描述符。它属于扩展连接性指纹(ECFP)系列,通过对分子的原子及其连接信息进行编码,以一种二进制向量的形式来表示分子的结构特征。 ECFP指纹基于分子的拓扑结构,采用迭代算法生成。它从每个原子开始,逐步扩展考虑其周围的原子和化学键,迭代6次(对应Ecp6中的6),从而捕获分子中不同距离和大小的结构片段信息。每个结构片段会被哈希到二进制向量的特定位置,若存在该片段则对应位置置为1,否则为0。 ### Ecp6分子指纹的应用 1. **虚拟筛选**:在药物研发中,虚拟筛选是从大量化合物库中寻找潜在活性分子的重要手段。Ecp6分子指纹可以用于计算化合物之间的相似度,将待筛选化合物已知活性分子指纹进行比较,筛选出活性分子结构相似的化合物进行进一步研究,从而提高药物研发的效率。 2. **定量构效关系(QSAR)研究**:QSAR研究旨在建立化合物的结构生物活性之间的定量关系。Ecp6分子指纹能够将分子结构信息转化为数值特征,用于构建QSAR模型。通过这些模型,可以预测化合物的生物活性、毒性等性质,为新化合物的设计和优化提供指导。 3. **化学空间分析**:可以利用Ecp6分子指纹来表示化合物在化学空间中的位置。通过对大量化合物的指纹进行分析,可以了解化合物的分布情况,发现新的化学结构类型和潜在的药物靶点,有助于药物研发中的化合物库设计和优化。 ### 相关知识 - **相似度计算**:常用的计算基于Ecp6分子指纹的化合物相似度的方法是Tanimoto系数。Tanimoto系数定义为两个分子指纹向量中共同为1的位的数量除以两个向量中至少有一个为1的位的数量,公式如下: $$T = \frac{|A \cap B|}{|A \cup B|}$$ 其中,$A$和$B$分别表示两个分子指纹向量,$|A \cap B|$表示两个向量中共同为1的位的数量,$|A \cup B|$表示两个向量中至少有一个为1的位的数量。 - **开源工具**:在Python中,可以使用RDKit库来生成和处理Ecp6分子指纹。以下是一个简单的示例代码: ```python from rdkit import Chem from rdkit.Chem import AllChem # 读取分子 mol = Chem.MolFromSmiles('CCO') # 生成Ecp6分子指纹 fp = AllChem.GetMorganFingerprintAsBitVect(mol, 3, nBits=1024) print(fp) ``` 上述代码中,`GetMorganFingerprintAsBitVect`函数用于生成Ecp6分子指纹,其中`mol`是分子对象,`3`表示迭代次数(对应Ecp6),`nBits`表示二进制向量的长度。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值