Source code for mordred.WienerIndex
from ._base import Descriptor
from ._graph_matrix import DistanceMatrix
__all__ = ("WienerIndex",)
[docs]
class WienerIndex(Descriptor):
r"""Wiener index.
:type polarity: bool
:param polarity: use polarity Wiener index
"""
__slots__ = ("_polarity",)
since = "1.0.0"
explicit_hydrogens = False
[docs]
def description(self):
return "Wiener {}index".format("polarity " if self._polarity else "")
@classmethod
def preset(cls, version):
yield cls(False)
yield cls(True)
def __str__(self):
return "WPol" if self._polarity else "WPath"
def parameters(self):
return (self._polarity,)
def __init__(self, polarity=False):
self._polarity = polarity
def dependencies(self):
return {"D": DistanceMatrix(self.explicit_hydrogens)}
def calculate(self, D):
if self._polarity:
return int(0.5 * (D == 3).sum())
else:
return int(0.5 * D.sum())
rtype = int