作者丨王建民
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