Source code for mordred.FragmentComplexity
from __future__ import division
from ._base import Descriptor
__all__ = ("FragmentComplexity",)
[docs]
class FragmentComplexity(Descriptor):
r"""fragment complexity descriptor.
.. math::
{\rm fragCpx} = \left| B^2 - A^2 + A \right| + \frac{H}{100}
where
:math:`A` is number of atoms,
:math:`B` is number of bonds,
:math:`H` is number of hetero atoms
References
* :doi:`10.1021/ci050521b`
"""
since = "1.0.0"
__slots__ = ()
[docs]
def description(self):
return "fragment complexity"
@classmethod
def preset(cls, version):
yield cls()
explicit_hydrogens = False
def parameters(self):
return ()
def __str__(self):
return "fragCpx"
def calculate(self):
A = self.mol.GetNumAtoms()
B = self.mol.GetNumBonds()
H = sum(1 for a in self.mol.GetAtoms() if a.GetAtomicNum() != 6)
return abs(B ** 2 - A ** 2 + A) + H / 100
rtype = float