作者丨王建民
QED(quantitative estimate of drug-likeness)是一种将药物相似性量化为介于0和1之间的数值的方法。
药物相似性
如Lippinsky规则所示,获批药物的理化参数表明,这些化合物分布在狭窄的范围内。进入该化学空间的化合物称为“类药物 (drug-like)”。
类药性不是化学结构的特征,而是由几个物理参数组合确定的指标。已经提出了几种评价药物毒性的指标,但最具影响力的是Ripinsky等人的Lippinsky规则。QED是通过组合多个分子描述符来评估药物相似性的方法之一。
QED
数据集中使用以下八种描述符对QED进行了建模:
实际确定QED的定义时,有必要确定每个描述符的权重。确定该系数以便最大化香农熵(可以由QED解释的信息量),并考虑以下三种情况。
在QED w,max的情况下,PSA和HBA系数为零。即,建议其中包含的信息由其他描述符覆盖。本文进行的主成分分析对此提供了支持。
导入库
from rdkit import rdBase, Chem
from rdkit.Chem import PandasTools, QED, Descriptors, rdMolDescriptors
%matplotlib inline
print(rdBase.rdkitVersion)
载入数据
df = PandasTools.LoadSDF('structures.sdf')
len(df)
计算QED
df['QED'] = df.ROMol.map(QED.qed)
定义Lipinsky
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
df['Lipinski'] = df.ROMol.map(rule_of_five)
绘图
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