药物分子关于RO5等常用属性计算

药物早期设计中,常常需要根据类药五原则(rule of five,RO5, 亦称Lipinski规则)进行初步判断筛选,RO5是辉瑞公司资深药物化学家Christopher A. Lipinski在1997年提出,虽然随时代发展虽然其适用范围逐渐变窄,但仍然非常有参考意义。其主要内容如下:

1.分子量(Mw)小于500;
2.氢键供体(HBD)数目小于5;
3.氢键受体(HBA)数目小于10;
4.脂水分配系数(logP)小于5;
5.可旋转键(rotatable bonds)的数量不超过10个。
除了以上RO5性质,另外还有几个对于药物开发关键的性质:
6. 类药性(QED):0-1区间归一化后的数值,衡量化合物和药物相似性,虽不准确,但简单直接;
7. 手性中心个数(chiral_centers):过多的手性中心,会导致合成与纯化工艺难度的大幅提高。
UPDATE: 2022-5-20: 加入统计芳香环个数的代码,对应示例未更新

以下代码演示如何一次性计算以上所有性质,并批量处理数据。

from rdkit import Chem
import numpy as np
import pandas as pd
from rdkit.Chem import PandasTools, QED, Descriptors, rdMolDescriptors
def cal_mol_props(smi, verbose=False):
    try:
        m=Chem.MolFromSmiles(smi)
        if not m:
            return None
        mw = np.round(Descriptors.MolWt(m),1)
        logp = np.round(Descriptors.MolLogP(m),2)
        hbd = rdMolDescriptors.CalcNumLipinskiHBD(m)
        hba = rdMolDescriptors.CalcNumLipinskiHBA(m)
        psa = np.round(Descriptors.TPSA(m),1)
        rob= rdMolDescriptors.CalcNumRotatableBonds(m)
        qed= np.round(QED.qed(m),2)
        chiral_center=len(Chem.FindMolChiralCenters(m,includeUnassigned=True))
        aRings=rdMolDescriptors.CalcNumAromaticRings(m)

        if verbose:
            print ('Mw ',mw)
            print ('Logp ',logp)
            print ('HBD ', hbd)
            print ('HBA ', hba)
            print ('TPSA ', psa)
            print ('RotB ', rob)
            print ('QED ', qed)
            print ('chiral_center ', chiral_center)
            print ('aromatic rings ', aRings)
        return mw,logp,hbd,hba,psa,rob,qed,chiral_center,aRings
    
    except Exception as e:
        print (e)
        return None

接下来我们在简单的示范化合物库上,示范如何批量计算以上属性。该示意库有如下三个化合物。


图一、测试用三个化合物
pd.set_option("display.max_colwidth",500)
df=pd.read_csv('data/demo.smi',header=None,names=['SMILES'])
print (df.shape)
df.head()
output:
(3,1)
    SMILES
0   CC(C)NCC(O)COc1cccc2ccccc12
1   Cc1cn([C@H]2C[C@H](F)[C@@H](CO)O2)c(=O)[nH]c1=O
2   CCC(=O)C(CC(C)N(C)C)(c1ccccc1)c1ccccc1

接下来计算返回含有所有药物相关性质的表格,

df["Mw"],df["logP"],df["HBD"],df["HBA"],df["TPSA"],df["RotB"],
df["QED"],df["chiral"]= zip(*df['SMILES'].apply(cal_mol_props))

三个化合物均是已知药物分子,可见它们的性质符合RO5规则,并且类药性QED得分均佳。

SMILES Mw logP HBD HBA TPSA RotB QED chiral
CC(C)NCC(O)COc1cccc2ccccc12 259.3 2.58 2 3 41.5 6 0.84 0
Cc1cn([C@H]2CC@HC@@HO2)c(=O)[nH]c1=O 244.2 -0.54 2 6 84.3 2 0.73 3
CCC(=O)C(CC(C)N(C)C)(c1ccccc1)c1ccccc1 309.5 4.29 0 2 20.3 7 0.76 0
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容