Skip to content

Commit

Permalink
Remove MetricResult.config. (#513)
Browse files Browse the repository at this point in the history
Co-authored-by: Tetsuo Kiso <kiso@hey.com>
Co-authored-by: Tetsuo Kiso <tetsuok@users.noreply.github.com>
Co-authored-by: Graham Neubig <neubig@gmail.com>
  • Loading branch information
4 people authored Sep 30, 2022
1 parent 457019d commit d888d3a
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 22 deletions.
2 changes: 1 addition & 1 deletion explainaboard/metrics/external_eval.py
Original file line number Diff line number Diff line change
Expand Up @@ -181,4 +181,4 @@ def evaluate_from_stats(
ci[0], ci[1], confidence_alpha
)

return MetricResult(self.config, metric_values)
return MetricResult(metric_values)
19 changes: 3 additions & 16 deletions explainaboard/metrics/metric.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,28 +112,17 @@ def deserialize(cls, data: dict[str, SerializableData]) -> Serializable:
class MetricResult(Serializable):
"""A result of computing a metric over some data."""

_config: MetricConfig
_values: dict[str, MetricValue]

def __init__(self, config: MetricConfig, values: dict[str, MetricValue]) -> None:
def __init__(self, values: dict[str, MetricValue]) -> None:
"""Initializes MetricResult object.
Args:
config: Config of the Metric that calculated this result.
values: Values calculated by the Metric.
"""
self._config = config
self._values = values

@property
def config(self) -> MetricConfig:
"""Obtains underlying MetricConfig.
Returns:
A MetricConfig object related to this MetricResult.
"""
return self._config

def get_value(self, cls: type[MetricValueT], name: str) -> MetricValueT | None:
"""Obtains a value with specific type and name.
Expand All @@ -152,7 +141,6 @@ def get_value(self, cls: type[MetricValueT], name: str) -> MetricValueT | None:
def serialize(self) -> dict[str, SerializableData]:
"""See Serializable.serialize."""
return {
"config": self.config,
"values": self._values,
}

Expand All @@ -171,8 +159,7 @@ def deserialize(cls, data: dict[str, SerializableData]) -> Serializable:
):
raise ValueError("`values` has incompatible data.")

# See mypy/issues/4717
return cls(narrow(MetricConfig, data["config"]), values) # type: ignore
return cls(values)


@dataclass
Expand Down Expand Up @@ -611,7 +598,7 @@ def evaluate_from_stats(
ci[0], ci[1], confidence_alpha
)

return MetricResult(self.config, metric_values)
return MetricResult(metric_values)

def evaluate(
self,
Expand Down
7 changes: 2 additions & 5 deletions explainaboard/metrics/metric_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,10 +109,8 @@ class MetricResultTest(unittest.TestCase):
def test_serialize(self) -> None:
score = Score(1.0)
ci = ConfidenceInterval(1.0, 2.0, 0.5)
config = _DummyMetricConfig(name="foo")
result = MetricResult(config, {"bar": score, "baz": ci})
result = MetricResult({"bar": score, "baz": ci})
serialized: dict[str, SerializableData] = {
"config": config,
"values": {"bar": score, "baz": ci},
}
self.assertEqual(result.serialize(), serialized)
Expand All @@ -126,14 +124,13 @@ def test_deserialize(self) -> None:
"values": {"bar": score, "baz": ci},
}
restored = narrow(MetricResult, MetricResult.deserialize(serialized))
self.assertIs(restored.config, config)
self.assertEqual(restored._values, {"bar": score, "baz": ci})

def test_get_value(self) -> None:
score = Score(1.0)
ci = ConfidenceInterval(1.0, 2.0, 0.5)

result = MetricResult(_DummyMetricConfig(name="foo"), {"bar": score, "baz": ci})
result = MetricResult({"bar": score, "baz": ci})

# get_value() should return existing objects.
self.assertIsNone(result.get_value(Score, "foo"))
Expand Down

0 comments on commit d888d3a

Please sign in to comment.