def test_equality(self): sctx1 = SitesContext() sctx1.vs30 = numpy.array([500., 600., 700.]) sctx1.vs30measured = True sctx1.z1pt0 = numpy.array([40., 50., 60.]) sctx1.z2pt5 = numpy.array([1, 2, 3]) sctx2 = SitesContext() sctx2.vs30 = numpy.array([500., 600., 700.]) sctx2.vs30measured = True sctx2.z1pt0 = numpy.array([40., 50., 60.]) sctx2.z2pt5 = numpy.array([1, 2, 3]) self.assertTrue(sctx1 == sctx2) sctx2 = SitesContext() sctx2.vs30 = numpy.array([500., 600.]) sctx2.vs30measured = True sctx2.z1pt0 = numpy.array([40., 50., 60.]) sctx2.z2pt5 = numpy.array([1, 2, 3]) self.assertTrue(sctx1 != sctx2) sctx2 = SitesContext() sctx2.vs30 = numpy.array([500., 600., 700.]) sctx2.vs30measured = False sctx2.z1pt0 = numpy.array([40., 50., 60.]) sctx2.z2pt5 = numpy.array([1, 2, 3]) self.assertTrue(sctx1 != sctx2) sctx2 = SitesContext() sctx2.vs30 = numpy.array([500., 600., 700.]) sctx2.vs30measured = True sctx2.z1pt0 = numpy.array([40., 50., 60.]) self.assertTrue(sctx1 != sctx2) rctx = RuptureContext() rctx.mag = 5. self.assertTrue(sctx1 != rctx)
def getSitesContext(self): """ :returns: SitesContext object. """ sctx = SitesContext() sctx.vs30 = self._Vs30.getData().copy() sctx.z1pt0 = self._Z1Pt0 sctx.z2pt5 = self._Z2Pt5 sctx.backarc = self._backarc # zoneconfig might have this info if self._vs30measured_grid is None: # If we don't know, then use false sctx.vs30measured = np.zeros_like(sctx.vs30, dtype=bool) else: sctx.vs30measured = self._vs30measured_grid sctx.lons = self._lons sctx.lats = self._lats return sctx
def getSitesContext(self): """ :returns: SitesContext object. """ sctx = SitesContext() sctx.vs30 = self._Vs30.getData().copy() sctx.z1pt0 = self._Z1Pt0 sctx.z2pt5 = self._Z2Pt5 sctx.backarc = self._backarc # zoneconfig might have this info if self._vs30measured_grid is None: # If we don't know, then use false sctx.vs30measured = np.zeros_like( sctx.vs30, dtype=bool) else: sctx.vs30measured = self._vs30measured_grid sctx.lons = self._lons sctx.lats = self._lats return sctx
def sampleFromSites(self, lats, lons, vs30measured_grid=None): """ Create a SitesContext object by sampling the current Sites object. :param lats: Sequence of latitudes. :param lons: Sequence of longitudes. :param vs30measured_grid: Sequence of booleans of the same shape as lats/lons indicating whether the vs30 values are measured or inferred. :returns: SitesContext object where data are sampled from the current Sites object. :raises ShakeMapException: When lat/lon input sequences do not share dimensionality. """ lats = np.array(lats) lons = np.array(lons) latshape = lats.shape lonshape = lons.shape if latshape != lonshape: msg = 'Input lat/lon arrays must have the same dimensions' raise ShakeMapException(msg) site = SitesContext() # use default vs30 if outside grid site.vs30 = self._Vs30.getValue(lats, lons, default=self._defaultVs30) site.lats = lats site.lons = lons site.z1pt0 = _calculate_z1p0(site.vs30) site.z2pt5 = _calculate_z2p5(site.z1pt0) if vs30measured_grid is None: # If we don't know, then use false site.vs30measured = np.zeros_like(lons, dtype=bool) else: site.vs30measured = vs30measured_grid site.backarc = self._backarc return site