RDKIT | 基于分子指纹的分子相似性

RDKIT | 基于分子指纹的分子相似性

文章转载至 https://www.freesion.com/article/6881686454/

分子相似性:

相似性原理(similar property principle)指出,总体相似的分子应具有相似的生物活性。

化合物的指纹对于使用计算机考虑化合物的相似性是必需的。已经提出了各种评估方法,但是最常用的评估方法称为“ Tanimoto系数 ”。使用以下等式从两个分子A和B的位阵列指纹计算Tanimoto系数:

加载数据

suppl = Chem.SDMolSupplier('sdf_20191011152835.sdf')
mols = [x for x in suppl if x is not None]
len(mols)

MACCS KEYS

由MDL开发的化学结构数据库衍生的指纹,以化学信息学闻名。共检查了166个子结构,由于1位用于保存RDKit中的信息,因此指纹总共为167位。如果具有子结构,则存储1,否则存储0。

maccs_fps = [AllChem.GetMACCSKeysFingerprint(mol) for mol in mols]
maccs = DataStructs.BulkTanimotoSimilarity(maccs_fps[0], maccs_fps[1:])

拓扑(TOPOLOGICAL)指纹

哈希指纹中类似于著名的Daylight指纹。也称为RDKit指纹。
通过存储与一定数量的键相对应的原子和键类型,不需要预先准备部分结构,因此可以更灵活地表达分子结构。

rdkit_fps = [Chem.Fingerprints.FingerprintMols.FingerprintMol(mol) for mol in mols]
rdkit = DataStructs.BulkTanimotoSimilarity(rdkit_fps[0], rdkit_fps[1:])

MORGAN指纹

这是一种称为“ 圆形子结构 ”的指纹,用于计算距原子一定距离的子结构。用半径值设置距离。它类似于所谓的ECFP(扩展连接指纹,Extended Connectivity Fingerprint))指纹,但应注意,搜索距离的定义不同。
常用的ECFP4 与设置半径= 2(默认值)大致相同。如果要使用指纹FCFP(功能连接指纹),请设置useFeatures = True。

“当比较ECFP / FCFP指纹和RDKit生成的Morgan指纹时,请记住ECFP4中的4对应于所考虑的原子环境的直径,而Morgan指纹采用的是radius参数。因此,上面的示例中,radius = 2,大致相当于ECFP4和FCFP4。”

morgan_fps = [AllChem.GetMorganFingerprintAsBitVect(mol, 2, 2048) for mol in mols]
morgan = DataStructs.BulkTanimotoSimilarity(morgan_fps[0], morgan_fps[1:])

AVALON原子对和二面角

可以从RDKit使用的Avalon化学信息学TookKit也具有指纹。

avalon_fps = [pyAvalonTools.GetAvalonFP(mol) for mol in mols]
avalon = DataStructs.BulkTanimotoSimilarity(avalon_fps[0], avalon_fps[1:])

指纹的比较

RDKit,MACCS,Morgan和Avalon指纹的相关性

df = pd.DataFrame({'RDKit': rdkit,
                  'Avalon': avalon,
                  'MACCS': maccs,
                  'Morgan': morgan})
df.corr().round(2)

可视化

Draw.MolsToGridImage([mols[8], mols[18]], subImgSize=(300,400), legends=['mols[8]', 'mols[18]'])

weight = SimilarityMaps.GetAtomicWeightsForFingerprint(mols[8], mols[18], SimilarityMaps.GetMorganFingerprint)
fig = SimilarityMaps.GetSimilarityMapFromWeights(mols[18], weight, size=(400,400))

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值