Example #1
0
def mean_std(shakemap, site_effects):
    gmf_dict.update({'kind': 'Silva&Horspool',
                     'spatialcorr': 'yes', 'crosscorr': 'yes'})
    _, gmfs = to_gmfs(
        shakemap, gmf_dict, site_effects, trunclevel=3,
        num_gmfs=1000, seed=42, imts=['PGA', 'SA(0.3)', 'SA(1.0)', 'SA(3.0)'])
    return gmfs.mean(axis=1), numpy.log(gmfs).std(axis=1)
Example #2
0
    def test_for_mmi(self):
        f1 = 'file://' + os.path.join(CDIR, 'ghorka_grid.xml')
        f2 = 'file://' + os.path.join(CDIR, 'ghorka_uncertainty.xml')
        uridict = dict(kind='usgs_xml', grid_url=f1, uncertainty_url=f2)
        sitecol, shakemap, *_ = get_sitecol_shakemap(uridict.pop('kind'),
                                                     uridict, imt_dt.names)
        n = 4  # number of sites
        self.assertEqual(len(sitecol), n)

        _, gmfs = to_gmfs(shakemap, {'kind': 'mmi'}, False,
                          trunclevel=3, num_gmfs=1000, seed=42, imts=['MMI'])

        gmf_by_imt = gmfs.mean(axis=1)
        std_by_imt = gmfs.std(axis=1)
        aae(gmf_by_imt, [[3.80704848],
                         [3.89791949],
                         [3.88040454],
                         [3.93584243]])
        aae(std_by_imt, [[0.71068558],
                         [0.72233552],
                         [0.72033749],
                         [0.69906908]])
Example #3
0
    def test_matrices(self):

        # distance matrix
        lons = numpy.array([84., 84., 84., 85.5, 85.5, 85.5, 87., 87., 87.])
        lats = numpy.array([26., 27.5, 29., 26., 27.5, 29., 26., 27.5, 29.])
        dmatrix = geo.geodetic.distance_matrix(lons, lats)
        aae(dmatrix.sum(), 18539.6131407)

        # spatial correlation
        sca = spatial_correlation_array(dmatrix, imts, 'yes')
        aae(sca.sum(), 36.000370229)

        # spatial covariance
        std = numpy.array([(0.5, 0.52, 0.64, 0.73)] * 9, imt_dt)  # 9 sites
        scov = spatial_covariance_array([std[n] for n in imt_dt.names], sca)
        aae(scov.sum(), 13.166200147)

        # cross correlation
        ccor = cross_correlation_matrix(imts, 'yes')
        aae(ccor.sum(), 10.49124788)

        # cholesky decomposition
        L = cholesky(scov, ccor)
        self.assertEqual(L.shape, (36, 36))
        aae(L.sum(), 30.5121263)

        # intensity
        val = numpy.array([(5.38409665, 3.9383686, 3.55435415, 4.37692394)] *
                          9, imt_dt)

        shakemap = numpy.zeros(9, shakemap_dt)  # 9 sites
        shakemap['lon'] = lons
        shakemap['lat'] = lats
        shakemap['vs30'] = numpy.array([301.17] * 9)
        shakemap['val'] = val
        shakemap['std'] = std
        gmf_dict.update({
            'kind': 'Silva&Horspool',
            'spatialcorr': 'yes',
            'crosscorr': 'no'
        })
        _, gmfs = to_gmfs(shakemap,
                          gmf_dict,
                          site_effects=False,
                          trunclevel=3,
                          num_gmfs=2,
                          seed=42)
        # shape (N, E, M)
        aae(gmfs[..., 0].sum(axis=0), [0.4202056, 0.6426098])  # PGA

        gmf_dict.update({
            'kind': 'Silva&Horspool',
            'spatialcorr': 'yes',
            'crosscorr': 'yes'
        })
        _, gmfs = to_gmfs(shakemap,
                          gmf_dict,
                          site_effects=True,
                          trunclevel=3,
                          num_gmfs=2,
                          seed=42)
        aae(gmfs[..., 0].sum(axis=0), [0.5809818, 0.8790579])  # PGA
        aae(gmfs[..., 2].sum(axis=0), [0.6053580, 0.8245417])  # SA(1.0)

        # disable spatial correlation
        gmf_dict.update({
            'kind': 'Silva&Horspool',
            'spatialcorr': 'no',
            'crosscorr': 'no'
        })
        _, gmfs = to_gmfs(shakemap,
                          gmf_dict,
                          site_effects=False,
                          trunclevel=3,
                          num_gmfs=2,
                          seed=42)
        # shape (N, E, M)
        aae(gmfs[..., 0].sum(axis=0), [0.4202077, 0.6426078])  # PGA

        _, gmfs = to_gmfs(shakemap, {'kind': 'basic'},
                          site_effects=False,
                          trunclevel=3,
                          num_gmfs=2,
                          seed=42)
        # shape (N, E, M)
        aae(gmfs[..., 0].sum(axis=0), [0.4202077, 0.6426078])  # PGA

        gmf_dict.update({
            'kind': 'Silva&Horspool',
            'spatialcorr': 'no',
            'crosscorr': 'yes'
        })
        _, gmfs = to_gmfs(shakemap,
                          gmf_dict,
                          site_effects=True,
                          trunclevel=3,
                          num_gmfs=2,
                          seed=42)
        aae(gmfs[..., 0].sum(axis=0), [0.5809846, 0.8790549])  # PGA
        aae(gmfs[..., 2].sum(axis=0), [0.6053580, 0.8245417])  # SA(1.0)

        # set stddev to zero
        shakemap['std'] = 0
        with self.assertRaises(ValueError) as ctx:
            gmf_dict.update({
                'kind': 'Silva&Horspool',
                'spatialcorr': 'no',
                'crosscorr': 'yes'
            })
            to_gmfs(shakemap,
                    gmf_dict,
                    site_effects=True,
                    trunclevel=3,
                    num_gmfs=2,
                    seed=42)
        self.assertIn('stddev==0 for IMT=PGA', str(ctx.exception))