in orbit/diagnostics/backtest.py [0:0]
def _evaluate_test_metric(self, metric):
# signature already validated in `self._validate_metric_callable()` so the following
# values for metric_signature already are only for valid signatures
metric_signature = self._get_metric_callable_signature(metric)
if metric_signature == {
BacktestFitKeys.ACTUAL.value,
BacktestFitKeys.PREDICTED.value,
}:
eval_out = metric(
actual=self._test_actual, prediction=self._test_prediction
)
else:
# get signature and match with the private attributes respectively
# mainly used for cases we need training data into test metrics
# such as rmsse etc.
_valid_args = [
"_" + x for x in metric_signature
] # add leading underscore to found signatures
valid_arg_vals = [
getattr(self, x) for x in _valid_args
] # get private variable eg `self._test_actual`
# dictionary of metric args and arg value
valid_kwargs = {k: v for k, v in zip(metric_signature, valid_arg_vals)}
eval_out = metric(**valid_kwargs)
return eval_out