def test_ratio_is_zero_if_probability_is_out_of_bounds(self): loss_curve = shapes.Curve([(0.21, 0.131), (0.24, 0.108), (0.27, 0.089), (0.30, 0.066)]) self.assertEqual(0.0, common.compute_conditional_loss(loss_curve, 0.050)) self.assertEqual(0.0, common.compute_conditional_loss(loss_curve, 0.200))
def test_conditional_loss_duplicates(self): # we feed compute_conditional_loss with some duplicated data to see if # it's handled correctly closs1 = common.compute_conditional_loss(shapes.Curve([(0.21, 0.131), (0.24, 0.108), (0.27, 0.089), (0.30, 0.066)]), 0.100) # duplicated y values, different x values, (0.19, 0.131), (0.20, 0.131) #should be skipped closs2 = common.compute_conditional_loss(shapes.Curve([(0.19, 0.131), (0.20, 0.131), (0.21, 0.131), (0.24, 0.108), (0.27, 0.089), (0.30, 0.066)]), 0.100) self.assertEquals(closs1, closs2)
def compute_conditional_loss(self, col, row, loss_curve, asset, loss_poe): """ Compute the conditional loss for a loss curve and probability of exceedance """ loss_conditional = common.compute_conditional_loss(loss_curve, loss_poe) key = kvs.tokens.loss_key(self.id, row, col, asset["AssetID"], loss_poe) LOGGER.debug("RESULT: conditional loss is %s, write to key %s" % ( loss_conditional, key)) kvs.set(key, loss_conditional)
def compute_conditional_loss(self, col, row, loss_curve, asset, loss_poe): """ Compute the conditional loss for a loss curve and probability of exceedance """ loss_conditional = common.compute_conditional_loss( loss_curve, loss_poe) key = kvs.tokens.loss_key(self.id, row, col, asset["assetID"], loss_poe) LOGGER.debug("RESULT: conditional loss is %s, write to key %s" % (loss_conditional, key)) kvs.set(key, loss_conditional)
def compute_conditional_loss(job_id, col, row, loss_curve, asset, loss_poe): """Compute the conditional loss for a loss curve and Probability of Exceedance (PoE).""" loss_conditional = common.compute_conditional_loss( loss_curve, loss_poe) key = kvs.tokens.loss_key( job_id, row, col, asset["assetID"], loss_poe) LOG.debug("Conditional loss is %s, write to key %s" % (loss_conditional, key)) kvs.set(key, loss_conditional)
def test_ratio_is_max_if_probability_is_too_low(self): loss_curve = shapes.Curve([(0.21, 0.131), (0.24, 0.108), (0.27, 0.089), (0.30, 0.066)]) self.assertEqual(0.30, common.compute_conditional_loss(loss_curve, 0.050))
def test_conditional_loss_computation(self): loss_curve = shapes.Curve([(0.21, 0.131), (0.24, 0.108), (0.27, 0.089), (0.30, 0.066)]) self.assertAlmostEqual(0.2526, common.compute_conditional_loss( loss_curve, 0.100), 4)