药物分子关于RO5等常用属性计算(LogP, TPSA, MW, QED....)

药物早期设计中,常常需要根据类药五原则(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):过多的手性中心,会导致合成与纯化工艺难度的大幅提高。

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

from rdkit import Chem
import numpy as np
from rdkit.Chem import QED, Descriptors, rdMolDescriptors


def cal_mol_props(smi, verbose=False):
    try:
        m = Chem.MolFromSmiles(smi)
        if not m:
            return None, None, None, None, None, None, None, None

        logp = np.round(Descriptors.MolLogP(m), 2)
        tpsa = np.round(Descriptors.TPSA(m), 1)
        mw = np.round(Descriptors.MolWt(m), 1)
        qed = np.round(QED.qed(m), 2)
        hba = rdMolDescriptors.CalcNumLipinskiHBA(m)
        hbd = rdMolDescriptors.CalcNumLipinskiHBD(m)

        rob = rdMolDescriptors.CalcNumRotatableBonds(m)

        chiral_center = len(Chem.FindMolChiralCenters(m, includeUnassigned=True))
        if verbose:
            print(smi)
            print('Logp ', logp)
            print('TPSA ', tpsa)
            print('MW ', mw)
            print('QED ', qed)
            print('HBA ', hba)
            print('HBD ', hbd)
            print('RotB ', rob)
            print('chiral_center ', chiral_center)
        return logp, tpsa, mw, qed, hba, hbd, rob, chiral_center

    except Exception as e:
        print(e)
        return None, None, None, None, None, None, None, None

logp, tpsa, mw, qed, hba, hbd, rob, chiral_center = cal_mol_props("O=C1c2ccc[n+]3c2-c2c1ccc[n+]2CC3", verbose=True)

猜你喜欢

转载自blog.csdn.net/weixin_43135178/article/details/128105186
mw4