rdkit 分子片段、R集团分解、片段指纹与指纹重要性分析


分子片段(molecular fragments)是一组可能具有相关功能的相连的原子组成的。RDKit中包含了大量把分子分解成片段的方法和处理片段的工具。

一、引入所需库

#! /usr/bin/python
# coding: utf-8

import os

from rdkit import Chem
from rdkit import RDConfig

from rdkit.Chem import Draw

from rdkit.Chem import FragmentCatalog

from rdkit.Chem import rdRGroupDecomposition as rdRGD
# from rdkit.Chem.Pharm2D.SigFactory import SigFactory
# from rdkit.Chem.Pharm2D import Generate, Gobbi_Pharm2D
from rdkit.ML import InfoTheory

二、分子片段(molecular fragments)

2.1 分子片段获取

# 获取官能团库
fName = os.path.join(
    RDConfig.RDDataDir,
    '/Users/zeoy/st/drug_development/st_rdcit/data/FunctionalGroups.txt'
)

# 根据官能团库实例化一个参数器
fparams = FragmentCatalog.FragCatParams(1, 6, fName)
# 查看官能团库中包含的官能团数量
fparams_num = fparams.GetNumFuncGroups()

mols = []
# 查看每个官能团对应的集团
for i in range(fparams_num):
    mols.append(fparams.GetFuncGroup(i))

# 可视化官能团库
img = Draw.MolsToGridImage(mols, molsPerRow=8)
img.save(
    '/Users/zeoy/st/drug_development/st_rdcit/img/mol39.jpg'
)

在这里插入图片描述
根据这份官能团列表,我们就可以分析分子在有多少个官能团

# 传入参数器,创建一个片段存储器,产生的分子片段都会存储在该对象中
fcat = FragmentCatalog.FragCatalog(fparams)

# 创建一个片段生成器,通过该对象生成片段
fcgen = FragmentCatalog.FragCatGenerator()

m = Chem.MolFromSmiles('OCC=CC(=O)O')
# 计算分子片段
fcgen.AddFragsFromMol(m, fcat)
# 查看分子片段数量
num_entries = fcat.GetNumEntries()
# 通过存储器查看片段
print(fcat.GetEntryDescription(0))
print(fcat.GetEntryDescription(1))
# C<-O>C
# C=C<-C(=O)O>

注 :尖括号中的内容 : 表示与片段相连的官能团 , 以上面的结果为例
第0号片段中 , 对应着一个乙基片段 , 该乙基片段与一个羟基相连
第1号片段中 , 对应着一个乙烯片段 , 该乙烯片段与一个羧基相连

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

# 向存储器传入分子片段id , 获取片段中所包含的官能团标号 : GetEntryFuncGroupIds
entries_group_ids = fcat.GetEntryFuncGroupIds(num_entries-1)

print('matched the function group ids is', list(entries_group_ids))
# matched the function group ids is [34, 1]

# 向参数器传入官能团编号,获取官能团对应的mol对象
fg1 = fparams.GetFuncGroup(1)
fg34 = fparams.GetFuncGroup(34)

print(fg1)  # <rdkit.Chem.rdchem.Mol object at 0x112b1b8f0>
print('name of group 1', fg1.GetProp('_Name'))  # name of group 1 -C(=O)O
print('name of group 34', fg34.GetProp('_Name'))  # name of group 34 -O

# 可视化官能团
mols = [fg1, fg34]
img = Draw.MolsToGridImage(mols, molsPerRow=2)
img.save(
    '/Users/zeoy/st/drug_development/st_rdcit/img/mol40.jpg'
)

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值