def generate_mfd(source_model_file): parser = nrmlSourceModelParser(source_model_file) source_model_name = source_model_file.split('/')[-1].rstrip('.xml') source_model = parser.read_file(source_model_name) # source_model = read(source_model_file) print source_model_name print source_model for source in source_model: print source, type(source) print source.mfd occurrence_rates = source.mfd.get_annual_occurrence_rates() minmag = source.mfd._get_min_mag_and_num_bins() print minmag if str(source.mfd) == "<TruncatedGRMFD>": #Theoretical moment rate moment_rate_pure = source.mfd._get_total_moment_rate() elif str(source.mfd) == "<YoungsCoppersmith1985MFD>": # Have to calculate the total moment rate ourselves moment_rate_pure = None # Now calculate actual discretised moment rate moment_rate = 0 for pair in occurrence_rates: print pair moment = numpy.power(10, (1.5 * (pair[0]) + 16.05)) moment = moment / 1e7 # Nm inc_moment_rate = moment * pair[1] moment_rate += inc_moment_rate print moment_rate_pure, moment_rate
def test_source_model_to_hazardlib_converter(self): """ Tests the converter of a source model to an oq-hazardlib format """ # Load a full source model parser = nrmlSourceModelParser(MODEL_PATH) source_model = parser.read_file(2.0) oq_source_model = source_model.convert_to_oqhazardlib(TOM, 1.0, 10.0, 10.0, True) self.assertIsInstance(oq_source_model[0], AreaSource) self.assertIsInstance(oq_source_model[1], AreaSource) self.assertIsInstance(oq_source_model[2], PointSource) self.assertIsInstance(oq_source_model[3], SimpleFaultSource) self.assertIsInstance(oq_source_model[4], ComplexFaultSource) source_model.sources[3] = 'Rubbish!' with self.assertRaises(ValueError) as ver: oq_source_model = source_model.convert_to_oqhazardlib(TOM, 1.0, 10.0, 10.0, True) self.assertEqual(ver.exception.message, 'Source type not recognised!')
def test_source_model_to_hazardlib_converter(self): """ Tests the converter of a source model to an oq-hazardlib format """ # Load a full source model parser = nrmlSourceModelParser(MODEL_PATH) source_model = parser.read_file(2.0) oq_source_model = source_model.convert_to_oqhazardlib(TOM, 1.0, 10.0, 10.0, True) self.assertIsInstance(oq_source_model[0], AreaSource) self.assertIsInstance(oq_source_model[1], AreaSource) self.assertIsInstance(oq_source_model[2], PointSource) self.assertIsInstance(oq_source_model[3], SimpleFaultSource) self.assertIsInstance(oq_source_model[4], ComplexFaultSource) source_model.sources[3] = 'Rubbish!' with self.assertRaises(ValueError) as ver: oq_source_model = source_model.convert_to_oqhazardlib(TOM, 1.0, 10.0, 10.0, True) self.assertEqual(ver.exception.message, 'Source type not recognised!')
def test_nrml_writer(self): ''' Tests the source model writer ''' # Load a full source model parser = nrmlSourceModelParser(MODEL_PATH) source_model = parser.read_file(2.0) # Write to file source_model.serialise_to_nrml(TEST_PATH, True) # Load file back parser = nrmlSourceModelParser(TEST_PATH) source_model_test = parser.read_file(2.0) for i in range(0, source_model.get_number_sources()): orig_source = source_model.sources[i] test_source = source_model_test.sources[i] self.assertEqual(orig_source.name, test_source.name) self.assertEqual(orig_source.mag_scale_rel, test_source.mag_scale_rel) #print orig_source.__dict__, test_source.__dict__ #self.assertDictEqual(orig_source.__dict__, test_source.__dict__) # Remove the test file os.system('rm ' + TEST_PATH)
def test_nrml_writer(self): ''' Tests the source model writer ''' # Load a full source model parser = nrmlSourceModelParser(MODEL_PATH) source_model = parser.read_file(2.0) # Write to file source_model.serialise_to_nrml(TEST_PATH, True) # Load file back parser = nrmlSourceModelParser(TEST_PATH) source_model_test = parser.read_file(2.0) orig_sources = sorted(source_model.sources, key=operator.attrgetter('name')) test_sources = sorted(source_model_test.sources, key=operator.attrgetter('name')) for orig_source, test_source in zip(orig_sources, test_sources): self.assertEqual(orig_source.name, test_source.name) self.assertEqual(orig_source.mag_scale_rel.__class__.__name__, test_source.mag_scale_rel.__class__.__name__) # Remove the test file os.system('rm ' + TEST_PATH)
def test_nrml_writer(self): ''' Tests the source model writer ''' # Load a full source model parser = nrmlSourceModelParser(MODEL_PATH) source_model = parser.read_file(2.0) # Write to file source_model.serialise_to_nrml(TEST_PATH, True) # Load file back parser = nrmlSourceModelParser(TEST_PATH) source_model_test = parser.read_file(2.0) orig_sources = sorted(source_model.sources, key=operator.attrgetter('name')) test_sources = sorted(source_model_test.sources, key=operator.attrgetter('name')) for orig_source, test_source in zip(orig_sources, test_sources): self.assertEqual(orig_source.name, test_source.name) self.assertEqual(orig_source.mag_scale_rel.__class__.__name__, test_source.mag_scale_rel.__class__.__name__) # Remove the test file os.system('rm ' + TEST_PATH)
def test_nrml_writer(self): ''' Tests the source model writer ''' # Load a full source model parser = nrmlSourceModelParser(MODEL_PATH) source_model = parser.read_file(2.0) # Write to file source_model.serialise_to_nrml(TEST_PATH, True) # Load file back parser = nrmlSourceModelParser(TEST_PATH) source_model_test = parser.read_file(2.0) for i in range(0, source_model.get_number_sources()): orig_source = source_model.sources[i] test_source = source_model_test.sources[i] self.assertEqual(orig_source.name, test_source.name) self.assertEqual(orig_source.mag_scale_rel, test_source.mag_scale_rel) #print orig_source.__dict__, test_source.__dict__ #self.assertDictEqual(orig_source.__dict__, test_source.__dict__) # Remove the test file os.system('rm ' + TEST_PATH)
def test_execution_full(self): """ Tests the execution of the reader for the full model """ parser = nrmlSourceModelParser(self.nrml_file) model = parser.read_file("XXX") # Basic tests self.assertEqual(model.id, "XXX") self.assertEqual(model.name, "Some Source Model") self.assertEqual(len(model.sources), 5) # Area Source self._check_area_source(model.sources[0]) self._check_point_source(model.sources[2]) self._check_simple_fault_source(model.sources[3]) self._check_complex_fault_source(model.sources[4])
Jonathan Griffin, Geoscience Australia April 2016 """ # Python dependences import os, time, glob import numpy as np # Numpy - Python's numerical library # Input and Output Tools from hmtk.parsers.source_model.nrml04_parser import nrmlSourceModelParser # Imports a source model from XML # Load in the source models source_folder = '../oq_inputs/source_group/' source_model_list = [] for source_model_file in glob.glob(os.path.join(source_folder, '*.xml')): # print source_model_file parser = nrmlSourceModelParser(source_model_file) source_model_name = source_model_file.split('/')[-1] # print source_model_name source_model = parser.read_file( source_model_name) # You need to supply a name for the source model source_model_list.append(source_model) # Add all sources to first source source_list = [] source_model_index = 0 for source_model in source_model_list: source_index = 0 for source in source_model.sources: # Take care of multiple source models with the same name here name = source_model.name + '_' + source.name + '_' + str(source_model_index) + \ '_' + str(source_index)
import numpy as np import matplotlib.pyplot as plt from hmtk.plotting.mapping import HMTKBaseMap from hmtk.parsers.source_model.nrml04_parser import nrmlSourceModelParser from openquake.hazardlib.source import AreaSource # <codecell> # Import an Area Source Model area_source_file = './s03.xml' parser = nrmlSourceModelParser(area_source_file) area_model = parser.read_file() # -*- coding: utf-8 -*- # <nbformat>3.0</nbformat> print area_model from openquake.hazardlib.source import PointSource, AreaSource, SimpleFaultSource, ComplexFaultSource, CharacteristicFaultSource from openquake.hazardlib.mfd import TruncatedGRMFD, EvenlyDiscretizedMFD from openquake.hazardlib.scalerel import WC1994 from openquake.hazardlib.geo import Point, NodalPlane, Polygon, Line, ComplexFaultSurface from openquake.hazardlib.geo.surface import PlanarSurface from openquake.hazardlib.pmf import PMF from openquake.hazardlib.tom import PoissonTOM import numpy
### ### Source Model ### if add_sourcemodel: from hmtk.parsers.source_model.nrml04_parser import nrmlSourceModelParser source_model_file = "/Users/pirchiner/dev/pshab/dourado_reproduction/source_model.xml" # read source model file parser = nrmlSourceModelParser(source_model_file) source_model = parser.read_file(2.0) # add source model #basemap1.add_source_model(source_model, area_border, border_width, point_marker, point_size, overlay) basemap1.add_source_model(source_model, overlay=True) ### ### Catálogo ### x = catalogue.data['longitude'] y = catalogue.data['latitude'] z = catalogue.data['depth']
######################################################## # Now add to NSHA13 zones ###################################################### # Write to file try: os.mkdir(combined_output_dir) except: pass seismo_source_models = [ 'Seismotectonic_model_CE_faults.xml', 'Seismotectonic_model_GR_faults.xml', 'Seismotectonic_model_MM_faults.xml' ] nsha_zones = '/short/w84/NSHA18/sandpit/jdg547/NSHA2018/source_models/zones/NSHA13/NSHA13_collapsed_rates_FF.xml' parser = nrmlSourceModelParser(nsha_zones) nsha_source_model = parser.read_file('NSHA13_zones') parser = nrmlSourceModelParser(source_model_filename_CE) source_model_CE = parser.read_file('National_Fault_Source_Model_2018_CE') source_model_list = [nsha_source_model, source_model_CE] source_list = [] source_model_index = 0 for source_model in source_model_list: source_index = 0 for source in source_model.sources: print 'Adding source model ', source.name source_list.append(source) source_index += 1 source_model_index += 1 source_model_list[0].sources = source_list