def test_read_gmfs(self): """Verify _get_db_gmfs.""" params = { 'REGION_VERTEX': '40,-117, 42,-117, 42,-116, 40,-116', 'REGION_GRID_SPACING': '1.0'} the_job = helpers.create_job(params, job_id=self.job.id) calculator = EventBasedRiskCalculator(the_job) self.assertEqual(3, len(calculator._gmf_db_list(self.job.id))) # only the keys in gmfs are used gmfs = calculator._get_db_gmfs([], self.job.id) self.assertEqual({}, gmfs) # only the keys in gmfs are used sites = [Site(lon, lat) for lon in xrange(-117, -115) for lat in xrange(40, 43)] gmfs = calculator._get_db_gmfs(sites, self.job.id) # avoid rounding errors for k, v in gmfs.items(): gmfs[k] = [round(i, 1) for i in v] self.assertEqual({ '0!0': [0.1, 0.5, 0.0], '0!1': [0.2, 0.6, 0.0], '1!0': [0.4, 0.8, 1.3], '1!1': [0.3, 0.7, 1.2], '2!0': [0.0, 0.0, 1.0], '2!1': [0.0, 0.0, 1.1], }, gmfs)
def test_read_gmfs(self): """Verify _get_db_gmfs.""" params = { 'REGION_VERTEX': '40,-117, 42,-117, 42,-116, 40,-116', 'REGION_GRID_SPACING': '1.0' } the_job = helpers.create_job(params, job_id=self.job.id) calculator = EventBasedRiskCalculator(the_job) self.assertEqual(3, len(calculator._gmf_db_list(self.job.id))) # only the keys in gmfs are used gmfs = calculator._get_db_gmfs([], self.job.id) self.assertEqual({}, gmfs) # only the keys in gmfs are used sites = [ Site(lon, lat) for lon in xrange(-117, -115) for lat in xrange(40, 43) ] gmfs = calculator._get_db_gmfs(sites, self.job.id) # avoid rounding errors for k, v in gmfs.items(): gmfs[k] = [round(i, 1) for i in v] self.assertEqual( { '0!0': [0.1, 0.5, 0.0], '0!1': [0.2, 0.6, 0.0], '1!0': [0.4, 0.8, 1.3], '1!1': [0.3, 0.7, 1.2], '2!0': [0.0, 0.0, 1.0], '2!1': [0.0, 0.0, 1.1], }, gmfs)
def test_site_keys(self): """Verify _sites_to_gmf_keys""" params = { 'REGION_VERTEX': '40,-117, 42,-117, 42,-116, 40,-116', 'REGION_GRID_SPACING': '1.0'} the_job = helpers.create_job(params, job_id=self.job.id) calculator = EventBasedRiskCalculator(the_job) keys = calculator._sites_to_gmf_keys([Site(-117, 40), Site(-116, 42)]) self.assertEqual(["0!0", "2!1"], keys)
def test_site_keys(self): """Verify _sites_to_gmf_keys""" params = { 'REGION_VERTEX': '40,-117, 42,-117, 42,-116, 40,-116', 'REGION_GRID_SPACING': '1.0' } the_job = helpers.create_job(params, job_id=self.job.id) calculator = EventBasedRiskCalculator(the_job) keys = calculator._sites_to_gmf_keys([Site(-117, 40), Site(-116, 42)]) self.assertEqual(["0!0", "2!1"], keys)
def setUp(self): cfg_path = helpers.demo_file( 'probabilistic_event_based_risk/config.gem') job = engine.prepare_job() jp, params, sections = engine.import_job_profile(cfg_path, job) job_ctxt = engine.JobContext( params, 1, sections=sections, base_path='/tmp', serialize_results_to=['db', 'xml'], oq_job_profile=jp, oq_job=job) job_ctxt.blocks_keys = [] self.calculator = EventBasedRiskCalculator(job_ctxt) self.calculator.store_exposure_assets = lambda: None self.calculator.store_fragility_model = lambda: None self.calculator.store_vulnerability_model = lambda: None self.calculator.partition = lambda: None
class LossMapCurveSerialization(unittest.TestCase): def setUp(self): cfg_path = helpers.demo_file( 'probabilistic_event_based_risk/config.gem') job_profile, params, sections = engine.import_job_profile(cfg_path) calc_proxy = engine.CalculationProxy( params, 1, sections=sections, base_path='/tmp', serialize_results_to=['db', 'xml'], oq_job_profile=job_profile) calc_proxy.blocks_keys = [] self.calculator = EventBasedRiskCalculator(calc_proxy) self.calculator.store_exposure_assets = lambda: None self.calculator.store_vulnerability_model = lambda: None self.calculator.partition = lambda: None def test_loss_map_serialized_if_conditional_loss_poes(self): self.calculator.calc_proxy.params['CONDITIONAL_LOSS_POE'] = ( '0.01 0.02') with helpers.patch('openquake.calculators.risk.event_based.core' '.plot_aggregate_curve'): with helpers.patch( 'openquake.output.risk.create_loss_map_writer') as clw: clw.return_value = None self.calculator.execute() self.assertTrue(clw.called) def test_loss_map_not_serialized_unless_conditional_loss_poes(self): with helpers.patch('openquake.calculators.risk.event_based.core' '.plot_aggregate_curve'): with helpers.patch( 'openquake.output.risk.create_loss_map_writer') as clw: clw.return_value = None self.calculator.execute() self.assertFalse(clw.called)
def test_with_risk_jobs_we_can_trigger_hazard_only_on_exposure_sites(self): # When we have hazard and risk jobs, we can ask to trigger # the hazard computation only on the sites specified # in the exposure file. self.params['COMPUTE_HAZARD_AT_ASSETS_LOCATIONS'] = True job_ctxt = engine.JobContext( self.params, self.job.id, sections=self.sections, oq_job_profile=self.jp) calc = EventBasedRiskCalculator(job_ctxt) calc.store_exposure_assets() expected_sites = set([ shapes.Site(-118.077721, 33.852034), shapes.Site(-118.067592, 33.855398), shapes.Site(-118.186739, 33.779013)]) actual_sites = set(job_ctxt.sites_to_compute()) self.assertEqual(expected_sites, actual_sites)
def setUp(self): cfg_path = helpers.demo_file( 'probabilistic_event_based_risk/config.gem') job_profile, params, sections = engine.import_job_profile(cfg_path) calc_proxy = engine.CalculationProxy( params, 1, sections=sections, base_path='/tmp', serialize_results_to=['db', 'xml'], oq_job_profile=job_profile) calc_proxy.blocks_keys = [] self.calculator = EventBasedRiskCalculator(calc_proxy) self.calculator.store_exposure_assets = lambda: None self.calculator.store_vulnerability_model = lambda: None self.calculator.partition = lambda: None
def setUp(self): cfg_path = helpers.demo_file( 'probabilistic_event_based_risk/config.gem') job = engine.prepare_job() jp, params, sections = engine.import_job_profile(cfg_path, job) job_ctxt = engine.JobContext( params, 1, sections=sections, base_path='/tmp', serialize_results_to=['db', 'xml'], oq_job_profile=jp, oq_job=job) job_ctxt.blocks_keys = [] self.calculator = EventBasedRiskCalculator(job_ctxt) self.calculator.store_exposure_assets = lambda: None self.calculator.store_vulnerability_model = lambda: None self.calculator.partition = lambda: None
class LossMapCurveSerialization(unittest.TestCase): def setUp(self): cfg_path = helpers.demo_file("probabilistic_event_based_risk/config.gem") job = engine.prepare_job() jp, params, sections = engine.import_job_profile(cfg_path, job) job_ctxt = engine.JobContext( params, 1, sections=sections, base_path="/tmp", serialize_results_to=["db", "xml"], oq_job_profile=jp, oq_job=job, ) job_ctxt.blocks_keys = [] self.calculator = EventBasedRiskCalculator(job_ctxt) self.calculator.store_exposure_assets = lambda: None self.calculator.store_fragility_model = lambda: None self.calculator.store_vulnerability_model = lambda: None self.calculator.partition = lambda: None def test_loss_map_serialized_if_conditional_loss_poes(self): self.calculator.job_ctxt.params["CONDITIONAL_LOSS_POE"] = "0.01 0.02" with helpers.patch("openquake.output.risk.create_loss_map_writer") as clw: clw.return_value = None self.calculator.execute() self.calculator.post_execute() self.assertTrue(clw.called) def test_loss_map_not_serialized_unless_conditional_loss_poes(self): with helpers.patch("openquake.output.risk.create_loss_map_writer") as clw: clw.return_value = None self.calculator.execute() self.assertFalse(clw.called)
class LossMapCurveSerialization(unittest.TestCase): def setUp(self): cfg_path = helpers.demo_file( 'probabilistic_event_based_risk/config.gem') job = engine.prepare_job() jp, params, sections = engine.import_job_profile(cfg_path, job) job_ctxt = engine.JobContext( params, 1, sections=sections, base_path='/tmp', serialize_results_to=['db', 'xml'], oq_job_profile=jp, oq_job=job) job_ctxt.blocks_keys = [] self.calculator = EventBasedRiskCalculator(job_ctxt) self.calculator.store_exposure_assets = lambda: None self.calculator.store_fragility_model = lambda: None self.calculator.store_vulnerability_model = lambda: None self.calculator.partition = lambda: None def test_loss_map_serialized_if_conditional_loss_poes(self): self.calculator.job_ctxt.params['CONDITIONAL_LOSS_POE'] = ( '0.01 0.02') with helpers.patch( 'openquake.output.risk.create_loss_map_writer') as clw: clw.return_value = None self.calculator.execute() self.calculator.post_execute() self.assertTrue(clw.called) def test_loss_map_not_serialized_unless_conditional_loss_poes(self): with helpers.patch( 'openquake.output.risk.create_loss_map_writer') as clw: clw.return_value = None self.calculator.execute() self.assertFalse(clw.called)