def test_serialize_statistics_metadata(self): expected = io.BytesIO(b"""\ <?xml version='1.0' encoding='UTF-8'?> <nrml xmlns:gml="http://www.opengis.net/gml" xmlns="http://openquake.org/xmlns/nrml/0.4"> <aggregateLossCurve investigationTime="10.0" statistics="quantile" quantileValue="0.5" lossType="structural"> <poEs>1.0 0.5 0.1</poEs> <losses>10.0000 20.0000 30.0000</losses> <averageLoss>2.0000e+00</averageLoss> <stdDevLoss>5.0000e-01</stdDevLoss> </aggregateLossCurve> </nrml> """) writer = writers.AggregateLossCurveXMLWriter(self.filename, investigation_time=10.0, statistics="quantile", quantile_value=0.50, loss_type="structural") data = AGGREGATE_LOSS_CURVE(poes=[1.0, 0.5, 0.1], losses=[10.0, 20.0, 30.0], average_loss=2., stddev_loss=0.5) writer.serialize(data) _utils.assert_xml_equal(expected, self.filename)
def test_serialize_a_model(self): expected = io.BytesIO(b"""\ <?xml version='1.0' encoding='UTF-8'?> <nrml xmlns:gml="http://www.opengis.net/gml" xmlns="http://openquake.org/xmlns/nrml/0.4"> <aggregateLossCurve investigationTime="10.0" sourceModelTreePath="b1_b2_b3" gsimTreePath="b1_b2" unit="USD" lossType="structural"> <poEs>1.0 0.5 0.1</poEs> <losses>10.0000 20.0000 30.0000</losses> <averageLoss>3.0000e+00</averageLoss> <stdDevLoss>5.0000e-01</stdDevLoss> </aggregateLossCurve> </nrml> """) writer = writers.AggregateLossCurveXMLWriter( self.filename, investigation_time=10.0, source_model_tree_path="b1_b2_b3", gsim_tree_path="b1_b2", unit="USD", loss_type="structural") data = AGGREGATE_LOSS_CURVE( poes=[1.0, 0.5, 0.1], losses=[10.0, 20.0, 30.0], average_loss=3., stddev_loss=0.5) writer.serialize(data) _utils.assert_xml_equal(expected, self.filename)
def test_empty_model_not_supported(self): writer = writers.AggregateLossCurveXMLWriter(self.filename, investigation_time=10.0, statistics="mean", loss_type="structural") self.assertRaises(ValueError, writer.serialize, None)
def export_agg_loss_curve_xml(key, output, target): """ Export `output` to `target` by using a nrml loss curves serializers """ args = _export_common(output, output.loss_curve.loss_type) dest = _get_result_export_dest(target, output) risk_writers.AggregateLossCurveXMLWriter(dest, **args).serialize( output.loss_curve.aggregatelosscurvedata) return dest