def pre_execute(self): """ Associate the assets to the sites and build the riskinputs. """ if 'hazard_curves' in self.oqparam.inputs: # read hazard from file haz_sitecol, haz_curves = readinput.get_hcurves(self.oqparam) self.read_exposure() # define .assets_by_site self.load_riskmodel() self.sitecol, self.assets_by_site = self.assoc_assets_sites( haz_sitecol) curves_by_trt_gsim = {(0, 'FromFile'): haz_curves} self.rlzs_assoc = logictree.trivial_rlzs_assoc() self.save_mesh() else: # compute hazard super(ClassicalRiskCalculator, self).pre_execute() logging.info('Preparing the risk input') curves_by_trt_gsim = {} for dset in self.datastore['curves_by_sm'].values(): for key, curves in dset.items(): trt_id, gsim = key.split('-') curves_by_trt_gsim[int(trt_id), gsim] = curves.value self.assetcol = riskinput.build_asset_collection( self.assets_by_site, self.oqparam.time_event) self.riskinputs = self.build_riskinputs(curves_by_trt_gsim) self.monitor.oqparam = self.oqparam self.N = sum(len(assets) for assets in self.assets_by_site) self.L = len(self.riskmodel.loss_types) self.R = len(self.rlzs_assoc.realizations) self.I = self.oqparam.insured_losses self.Q1 = len(self.oqparam.quantile_loss_curves) + 1
def pre_execute(self): """ Associate the assets to the sites and build the riskinputs. """ if 'hazard_curves' in self.oqparam.inputs: # read hazard from file haz_sitecol, haz_curves = readinput.get_hcurves(self.oqparam) self.save_params() self.read_exposure() # define .assets_by_site self.load_riskmodel() self.assetcol = riskinput.AssetCollection( self.assets_by_site, self.cost_calculator, self.oqparam.time_event) self.sitecol, self.assets_by_site = self.assoc_assets_sites( haz_sitecol) curves_by_trt_gsim = {(0, 'FromFile'): haz_curves} self.rlzs_assoc = logictree.trivial_rlzs_assoc() self.save_mesh() else: # compute hazard or read it from the datastore super(ClassicalRiskCalculator, self).pre_execute() logging.info('Preparing the risk input') curves_by_trt_gsim = {} for dset in self.datastore['curves_by_sm'].values(): for key, curves in dset.items(): trt_id, gsim = key.split('-') curves_by_trt_gsim[int(trt_id), gsim] = curves.value self.riskinputs = self.build_riskinputs(curves_by_trt_gsim) self.monitor.oqparam = self.oqparam self.N = sum(len(assets) for assets in self.assets_by_site) self.L = len(self.riskmodel.loss_types) self.R = len(self.rlzs_assoc.realizations) self.I = self.oqparam.insured_losses self.Q1 = len(self.oqparam.quantile_loss_curves) + 1
def test(self): fname = general.writetmp('''\ <?xml version="1.0" encoding="utf-8"?> <nrml xmlns:gml="http://www.opengis.net/gml" xmlns="http://openquake.org/xmlns/nrml/0.4"> <!-- Spectral Acceleration (SA) example --> <hazardCurves sourceModelTreePath="b1_b2_b4" gsimTreePath="b1_b2" investigationTime="50.0" IMT="SA" saPeriod="0.025" saDamping="5.0"> <IMLs>5.0000e-03 7.0000e-03 1.3700e-02</IMLs> <hazardCurve> <gml:Point> <gml:pos>-122.5000 37.5000</gml:pos> </gml:Point> <poEs>9.8728e-01 9.8266e-01 9.4957e-01</poEs> </hazardCurve> <hazardCurve> <gml:Point> <gml:pos>-123.5000 37.5000</gml:pos> </gml:Point> <poEs>9.8727e-02 9.8265e-02 9.4956e-02</poEs> </hazardCurve> </hazardCurves> <!-- Basic example, using PGA as IMT --> <hazardCurves sourceModelTreePath="b1_b2_b3" gsimTreePath="b1_b7" investigationTime="50.0" IMT="PGA"> <IMLs>5.0000e-03 7.0000e-03 1.3700e-02 3.3700e-02</IMLs> <hazardCurve> <gml:Point> <gml:pos>-122.5000 37.5000</gml:pos> </gml:Point> <poEs>9.8728e-01 9.8226e-01 9.4947e-01 9.2947e-01</poEs> </hazardCurve> <hazardCurve> <gml:Point> <gml:pos>-123.5000 37.5000</gml:pos> </gml:Point> <poEs>9.8728e-02 9.8216e-02 9.4945e-02 9.2947e-02</poEs> </hazardCurve> </hazardCurves> </nrml> ''', suffix='.xml') oqparam = mock.Mock() oqparam.inputs = dict(hazard_curves=fname) sitecol, hcurves = readinput.get_hcurves(oqparam) self.assertEqual(len(sitecol), 2) self.assertEqual(sorted(oqparam.hazard_imtls.items()), [('PGA', [0.005, 0.007, 0.0137, 0.0337]), ('SA(0.025)', [0.005, 0.007, 0.0137])]) self.assertEqual( str(hcurves), '''\ [([0.098727, 0.098265, 0.094956], [0.098728, 0.098216, 0.094945, 0.092947]) ([0.98728, 0.98266, 0.94957], [0.98728, 0.98226, 0.94947, 0.92947])]''')
def test(self): fname = general.writetmp('''\ <?xml version="1.0" encoding="utf-8"?> <nrml xmlns:gml="http://www.opengis.net/gml" xmlns="http://openquake.org/xmlns/nrml/0.4"> <!-- Spectral Acceleration (SA) example --> <hazardCurves sourceModelTreePath="b1_b2_b4" gsimTreePath="b1_b2" investigationTime="50.0" IMT="SA" saPeriod="0.025" saDamping="5.0"> <IMLs>5.0000e-03 7.0000e-03 1.3700e-02</IMLs> <hazardCurve> <gml:Point> <gml:pos>-122.5000 37.5000</gml:pos> </gml:Point> <poEs>9.8728e-01 9.8266e-01 9.4957e-01</poEs> </hazardCurve> <hazardCurve> <gml:Point> <gml:pos>-123.5000 37.5000</gml:pos> </gml:Point> <poEs>9.8727e-02 9.8265e-02 9.4956e-02</poEs> </hazardCurve> </hazardCurves> <!-- Basic example, using PGA as IMT --> <hazardCurves sourceModelTreePath="b1_b2_b3" gsimTreePath="b1_b7" investigationTime="50.0" IMT="PGA"> <IMLs>5.0000e-03 7.0000e-03 1.3700e-02 3.3700e-02</IMLs> <hazardCurve> <gml:Point> <gml:pos>-122.5000 37.5000</gml:pos> </gml:Point> <poEs>9.8728e-01 9.8226e-01 9.4947e-01 9.2947e-01</poEs> </hazardCurve> <hazardCurve> <gml:Point> <gml:pos>-123.5000 37.5000</gml:pos> </gml:Point> <poEs>9.8728e-02 9.8216e-02 9.4945e-02 9.2947e-02</poEs> </hazardCurve> </hazardCurves> </nrml> ''', suffix='.xml') oqparam = mock.Mock() oqparam.inputs = dict(hazard_curves=fname) sitecol, hcurves = readinput.get_hcurves(oqparam) self.assertEqual(len(sitecol), 2) self.assertEqual(sorted(oqparam.hazard_imtls.items()), [('PGA', [0.005, 0.007, 0.0137, 0.0337]), ('SA(0.025)', [0.005, 0.007, 0.0137])]) self.assertEqual(str(hcurves), '''\ [([0.098727, 0.098265, 0.094956], [0.098728, 0.098216, 0.094945, 0.092947]) ([0.98728, 0.98266, 0.94957], [0.98728, 0.98226, 0.94947, 0.92947])]''')
def pre_execute(self): """ Associate the assets to the sites and build the riskinputs. """ oq = self.oqparam if oq.insured_losses: raise ValueError( 'insured_losses are not supported for classical_risk') if 'hazard_curves' in oq.inputs: # read hazard from file haz_sitecol, haz_curves = readinput.get_hcurves(oq) self.save_params() self.read_exposure() # define .assets_by_site self.load_riskmodel() self.assetcol = riskinput.AssetCollection( self.assets_by_site, self.cost_calculator, oq.time_event) self.sitecol, self.assets_by_site = self.assoc_assets_sites( haz_sitecol) self.datastore['csm_info'] = fake = source.CompositionInfo.fake() self.rlzs_assoc = fake.get_rlzs_assoc() [rlz] = self.rlzs_assoc.realizations curves_by_rlz = {rlz: haz_curves} else: # compute hazard or read it from the datastore super(ClassicalRiskCalculator, self).pre_execute() logging.info('Preparing the risk input') curves_by_rlz = {} nsites = len(self.sitecol.complete) if 'hcurves' not in self.datastore: # when building short report return for key in self.datastore['hcurves']: pmap = self.datastore['hcurves/' + key] rlz = self.rlzs_assoc.get_rlz(key) if rlz is not None: # can be None if a realization is # missing; this happen in test_case_5 curves_by_rlz[rlz] = pmap.convert(oq.imtls, nsites) self.riskinputs = self.build_riskinputs(curves_by_rlz) self.monitor.oqparam = oq self.N = sum(len(assets) for assets in self.assets_by_site) self.L = len(self.riskmodel.loss_types) self.R = len(self.rlzs_assoc.realizations) self.I = oq.insured_losses self.Q1 = len(oq.quantile_loss_curves) + 1
def pre_execute(self): """ Associate the assets to the sites and build the riskinputs. """ oq = self.oqparam if oq.insured_losses: raise ValueError( 'insured_losses are not supported for classical_risk') if 'hazard_curves' in oq.inputs: # read hazard from file haz_sitecol, haz_curves = readinput.get_hcurves(oq) self.save_params() self.read_exposure() # define .assets_by_site self.load_riskmodel() self.sitecol, self.assetcol = self.assoc_assets_sites(haz_sitecol) self.datastore['csm_info'] = fake = source.CompositionInfo.fake() self.rlzs_assoc = fake.get_rlzs_assoc() rlzs = self.rlzs_assoc.realizations curves = {rlzs[0]: haz_curves} # there is one realization else: # compute hazard or read it from the datastore super(ClassicalRiskCalculator, self).pre_execute() if 'poes' not in self.datastore: # when building short report return logging.info('Combining the hazard curves') pgetter = calc.PmapGetter(self.datastore) sids = self.sitecol.complete.sids with self.monitor('combining hcurves', measuremem=True, autoflush=True): pmaps = pgetter.get_pmaps(sids) rlzs = self.rlzs_assoc.realizations curves = { rlz: pmap.convert(oq.imtls, len(sids)) for rlz, pmap in zip(rlzs, pmaps) } with self.monitor('build riskinputs', measuremem=True, autoflush=True): self.riskinputs = self.build_riskinputs('poe', curves) self.param = dict(insured_losses=oq.insured_losses, stats=oq.risk_stats()) self.N = len(self.assetcol) self.L = len(self.riskmodel.loss_types) self.R = len(self.rlzs_assoc.realizations) self.I = oq.insured_losses self.S = len(oq.risk_stats())
def pre_execute(self): """ Associate the assets to the sites and build the riskinputs. """ if 'hazard_curves' in self.oqparam.inputs: # read hazard from file haz_sitecol, haz_curves = readinput.get_hcurves(self.oqparam) self.save_params() self.read_exposure() # define .assets_by_site self.load_riskmodel() self.assetcol = riskinput.AssetCollection( self.assets_by_site, self.cost_calculator, self.oqparam.time_event) self.sitecol, self.assets_by_site = self.assoc_assets_sites( haz_sitecol) curves_by_trt_gsim = {(0, 'FromFile'): haz_curves} self.datastore['csm_info'] = fake = source.CompositionInfo.fake() self.rlzs_assoc = fake.get_rlzs_assoc() else: # compute hazard or read it from the datastore super(ClassicalRiskCalculator, self).pre_execute() logging.info('Preparing the risk input') curves_by_trt_gsim = {} nsites = len(self.sitecol.complete) if 'poes' not in self.datastore: # when building the short report return for key in self.datastore['poes']: pmap = self.datastore['poes/' + key] grp_id = int(key) gsims = self.rlzs_assoc.gsims_by_grp_id[grp_id] for i, gsim in enumerate(gsims): curves_by_trt_gsim[grp_id, gsim] = pmap.convert( self.oqparam.imtls, nsites, i) self.riskinputs = self.build_riskinputs(curves_by_trt_gsim) self.monitor.oqparam = self.oqparam self.N = sum(len(assets) for assets in self.assets_by_site) self.L = len(self.riskmodel.loss_types) self.R = len(self.rlzs_assoc.realizations) self.I = self.oqparam.insured_losses self.Q1 = len(self.oqparam.quantile_loss_curves) + 1
def pre_execute(self): """ Associate the assets to the sites and build the riskinputs. """ if 'hazard_curves' in self.oqparam.inputs: # read hazard from file haz_sitecol, haz_curves = readinput.get_hcurves(self.oqparam) self.save_params() self.read_exposure() # define .assets_by_site self.load_riskmodel() self.assetcol = riskinput.AssetCollection( self.assets_by_site, self.cost_calculator, self.oqparam.time_event) self.sitecol, self.assets_by_site = self.assoc_assets_sites( haz_sitecol) curves_by_trt_gsim = {(0, 'FromFile'): haz_curves} self.datastore['csm_info'] = fake = source.CompositionInfo.fake() self.rlzs_assoc = fake.get_rlzs_assoc() self.save_mesh() else: # compute hazard or read it from the datastore super(ClassicalRiskCalculator, self).pre_execute() logging.info('Preparing the risk input') curves_by_trt_gsim = {} for key in self.datastore['poes']: pmap = self.datastore['poes/' + key] trt_id = int(key) gsims = self.rlzs_assoc.gsims_by_trt_id[trt_id] for i, gsim in enumerate(gsims): curves_by_trt_gsim[trt_id, gsim] = array_of_curves( pmap, len(self.sitecol), self.oqparam.imtls, i) self.riskinputs = self.build_riskinputs(curves_by_trt_gsim) self.monitor.oqparam = self.oqparam self.N = sum(len(assets) for assets in self.assets_by_site) self.L = len(self.riskmodel.loss_types) self.R = len(self.rlzs_assoc.realizations) self.I = self.oqparam.insured_losses self.Q1 = len(self.oqparam.quantile_loss_curves) + 1