def compute_score(self, observation, prediction): # Sum of the difference between the curves. o = observation p = prediction interped = self.interp_IV_curves(o['v'], o['i'], p['v'], p['i']) if self.scale: def f(sf): score = FloatScore.compute_ssd(interped['i_obs'], (10**sf)*interped['i_pred']) return score.score.magnitude result = minimize(f,0.0) scale_factor = 10**result.x interped['i_pred'] *= scale_factor else: scale_factor = 1 score = FloatScore.compute_ssd(interped['i_obs'],interped['i_pred']) score.related_data['scale_factor'] = scale_factor self.interped = interped return score
def compute_score(self, observation, prediction): # Sum of the difference between the curves. o = observation p = prediction interped = self.interp_IV_curves(o['v'], o['i'], p['v'], p['i']) if self.scale: def f(sf): score = FloatScore.compute_ssd(interped['i_obs'], (10**sf)*interped['i_pred']) return score.score.magnitude result = minimize(f, 0.0) scale_factor = 10**result.x interped['i_pred'] *= scale_factor else: scale_factor = 1 score = FloatScore.compute_ssd(interped['i_obs'], interped['i_pred']) score.related_data['scale_factor'] = scale_factor self.interped = interped return score
def test_regular_score_types_2(self): BooleanScore(True) BooleanScore(False) score = BooleanScore.compute(5, 5) self.assertEqual(score.norm_score, 1) score = BooleanScore.compute(4, 5) self.assertEqual(score.norm_score, 0) self.assertEqual(1, BooleanScore(True).norm_score) self.assertEqual(0, BooleanScore(False).norm_score) t = RangeTest([2, 3]) score.test = t score.describe() score.description = "Lorem Ipsum" score.describe() score = FloatScore(3.14) self.assertRaises(InvalidScoreError, score.check_score, Quantity([1, 2, 3], "J")) obs = np.array([1.0, 2.0, 3.0]) pred = np.array([1.0, 2.0, 4.0]) score = FloatScore.compute_ssd(obs, pred) self.assertEqual(str(score), "1") self.assertEqual(score.score, 1.0) score = RatioScore(1.2) self.assertEqual(1, RatioScore(1.0).norm_score) self.assertEqual(0, RatioScore(1e12).norm_score) self.assertEqual(0, RatioScore(1e-12).norm_score) self.assertEqual(str(score), "Ratio = 1.20") self.assertRaises(InvalidScoreError, RatioScore, -1.0) score = RatioScore.compute({"mean": 4.0, "std": 1.0}, {"value": 2.0}) self.assertEqual(score.score, 0.5)
def test_regular_score_types_2(self): BooleanScore(True) BooleanScore(False) score = BooleanScore.compute(5, 5) self.assertEqual(score.norm_score, 1) score = BooleanScore.compute(4, 5) self.assertEqual(score.norm_score, 0) t = RangeTest([2, 3]) score.test = t score.describe() score.description = "Lorem Ipsum" score.describe() score = FloatScore(3.14) obs = np.array([1.0, 2.0, 3.0]) pred = np.array([1.0, 2.0, 4.0]) score = FloatScore.compute_ssd(obs, pred) self.assertEqual(score.score, 1.0) RatioScore(1.2) score = RatioScore.compute({'mean': 4., 'std': 1.}, {'value': 2.}) self.assertEqual(score.score, 0.5)
def test_regular_score_types_2(self): BooleanScore(True) BooleanScore(False) score = BooleanScore.compute(5,5) self.assertEqual(score.sort_key,1) score = BooleanScore.compute(4,5) self.assertEqual(score.sort_key,0) t = RangeTest([2,3]) score.test = t score.describe() score.description = "Lorem Ipsum" score.describe() score = FloatScore(3.14) obs = np.array([1.0,2.0,3.0]) pred = np.array([1.0,2.0,4.0]) score = FloatScore.compute_ssd(obs,pred) self.assertEqual(score.score,1.0) RatioScore(1.2) score = RatioScore.compute({'mean':4.,'std':1.},{'value':2.}) self.assertEqual(score.score,0.5)
def f(sf): score = FloatScore.compute_ssd(interped['i_obs'], (10**sf)*interped['i_pred']) return score.score.magnitude