Skip to contents

Validates that a metric object is an S7 instance of the Metric class with a valid name property. Method existence is not checked because S7 dispatches via generics and the base class raises errors for unimplemented abstract methods.

When representative values are supplied (fit_result plus data_bundle), validation additionally executes compute_metric() once and checks that its output passes the metric output schema and that every field declared in the metric's schema is produced. This catches broken external metrics before a run starts instead of as thousands of per-task failures.

Usage

validate_metric(
  metric,
  fit_result = NULL,
  data_bundle = NULL,
  context = NULL,
  task_ctx = NULL
)

Arguments

metric

An S7 object to validate as a Metric.

fit_result

Optional representative bayesim_fit_result (new_fit_result()) driving a conformance execution of compute_metric(). Must be supplied together with data_bundle.

data_bundle

Optional representative data bundle for the conformance execution.

context

Optional representative context list (e.g. predictions, log_lik). Defaults to an empty list; metrics should degrade to NA rather than erroring when a needed context element is missing.

task_ctx

Optional representative task context. Defaults to a stable placeholder.

Value

The input metric, invisibly, if validation passes.

Errors

Throws a bayesim_contract_error condition if validation fails (or its subclass bayesim_validation_error for representative-execution failures).