Beispiel #1
0
 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)
Beispiel #2
0
 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)
Beispiel #3
0
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
Beispiel #4
0
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)
Beispiel #5
0
 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)
Beispiel #6
0
 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])
Beispiel #7
0
 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)
Beispiel #8
0
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)