四种分子指纹的介绍:Substructure Fingerprint(子结构指纹)、PubChem 分子指纹、MACCS 分子指纹、ExtFP分子指纹

1. Substructure Fingerprint(子结构指纹)

SubFP 为前缀的分子指纹通常指的是 Substructure Fingerprint(子结构指纹)。子结构指纹是一种基于化学子结构的分子表征方法,广泛用于分子信息学、药物发现和虚拟筛选等领域。

子结构指纹的基本特点:

  1. 基于子结构的表示:子结构指纹是通过检测化合物中是否存在特定的化学子结构来生成的。例如,可能会定义一个子结构(如苯环或羧酸基团),然后查看化合物是否包含这些子结构。

  2. 二进制编码:子结构指纹通常是一个位串,每个位表示特定子结构的存在(1 表示存在,0 表示不存在)。不同的子结构会占据指纹的不同位置。

  3. 用于分子相似性计算:子结构指纹可用于计算化合物之间的相似性。常见的相似性度量包括 Tanimoto 相似性

  4. 快速高效:与复杂的 3D 表征相比,子结构指纹计算简单,并且能够在大型分子库中快速筛选出与目标结构相似的化合物。

具体应用:

  • 虚拟筛选:子结构指纹可以用于筛选大规模化学库中的分子,寻找与活性化合物结构相似的分子。
  • 定量构效关系 (QSAR) 分析:用于预测分子活性或其他性质。
  • 化合物分类和聚类:通过基于子结构的指纹来聚类相似的化合物。

使用子结构指纹为每个节点生成向量,代码:

import pickle
import urllib
import pandas as pd
import pubchempy
from rdkit import Chem
from rdkit.Chem import AllChem
from rdkit.Chem import MACCSkeys
from rdkit.Chem import rdMolDescriptors
from rdkit.Chem import RDKFingerprint


Df = pd.read_csv('/home/Molecular_fingerprint/Data/filtered_molecular_Smiles.csv').loc[:,('name','smiles')]
substructure_fingerprint_list = []

for smiles in Df['smiles']:
    molecule = Chem.MolFromSmiles(smiles) # 将Smiles字符串转换成分子对象
    substructure_fingerprint = RDKFingerprint(molecule) # 生成子结构指纹
    substructure_fingerprint_list.append(list(substructure_fingerprint)) 
fingerprint_columns = [f'SubFP{i+1}' for i in range(len(substructure_fingerprint_list[0]))]

substructure_fingerprint_df = pd.DataFrame(substructure_fingerprint_list, columns=fingerprint_columns)
df = pd.concat([Df['name'], substructure_fingerprint_df], axis=1)

# 将生成的向量生成字典,保存在pkl文件中。

embedding_dict = {}
for index,row in df.iterrows():
    key = row['name']
    values = row[1:].values
    embedding_dict[key] = values
MACCS_FP = '/home/lMolecular_fingerprint/Result/MACCS_FP.pkl'
with open(MACCS_FP,'wb') as fin:
    pickle.dump(embedding_dict,fin)

 2. PubChem 分子指纹

 PubChemFPPubChem 分子指纹(PubChem Fingerprint),它是一种用于表示分子结构的 分子指纹,由 PubChem 数据库开发并用于分子相似性搜索和化学信息学分析。

PubChem 分子指纹的特点:

  1. 基于子结构:PubChemFP 是基于分子中是否存在预定义的子结构进行编码的分子指纹。它会检查化合物中是否存在特定的化学子结构,然后生成相应的二进制指纹表示。

  2. 881 位的二进制指纹:PubChem 分子指纹是一个由 881 个位(bit)组成的二进制字符串。每个位表示特定子结构的存在与否,1 表示该子结构存在,0 表示不存在。

  3. 标准化的分子描述符:PubChemFP 使用一组标准的子结构集合,这些子结构是根据 PubChem 数据库中广泛的化合物进行挑选和定义的,目的是为分子相似性比较提供一致性。

  4. 常用于分子相似性计算:在 PubChem 中,分子相似性搜索主要是通过 Tanimoto 相似性系数 来完成,使用 PubChem 指纹作为化合物的描述符进行比较。Tanimoto 系数用于衡量两个分子指纹之间的相似程度。

使用PubChem 分子指纹为每个节点生成向量,代码:

DF = pd.read_csv('/home/Molecular_fingerprint/Data/filtered_molecular_Smiles.csv').loc[:,('name','smiles')]
pubchem_fingerprint_list = []
for smiles in DF['smiles']:
    molecule = Chem.MolFromSmiles(smiles)
    pubchem_fingerprint = rdMolDescriptors.GetMorganFingerprintAsBitVect(molecule, 2, nBits=881) 
    pubchem_fingerprint_list.append(list(pubchem_fingerprint))
fingerprint_columns = [f'PubChemFP{i+1}' for i in range(881)]
pubchem_fingerprint_df = pd.DataFrame(pubchem_fingerprint_list, columns=fingerprint_columns)
df_Pubchem = pd.concat([DF['name'], pubchem_fingerprint_df], axis=1)

PubChem 指纹的具体用途:

  • 化合物相似性搜索:在 PubChem 数据库中,使用 PubChem 指纹可以快速查找与目标分子结构相似的化合物。
  • 药物发现和虚拟筛选:用于筛选具有潜在药理活性的化合物,通过查找结构相似的已知药物或活性化合物。
  • QSAR 模型:在定量构效关系 (QSAR) 建模中,PubChemFP 可以作为分子的特征,用于预测化合物的生物活性。

 3. MACCS 分子指纹 

 MACCSFPMACCS 分子指纹(Molecular ACCess System Fingerprints),一种用于表示分子结构的分子指纹。它通常用于化学信息学中的分子相似性搜索、分类、聚类和机器学习模型的特征表示。

