Source code for mordred.Constitutional

import numpy as np

from ._base import Descriptor
from ._atomic_property import AtomicProperty, get_properties

__all__ = ('ConstitutionalSum', 'ConstitutionalMean',)


[docs]class ConstitutionalSum(Descriptor): r"""sum of constitutional descriptor. .. math:: S_p = \sum^A_{i=1} \frac{p_i}{p_{\rm C}} where :math:`p_i` is atomic property of i-th atom, :math:`p_{\rm C}` is atomic property of carbon :type prop: :py:class:`str` or :py:class:`function` :param prop: :ref:`atomic_properties` """ __slots__ = ('_prop',) @classmethod def preset(cls): return map(cls, get_properties()) def parameters(self): return self._prop, def __init__(self, prop='v'): self._prop = AtomicProperty(self.explicit_hydrogens, prop) _prefix = 'S' def __str__(self): return '{}{}'.format(self._prefix, self._prop.as_argument) def dependencies(self): return {'P': self._prop} def calculate(self, P): return np.sum(P / self._prop.carbon) rtype = float
[docs]class ConstitutionalMean(ConstitutionalSum): r"""mean of constitutional descriptor. .. math:: M_p = \frac{S_p}{A} :type prop: :py:class:`str` or :py:class:`function` :param prop: :ref:`atomic_properties` :rtype: float """ __slots__ = ('_prop',) _prefix = 'M' @classmethod def preset(cls): return map(cls, get_properties()) def dependencies(self): return {'S': ConstitutionalSum(self._prop)} def calculate(self, S): return S / self.mol.GetNumAtoms()