def METHOD_NAME(self, model, ranking_subset: List[int], metric_name: str) -> float:
    if self._engine.use_original_metric:
        score = super().METHOD_NAME(model, ranking_subset, metric_name)
    else:
        ranking_metric = self._metrics_config[metric_name].ranking
        original_outputs = [(i, self._original_per_sample_metrics[ranking_metric.name][i]) for i in ranking_subset]
        _, original_outputs = zip(*sorted(original_outputs, key=lambda x: x[0]))
        self._engine.set_model(model)
        per_sample_metrics = self._engine.calculate_per_sample_metrics(ranking_subset)
        quantized_outputs = [y["result"] for y in per_sample_metrics]
        nmse_distance = lambda u, v: np.dot(u - v, u - v) / np.dot(u, u)
        distance_between_samples = [
            nmse_distance(ui.flatten(), vi.flatten()) for ui, vi in zip(original_outputs, quantized_outputs)
        ]
        score = np.mean(distance_between_samples).item()
        score = ranking_metric.comparator(score)
    return score