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)