def export_dmg_xml(key, dstore, damage_states, dmg_data, suffix): """ Export damage outputs in XML format. :param key: dmg_dist_per_asset|dmg_dist_per_taxonomy|dmg_dist_total|collapse_map :param dstore: the datastore :param damage_states: the list of damage states :param dmg_data: a list [(loss_type, unit, asset_ref, mean, stddev), ...] :param suffix: a suffix specifying the GSIM realization """ dest = dstore.export_path('%s%s.%s' % (key[0], suffix, key[1])) risk_writers.DamageWriter(damage_states).to_nrml(key[0], dmg_data, dest) return AccumDict({key: [dest]})
def export_dmg_xml(key, dstore, damage_states, dmg_data, lt, rlz): """ Export damage outputs in XML format. :param key: dmg_dist_per_asset|dmg_dist_per_taxonomy|dmg_dist_total|collapse_map :param dstore: the datastore :param damage_states: the list of damage states :param dmg_data: a list [(loss_type, unit, asset_ref, mean, stddev), ...] :param lt: loss type string :param rlz: a realization object """ dest = dstore.build_fname('%s-%s' % (key[0], lt), rlz, key[1]) risk_writers.DamageWriter(damage_states).to_nrml(key[0], dmg_data, dest) return AccumDict({key: [dest]})
def export_dmg_dist(key, output, target): """ Export the damage distribution identified by the given output to the `target`. :param output: DB output record which identifies the distribution. A :class:`openquake.engine.db.models.Output` object. :param target: Destination directory of the exported file, or a file-like object """ job = output.oq_job dest = _get_result_export_dest(target, output) damage_states = list( models.DmgState.objects.filter( risk_calculation__id=job.id).order_by('lsi')) writer = risk_writers.DamageWriter(damage_states) damagecls = DAMAGE[key[0]] if key[0] == 'collapse_map': data = damagecls.objects.filter(dmg_state=damage_states[-1]) else: data = damagecls.objects.filter(dmg_state__risk_calculation__id=job.id) writer.to_nrml(key[0], data, dest) return dest
data = [ BCR_NODE(asset_ref="asset_1", location=writers.Site(1.0, 1.5), bcr=15.23, average_annual_loss_original=10.5, average_annual_loss_retrofitted=20.5) ] writer.serialize(data) _utils.assert_xml_equal(expected, self.filename) ######################## Scenario Damage Writers ######################### dw = writers.DamageWriter([NO_DAMAGE, SLIGHT, MODERATE, EXTENSIVE, COMPLETE]) class DamageWriterTestCase(unittest.TestCase): def test_dmg_total_node(self): data = itertools.starmap(DMG_DIST_TOTAL, [ (NO_DAMAGE, 1.0, 1.6), (SLIGHT, 34.8, 18.3), (MODERATE, 64.2, 19.8), (EXTENSIVE, 64.3, 19.7), (COMPLETE, 64.3, 19.7), ]) check_equal(__file__, 'expected_dmg_total.xml', dw.to_nrml('dmg_dist_total', data)) def test_dmg_per_taxonomy_node(self):