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",)
explicit_hydrogens = False
[docs] def description(self):
return "Wiener {}index".format(
"polarity " if self._polarity else "",
)
@classmethod
def preset(cls):
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