Example #1
0
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!')
Example #3
0
    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)
Example #5
0
 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)
Example #7
0
 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)
Example #8
0
 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])
Example #9
0
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)
Example #10
0
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
Example #11
0

    

### 
###    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']
Example #12
0
########################################################
# 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