def test_swapbytes(self): tfilel = os.path.join(os.path.dirname(__file__), 'data', 'test.sac') tfileb = os.path.join(os.path.dirname(__file__), 'data', 'test.sac.swap') with NamedTemporaryFile() as tf: tempfile = tf.name tb = SacIO(tfileb) tb.swap_byte_order() tb.WriteSacBinary(tempfile) t = SacIO(tempfile) tl = SacIO(tfilel) self.assertEqual(t.GetHvalue('kevnm'), tl.GetHvalue('kevnm')) self.assertEqual(t.GetHvalue('npts'), tl.GetHvalue('npts')) self.assertEqual(t.GetHvalue('delta'), tl.GetHvalue('delta')) np.testing.assert_array_equal(t.seis, tl.seis) with NamedTemporaryFile() as tf: tempfile = tf.name tl = SacIO(tfilel) tl.swap_byte_order() tl.WriteSacBinary(tempfile) t = SacIO(tempfile) tb = SacIO(tfileb) self.assertEqual(t.GetHvalue('kevnm'), tb.GetHvalue('kevnm')) self.assertEqual(t.GetHvalue('npts'), tb.GetHvalue('npts')) self.assertEqual(t.GetHvalue('delta'), tb.GetHvalue('delta')) np.testing.assert_array_equal(t.seis, tb.seis)
def test_readWrite(self): """ Tests for SacIO read and write """ sacfile = os.path.join(self.path, 'test.sac') with NamedTemporaryFile() as tf: tempfile = tf.name t = SacIO() t.ReadSacFile(sacfile) self.assertEqual(t.GetHvalue('npts'), 100) self.assertEqual(t.GetHvalue("kcmpnm"), "Q ") self.assertEqual(t.GetHvalue("kstnm"), "STA ") t.SetHvalue("kstnm", "spiff") self.assertEqual(t.GetHvalue('kstnm'), 'spiff ') t.WriteSacBinary(tempfile) self.assertEqual(os.stat(sacfile)[6], os.stat(tempfile)[6]) self.assertEqual(os.path.exists(tempfile), True) t.ReadSacHeader(tempfile) self.assertEqual((t.hf is not None), True) t.SetHvalue("kstnm", "spoff") self.assertEqual(t.GetHvalue('kstnm'), 'spoff ') t.WriteSacHeader(tempfile) t.SetHvalueInFile(tempfile, "kcmpnm", 'Z ') self.assertEqual(t.GetHvalueFromFile(tempfile, "kcmpnm"), 'Z ') self.assertEqual( SacIO(tempfile, headonly=True).GetHvalue('kcmpnm'), 'Z ') self.assertEqual(t.IsValidSacFile(tempfile), True) self.assertEqual(t.IsValidXYSacFile(tempfile), False) self.assertEqual(SacIO().GetHvalueFromFile(sacfile, 'npts'), 100) self.assertEqual(SacIO(sacfile).GetHvalue('npts'), 100)
def export_sac(db, filename, pair, components, filterid,corr,ncorr=0,sac_format=None,maxlag=None,cc_sampling_rate=None): if sac_format is None: sac_format=get_config(db,"sac_format") if maxlag is None: maxlag = float(get_config(db,"maxlag")) if cc_sampling_rate is None: cc_sampling_rate = float(get_config(db,"cc_sampling_rate")) try: os.makedirs(os.path.split(filename)[0]) except: pass filename += ".SAC" mytrace = Trace(data=corr) mytrace.stats['station'] = pair mytrace.stats['sampling_rate'] = cc_sampling_rate st = Stream(traces = [mytrace,]) st.write(filename,format='SAC') tr = SacIO(filename) if sac_format == "doublets": tr.SetHvalue('A',120) else: tr.SetHvalue('B',-maxlag) tr.SetHvalue('DEPMIN',np.min(corr)) tr.SetHvalue('DEPMAX',np.max(corr)) tr.SetHvalue('DEPMEN',np.mean(corr)) tr.SetHvalue('SCALE',1) tr.SetHvalue('NPTS',len(corr)) tr.WriteSacBinary(filename) del st, tr return
def write2sac(d, header, output): ''' Function to write the data and header to sac files Inputs: d - data array header - dictionary of the header info output - filename of the output sac file ''' sacio = SacIO() sacio.fromarray(d) # set the date t = header['record_time'] sacio.SetHvalue('nzyear', t.year) sacio.SetHvalue('nzjday', t.julday) sacio.SetHvalue('delta', 1. / header['df']) sacio.SetHvalue('nzhour', t.hour) sacio.SetHvalue('nzmin', t.minute) sacio.SetHvalue('nzsec', t.second) sacio.SetHvalue('kstnm', header['stnm']) sacio.SetHvalue('stla', header['stla']) sacio.SetHvalue('stlo', header['stlo']) sacio.SetHvalue('stel', header['stel']) sacio.SetHvalue('kcmpnm', header['comp']) sacio.SetHvalue('evla', header['evla']) sacio.SetHvalue('evlo', header['evlo']) sacio.SetHvalue('o', header['o']) sacio.SetHvalue('mag', header['mag']) sacio.SetHvalue('o', header['o']) #TRUE if DIST AZ BAZ and GCARC are to be calculated from st event coordinates. sacio.SetHvalue('LCALDA', 1) #set the type of the dependent variable as acceleration nm/sec/sec #sacio.SetHvalue('idep',8) sacio.WriteSacBinary(output)
def test_swapbytes(self): tfilel = os.path.join(os.path.dirname(__file__), 'data', 'test.sac') tfileb = os.path.join(os.path.dirname(__file__), 'data', 'test.sac.swap') tempfile = NamedTemporaryFile().name tb = SacIO(tfileb) tb.swap_byte_order() tb.WriteSacBinary(tempfile) tr1 = SacIO(tempfile) tl = SacIO(tfilel) np.testing.assert_array_equal(tl.seis, tr1.seis) self.assertEqual(tl.GetHvalue('kevnm'), tr1.GetHvalue('kevnm')) self.assertEqual(tl.GetHvalue('npts'), tr1.GetHvalue('npts')) self.assertEqual(tl.GetHvalueFromFile(tfilel, 'kcmpnm'), tr1.GetHvalueFromFile(tempfile, 'kcmpnm')) os.remove(tempfile)
def test_getdist(self): tfile = os.path.join(os.path.dirname(__file__), 'data', 'test.sac') with NamedTemporaryFile() as tf: tempfile = tf.name t = SacIO(tfile) t.SetHvalue('evla', 48.15) t.SetHvalue('evlo', 11.58333) t.SetHvalue('stla', -41.2869) t.SetHvalue('stlo', 174.7746) t.SetHvalue('lcalda', 1) t.WriteSacBinary(tempfile) t2 = SacIO(tempfile) b = np.array([18486532.5788 / 1000., 65.654154562, 305.975459869], dtype=native_str('>f4')) self.assertEqual(t2.GetHvalue('dist'), b[0]) self.assertEqual(t2.GetHvalue('az'), b[1]) self.assertEqual(t2.GetHvalue('baz'), b[2])
def test_readWriteXY(self): """ Tests for ascii sac io """ with NamedTemporaryFile() as tf: tempfile = tf.name tfile = os.path.join(os.path.dirname(__file__), 'data', 'test.sac') t = SacIO(tfile) t.WriteSacXY(tempfile) d = SacIO(tempfile, alpha=True) e = SacIO() e.ReadSacXY(tempfile) self.assertEqual(e.GetHvalue('npts'), d.GetHvalue('npts')) self.assertEqual(e.IsValidXYSacFile(tempfile), True) self.assertEqual(e.IsValidSacFile(tempfile), False) with NamedTemporaryFile() as tf: tempfile = tf.name d.WriteSacBinary(tempfile) size1 = os.stat(tempfile)[6] size2 = os.stat(tfile)[6] self.assertEqual(size1, size2) np.testing.assert_array_almost_equal(t.seis, d.seis, decimal=5)
def write2sac(d, header, evla, evlo, evdp, mag, output): sacio = SacIO() sacio.fromarray(d) # set the date to today sacio.SetHvalue('nzyear', header['nzyear']) sacio.SetHvalue('nzjday', header['nzjday']) sacio.SetHvalue('delta', 0.02) sacio.SetHvalue('nzhour', header['nzhour']) sacio.SetHvalue('nzmin', header['nzmin']) sacio.SetHvalue('nzsec', header['nzsec']) sacio.SetHvalue('nzmsec', header['nzmsec']) sacio.SetHvalue('kstnm', header['stnm']) sacio.SetHvalue('stla', header['stla']) sacio.SetHvalue('stlo', header['stlo']) sacio.SetHvalue('kcmpnm', header['comp']) sacio.SetHvalue('evla', evla) sacio.SetHvalue('evlo', evlo) sacio.SetHvalue('evdp', evdp) sacio.SetHvalue('mag', mag) #dist = sacio.GetHvalue('dist') #print dist dist = gps2DistAzimuth(stla, stlo, evla, evlo)[0] / 1000. sacio.SetHvalue('dist', dist) #sacio.SetHvalue('knetwk','phones') #sacio.SetHvalue('kstnm',phone) #sacio.SetHvalue('kcmpnm',comp) #sacio.SetHvalue('kevnm',loc) #sacio.SetHvalue('kuser0',test + ' test') #sacio.SetHvalue('kuser0',version) #sacio.SetHvalue('kuser1',brand) #set the type of the dependent variable as acceleration nm/sec/sec #sacio.SetHvalue('idep',8) sacio.WriteSacBinary(output)