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):
        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 """ __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 """ __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)