MACCS 分子指纹的特点:

  1. 基于子结构的指纹:MACCSFP 是基于分子中的特定化学子结构生成的。它通过一系列预定义的子结构模式来表征分子,使用二进制编码表示是否存在这些子结构。

  2. 166 位(keys)的二进制指纹:MACCS 分子指纹的常见版本是 166 位的二进制串(有时也有其他变种,如 960 位)。每一位代表一个特定的子结构,如果某个分子中包含了某个子结构,该位就被设置为 1,否则为 0。

  3. 标准子结构集合:MACCS 指纹基于固定的 166 个子结构,这些子结构包括常见的化学基团和模式,比如羟基、胺基、芳环、共轭双键等。

  4. 简单且通用:MACCS 指纹由于子结构较少(仅有 166 个),相较于其他复杂的分子指纹(如 PubChemFP 或 ECFP),它更加简洁,因此在分子相似性搜索和快速筛选中有较广泛的应用。

  5. 广泛应用于分子相似性搜索:MACCSFP 通常用于化合物数据库中的分子相似性比较,基于这些子结构可以快速评估分子之间的相似性。

MACCS 指纹的具体用途:

  • 分子相似性搜索:通过 Tanimoto 系数等相似性度量方法,用 MACCS 指纹可以快速查找与目标分子相似的化合物。
  • 虚拟筛选和药物发现:在药物发现中,MACCS 指纹用于筛选化合物库,寻找潜在活性分子。
  • 机器学习中的特征向量:在分子分类或回归问题中,MACCS 指纹常作为化学特征输入到机器学习模型中。

使用MACCS 分子指纹为每个节点生成向量,代码:

df = pd.read_csv('/home/Molecular_fingerprint/Data/filtered_molecular_Smiles.csv').loc[:,('name','smiles')]
maccs_fingerprints = []
for i in df['smiles']:
    molecule = Chem.MolFromSmiles(i)
    maccs_fingerprint = MACCSkeys.GenMACCSKeys(molecule)
    bitstring = maccs_fingerprint.ToBitString()
    maccs_fingerprints.append([int(bit) for bit in bitstring[1:]])
fingerprint_columns = [f'MACCSFP{i+1}' for i in range(166)]
fingerprint_df = pd.DataFrame(maccs_fingerprints, columns=fingerprint_columns)
df = pd.concat([df['name'], fingerprint_df], axis=1)

4.ExtFP 分子指纹 

ExtFP 是一种分子指纹(Extended Fingerprint)的缩写,属于扩展分子指纹类别,通常用于化学信息学领域的分子相似性计算和虚拟筛选中。与常见的分子指纹(如 PubChemFP、MACCSFP 等)相比,ExtFP 能更详细地捕捉分子的特征。

ExtFP 的特点:

  1. 基于环状或线性结构:ExtFP 分子指纹通过扩展连接的原子和基团来描述分子的结构,通常会捕捉分子中的环状和线性部分的关系。

  2. 扩展邻域的描述:它与传统的分子指纹相比,可以更好地捕获分子中较大距离范围内的原子和基团之间的关系,通常通过扩展从一个原子出发的路径,生成更多的描述符。

  3. 固定长度的二进制指纹:ExtFP 通常以固定长度的二进制位数组形式表示,每个位代表某种结构模式是否存在。

  4. 描述化学子结构的关系:ExtFP 能捕捉化学子结构之间的相对位置和关系,能够更详细地描述分子的特定特征,而不仅仅是简单的原子或基团存在性。

  5. 广泛应用于分子相似性比较:由于其更详细的分子结构描述能力,ExtFP 常用于分子相似性搜索、化合物库的虚拟筛选、药物发现中的分子配体筛选等任务中。

ExtFP 的用途:

  • 分子相似性计算:ExtFP 常用于分子数据库中的相似性搜索,相比于简单的指纹,它能够提供更精确的相似性评估。
  • 虚拟筛选:在药物研发或材料科学中,ExtFP 被用于从大型化合物库中筛选出潜在的活性分子。
  • 化合物分类与聚类:ExtFP 也可用于机器学习模型中,作为输入特征进行化合物的分类和聚类。

使用Extended Fingerprint为每个节点生成向量,代码:

Df = pd.read_csv('/home/Molecular_fingerprint/Data/filtered_molecular_Smiles.csv').loc[:,('name','smiles')]
substructure_fingerprint_list = []

for smiles in Df['smiles']:
    molecule = Chem.MolFromSmiles(smiles) # 将Smiles字符串转换成分子对象
    substructure_fingerprint = RDKFingerprint(molecule) # 生成子结构指纹
    substructure_fingerprint_list.append(list(substructure_fingerprint)) 
fingerprint_columns = [f'SubFP{i+1}' for i in range(len(substructure_fingerprint_list[0]))]

substructure_fingerprint_df = pd.DataFrame(substructure_fingerprint_list, columns=fingerprint_columns)
df = pd.concat([Df['name'], substructure_fingerprint_df], axis=1)

 四种分子指纹(PubchemFPMACCSFPExtFPSubFP)是可以联合使用的,

虽然这些分子指纹都与子结构的存在性相关,但它们的指纹长度生成算法特定目标以及应用场景各不相同。

  1. PubchemFP:较通用,适用于大规模化合物库中的化合物相似性搜索和筛选。
  2. MACCSFP:简单且计算效率高,适用于快速相似性比较,但对复杂分子表征能力有限。
  3. ExtFP:复杂且信息丰富,适合捕捉全局结构和详细的分子表征,用于生物活性预测等需要详细结构信息的任务。
  4. SubFP:专注于特定子结构,适合在药物设计中用于识别特定的药效团或重要功能团。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值