Пример #1
0
    def test_conditional_loss_duplicates(self):
        # we feed compute_conditional_loss with some duplicated data to see if
        # it's handled correctly

        loss1 = scientific.conditional_loss(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
        loss2 = scientific.conditional_loss(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)

        numpy.testing.assert_allclose(loss1, loss2)
Пример #2
0
    def test_conditional_loss_computation(self):
        loss_curve = Curve([
            (0.21, 0.131), (0.24, 0.108),
            (0.27, 0.089), (0.30, 0.066),
        ])

        self.assertAlmostEqual(0.2526, scientific.conditional_loss(
            loss_curve, 0.100), 4)
Пример #3
0
    def test_loss_is_max_if_probability_is_too_low(self):
        loss_curve = Curve([
            (0.21, 0.131), (0.24, 0.108),
            (0.27, 0.089), (0.30, 0.066),
        ])

        self.assertAlmostEqual(0.30,
                               scientific.conditional_loss(loss_curve, 0.050))
Пример #4
0
 def __call__(self, asset, hazard):
     asset_output = self.loss_curve_calculator(asset, hazard)
     cl = dict((poe,
                scientific.conditional_loss(asset_output.loss_curve, poe))
               for poe in self.conditional_loss_poes)
     return asset_output._replace(conditional_losses=cl)