分子指纹的学习|Rdkit

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 warnings

from rdkit.Chem.rdMolDescriptors import GetMorganFingerprintAsBitVect

rdBase.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博客 

你可能感兴趣的:(生物信息学,学习,python)