def evaluate()

in clearbox/features.py [0:0]


  def evaluate(self, signal_data: pd.DataFrame) -> npt.NDArray[float]:
    """Evaluate the node on `signal_data`.

    Args:
      signal_data: `pd.DataFrame` of signal values.

    Returns:
      Array of results as floats.
    """
    arg_data = self._arg.evaluate(signal_data)
    if self._group_by is not None:
      group_by_data = self._group_by.evaluate(signal_data)
      ranks = (
          pd.DataFrame({"groupby": group_by_data, "arg": -arg_data})
          .groupby("groupby")["arg"]
          .rank()
          .values
      )
    else:
      ranks = pd.Series(-arg_data).rank().values
    return 1.0 / (ranks + self._k)