RDKit | 定量评估类药性(QED)

2021-02-04 15:13:19 浏览数 (1)

作者丨王建民

QED(quantitative estimate of drug-likeness)是一种将药物相似性量化为介于0和1之间的数值的方法。

药物相似性

如Lippinsky规则所示,获批药物的理化参数表明,这些化合物分布在狭窄的范围内。进入该化学空间的化合物称为“类药物 (drug-like)”。

类药性不是化学结构的特征,而是由几个物理参数组合确定的指标。已经提出了几种评价药物毒性的指标,但最具影响力的是Ripinsky等人的Lippinsky规则。QED是通过组合多个分子描述符来评估药物相似性的方法之一。

QED

数据集中使用以下八种描述符对QED进行了建模:

  • 分子量(MW)
  • logP(ALOGP)
  • 氢键供体的数量(HBDs)
  • 氢键受体的数量(HBAs)
  • 极表面积(PSA)
  • 可旋转键数目(ROTBs)
  • 芳环数目(AROMs)
  • 警报结构数目(ALERTS)

实际确定QED的定义时,有必要确定每个描述符的权重。确定该系数以便最大化香农熵(可以由QED解释的信息量),并考虑以下三种情况。

  • QED w,max:给出最大熵的系数
  • QED w,mo:给出前1000个熵的系数的平均值
  • QED w,u:所有描述符均被等同考虑(系数为1.0)

在QED w,max的情况下,PSA和HBA系数为零。即,建议其中包含的信息由其他描述符覆盖。本文进行的主成分分析对此提供了支持。

基于RDKit计算QED


导入库

代码语言:javascript复制
from rdkit import rdBase, Chem
from rdkit.Chem import PandasTools, QED, Descriptors, rdMolDescriptors
%matplotlib inline
print(rdBase.rdkitVersion)

载入数据

代码语言:javascript复制
df = PandasTools.LoadSDF('structures.sdf')
len(df)

计算QED

代码语言:javascript复制
df['QED'] = df.ROMol.map(QED.qed)

定义Lipinsky

代码语言:javascript复制
def rule_of_five(m):
    mw = Descriptors.MolWt(m)
    logp = Descriptors.MolLogP(m)
    hbd = rdMolDescriptors.CalcNumLipinskiHBD(m)
    hba = rdMolDescriptors.CalcNumLipinskiHBA(m)
    psa = Descriptors.TPSA(m)
    if (mw <= 500 and logp <= 5 and hbd <= 5 and hba <= 10):
        return 1
    else:
        return 0

计算Lipinsky

代码语言:javascript复制
df['Lipinski'] = df.ROMol.map(rule_of_five)

绘图

代码语言:javascript复制
import matplotlib as mpl
import seaborn as sns
with mpl.style.context('seaborn'):
    sns.violinplot(x='Lipinski', y='QED', data=df)

参考资料

https://www.nature.com/articles/nchem.1243

http://www.rdkit.org/docs/source/rdkit.Chem.QED.html?highlight=qed#rdkit.Chem.QED.qed

max

0 人点赞