Skip to content

Commit e05ead4

Browse files
Remove duplicate RelativeDifferenceScore
There seems two be two similar copies of `RelativeDifferenceScore`. Keeping the second instance which seems to be more consistent with other scores.
1 parent e9d495f commit e05ead4

File tree

1 file changed

+0
-75
lines changed

1 file changed

+0
-75
lines changed

sciunit/scores/complete.py

Lines changed: 0 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -244,81 +244,6 @@ def __str__(self):
244244
return 'Ratio = %.2f' % self.score
245245

246246

247-
class RelativeDifferenceScore(Score):
248-
"""A relative difference between prediction and observation.
249-
250-
The absolute value of the difference between the prediction and the
251-
observation is divided by a reference value with the same units. This
252-
reference scale should be chosen for each test such that normalization
253-
produces directly comparable scores across tests. For example, if 5 volts
254-
represents a medium size difference for TestA, and 10 seconds represents a
255-
medium size difference for TestB, then 5 volts and 10 seconds should be
256-
used for this reference scale in TestA and TestB, respectively. The
257-
attribute `scale` can be passed to the compute method or set for the whole
258-
class in advance. Otherwise, a scale of 1 (in the units of the
259-
observation and prediction) will be used.
260-
"""
261-
262-
_allowed_types = (float,)
263-
264-
_description = ('The relative difference between the prediction and the observation')
265-
266-
_best = 0.0 # A RelativeDifferenceScore of 0.0 is best
267-
268-
_worst = np.inf
269-
270-
scale = None
271-
272-
def _check_score(self, score):
273-
if score < 0.0:
274-
raise errors.InvalidScoreError(("RelativeDifferenceScore was initialized with "
275-
"a score of %f, but a RelativeDifferenceScore "
276-
"must be non-negative.") % score)
277-
278-
@classmethod
279-
def compute(cls, observation: Union[dict, float, int, pq.Quantity],
280-
prediction: Union[dict, float, int, pq.Quantity],
281-
key=None,
282-
scale: Union[float, int, pq.Quantity, None] = None) -> 'RelativeDifferenceScore':
283-
"""Compute the relative difference between the observation and a prediction.
284-
285-
Returns:
286-
RelativeDifferenceScore: A relative difference between an observation and a prediction.
287-
"""
288-
assert isinstance(observation, (dict, float, int, pq.Quantity))
289-
assert isinstance(prediction, (dict, float, int, pq.Quantity))
290-
291-
obs, pred = cls.extract_means_or_values(observation, prediction,
292-
key=key)
293-
294-
scale = scale or cls.scale or (obs/float(obs))
295-
assert type(obs) is type(scale)
296-
assert type(obs) is type(pred)
297-
if isinstance(obs, pq.Quantity):
298-
assert obs.units == pred.units, \
299-
"Prediction must have the same units as the observation"
300-
assert obs.units == scale.units, \
301-
"RelativeDifferenceScore.Scale must have the same units as the observation"
302-
assert scale > 0, \
303-
"RelativeDifferenceScore.scale must be positive (not %g)" % scale
304-
value = np.abs(pred - obs) / scale
305-
value = utils.assert_dimensionless(value)
306-
return RelativeDifferenceScore(value)
307-
308-
@property
309-
def norm_score(self) -> float:
310-
"""Return 1.0 for a ratio of 0.0, falling to 0.0 for extremely large values.
311-
312-
Returns:
313-
float: The value of the norm score.
314-
"""
315-
x = self.score
316-
return 1 / (1+x)
317-
318-
def __str__(self):
319-
return 'Relative Difference = %.2f' % self.score
320-
321-
322247
class RelativeDifferenceScore(Score):
323248
"""A relative difference between prediction and observation.
324249

0 commit comments

Comments
 (0)