Source code for mordred.RotatableBond

from rdkit.Chem.rdMolDescriptors import CalcNumRotatableBonds

from ._base import Descriptor
from .BondCount import BondCount

__all__ = (
    "RotatableBondsCount", "RotatableBondsRatio",
)


class RotatableBondsBase(Descriptor):
    __slots__ = ()
    explicit_hydrogens = False

    @classmethod
    def preset(cls):
        yield cls()

    def parameters(self):
        return ()


[docs]class RotatableBondsCount(RotatableBondsBase): r"""rotatable bonds count descriptor(rdkit wrapper).""" __slots__ = ()
[docs] def description(self): return "rotatable bonds count"
def __str__(self): return "nRot" def calculate(self): return CalcNumRotatableBonds(self.mol) rtype = int
[docs]class RotatableBondsRatio(RotatableBondsBase): r"""rotatable bonds ratio descriptor. .. math:: {\rm RotRatio} = \frac{N_{\rm rotatable bonds}}{N_{\rm bonds}} :returns: NaN when :math:`N_{\rm bonds} = 0` """ __slots__ = ()
[docs] def description(self): return "rotatable bonds ratio"
def __str__(self): return "RotRatio" def dependencies(self): return { "nB": BondCount("heavy"), "nRot": RotatableBondsCount(), } def calculate(self, nRot, nB): with self.rethrow_zerodiv(): return float(nRot) / float(nB) rtype = float