Source code for mordred.Lipinski
from ._base import Descriptor
from .SLogP import SMR, SLogP
from .Weight import Weight
from .HydrogenBond import HBondDonor, HBondAcceptor
__all__ = ("Lipinski", "GhoseFilter")
class LipinskiLike(Descriptor):
__slots__ = ()
@classmethod
def preset(cls, version):
yield cls()
def parameters(self):
return ()
def __str__(self):
return self.__class__.__name__
rtype = bool
[docs]
class Lipinski(LipinskiLike):
r"""Lipinski rule of 5 descriptor.
LogP: SLogP
"""
since = "1.0.0"
__slots__ = ()
[docs]
def description(self):
return "Lipinski rule of five"
def dependencies(self):
return {
"HBAcc": HBondAcceptor(),
"HBDon": HBondDonor(),
"LogP": SLogP(),
"MW": Weight(),
}
def calculate(self, LogP, MW, HBDon, HBAcc):
return HBDon <= 5 and HBAcc <= 10 and MW <= 500 and LogP <= 5
[docs]
class GhoseFilter(LipinskiLike):
r"""Ghose filter descriptor.
LogP, MR: SLogP, SMR
"""
since = "1.0.0"
__slots__ = ()
[docs]
def description(self):
return "Ghose filter"
def dependencies(self):
return {"LogP": SLogP(), "MR": SMR(), "MW": Weight()}
def calculate(self, MW, LogP, MR):
return (
(160 <= MW <= 480)
and (20 <= self.mol.GetNumAtoms() <= 70)
and (-0.4 <= LogP <= 5.6)
and (40 <= MR <= 130)
)