RDKit中的分子指纹是一种用于评估分子相似性的子结构指纹。分子指纹通过将分子的结构信息编码为位串(bit string)来表示,每个位代表分子中是否存在特定的子结构或化学模式。RDKit提供了多种分子指纹生成方法,如Substructure Fingerprint(子结构指纹)、PubChem 分子指纹、MACCS 分子指纹、ExtFP分子指纹等。这些指纹可以用于分子相似性比较、分子分类、分子聚类、分子筛选等许多领域中的化学信息学研究。
一、化学指纹(fingerprint)介绍
1. Substructure Fingerprint(子结构指纹)
子结构指纹是一种基于化学子结构的分子表征方法,广泛用于分子信息学、药物发现和虚拟筛选等领域。子结构指纹通过检测化合物中是否存在特定的化学子结构来生成,通常是一个位串,每个位表示特定子结构的存在(1 表示存在,0 表示不存在)。这种指纹可用于计算化合物之间的相似性,常见的相似性度量包括Tanimoto 相似性。
2. PubChem 分子指纹
PubChemFP 是一种用于表示分子结构的分子指纹,由 PubChem 数据库开发并用于分子相似性搜索和化学信息学分析。PubChem 分子指纹是一个由 881 个位(bit)组成的二进制字符串,每个位表示特定子结构的存在与否,1 表示该子结构存在,0 表示不存在。PubChem 指纹的具体用途包括化合物相似性搜索、药物发现和虚拟筛选、QSAR 模型等。
3. MACCS 分子指纹
MACCSFP 是一种用于表示分子结构的分子指纹,通常用于化学信息学中的分子相似性搜索、分类、聚类和机器学习模型的特征表示。MACCS 分子指纹的常见版本是 166 位的二进制串,每一位代表一个特定的子结构,如果某个分子中包含了某个子结构,该位就被设置为 1,否则为 0。MACCS 指纹的具体用途包括分子相似性搜索、虚拟筛选和药物发现、机器学习中的特征向量等。
4. ECFP分子指纹
扩展连通性指纹(Extended Connectivity Fingerprints,ECFP),属于扩展分子指纹类别,通常用于化学信息学领域的分子相似性计算和虚拟筛选中。与常见的分子指纹(如 PubChemFP、MACCSFP 等)相比,ECFP能更详细地捕捉分子的特征,通过扩展连接的原子和基团来描述分子的结构,通常会捕捉分子中的环状和线性部分的关系。ECFP常用于分子相似性搜索、化合物库的虚拟筛选、药物发现中的分子配体筛选等任务中。在 RDKit 中,ECFP 指纹又叫 Morgan 指纹,其原因为ECFP的核心思想来自于 Morgan 算法,该算法试图为分子中的每个原子分配一个唯一的、连续的编号。
二、代码实现
from rdkit import Chem
from rdkit.Chem import RDKFingerprint, rdMolDescriptors, MACCSkeys, AllChem
from rdkit import rdBase
import warningsfrom rdkit.Chem.rdMolDescriptors import GetMorganFingerprintAsBitVectrdBase.DisableLog('rdApp.warning')
warnings.filterwarnings('ignore')smiles = 'O=C1N(C/C=C/c2cn[nH]c2)[C@H](Cc2ccccc2)[C@H](O)[C@@H](O)[C@@H](Cc2ccccc2)N1C/C=C/c1cn[nH]c1'
mol = Chem.MolFromSmiles(smiles) # 将Smiles字符串转换成分子对象# Substructure Fingerprint
sub_fp = list(RDKFingerprint(mol, fpSize=1024)) # 生成子结构指纹# PubChem Fingerprint
pubchem_fp = list(rdMolDescriptors.GetMorganFingerprintAsBitVect(mol, 2, nBits=881))# MACCS Fingerprint
maccs_fp = list(MACCSkeys.GenMACCSKeys(mol))# Extended Fingerprint
morgan_fp = list(GetMorganFingerprintAsBitVect(mol, 2, 1024))
三、参考博客
四种分子指纹的介绍:Substructure Fingerprint(子结构指纹)、PubChem 分子指纹、MACCS 分子指纹、ExtFP分子指纹-CSDN博客
The RDKit Documentation — The RDKit 2024.09.5 documentation
Rdkit|化学指纹(fingerprint)_化学指纹类型-CSDN博客