def test_get_inventory_stationgroup(self): """ Tests get_inventory method for StationGroup, issue #1756. """ client = Client(user='******') # 1 - defined @INGV with warnings.catch_warnings(record=True) as w: warnings.filterwarnings("always") result = client.get_inventory(network="_NFOTABOO", route=True) self.assertEqual(len(w), 1) self.assertEqual( str(w[0].message), "Routing was requested but parameter 'network' is '_NFOTABOO' " "and therefore routing is disabled.") self.assertIn('IV', result) self.assertIn('IV.ATBU', result) self.assertIn('IV.SSFR', result) # 2 - defined @NIEP result = client.get_inventory(network="_NFOVRANC", route=False) self.assertIn('RO', result) self.assertIn('RO.BISRR', result) self.assertIn('RO.VRI', result) # 3 - defined @ETH result = client.get_inventory(network="_NFOVALAIS", starttime=UTCDateTime(2017, 10, 16), endtime=UTCDateTime(2017, 10, 19)) self.assertIn('CH', result) self.assertIn('S', result) # self.assertIn('7H', result) This network does not appear to be # included in the _NFOVALAIS network anymore. Checked on 03/12/2018 # at http://eida.gfz-potsdam.de/webdc3/ self.assertIn('CH.AIGLE', result) self.assertIn('CH.VANNI', result) self.assertIn('S.ESION', result)
def test_issue311(self): """ Testing issue #311. """ client = Client("webdc.eu", 18001, user='******') t = UTCDateTime("2009-08-20 04:03:12") # 1 st = client.get_waveforms("BW", "MANZ", "", "EH*", t - 3, t + 15, metadata=False) self.assertEqual(len(st), 3) self.assertNotIn('paz', st[0].stats) self.assertNotIn('coordinates', st[0].stats) # 2 st = client.get_waveforms("BW", "MANZ", "", "EH*", t - 3, t + 15, metadata=True) self.assertEqual(len(st), 3) self.assertIn('paz', st[0].stats) self.assertIn('coordinates', st[0].stats)
def test_getPAZ(self): """ Test for the Client.get_paz function. As reference the EHZ channel of MANZ is taken, the result is compared to the entries of the local response file of the Bavarian network. """ # reference values zeros = [0j, 0j] poles = [ -3.700400e-02 + 3.701600e-02j, -3.700400e-02 - 3.701600e-02j, -2.513300e+02 + 0.000000e+00j, -1.310400e+02 - 4.672900e+02j, -1.310400e+02 + 4.672900e+02j ] normalization_factor = 6.0077e+07 sensitivity = 2.5168e+09 # initialize client client = Client('erde.geophysik.uni-muenchen.de', 18001, user='******') # fetch poles and zeros dt = UTCDateTime(2009, 1, 1) paz = client.get_paz('BW', 'MANZ', '', 'EHZ', dt) # compare instrument self.assertEqual(normalization_factor, paz.normalization_factor) self.assertEqual(poles, paz.poles) self.assertEqual(zeros, paz.zeros) self.assertAlmostEqual(sensitivity / 1e9, paz.sensitivity / 1e9, 4) # PAZ over multiple channels should raise an exception self.assertRaises(ArcLinkException, client.get_paz, 'BW', 'MANZ', '', 'EH*', dt)
def test_getStations(self): """ """ # initialize client client = Client(user='******') # example 1 start = UTCDateTime(2008, 1, 1) end = start + 1 result = client.get_stations(start, end, 'BW') self.assertTrue( AttribDict({ 'remark': '', 'code': 'RWMO', 'elevation': 763.0, 'description': 'Wildenmoos, Bavaria, BW-Net', 'start': UTCDateTime(2006, 7, 4, 0, 0), 'restricted': False, 'archive_net': '', 'longitude': 12.729887, 'affiliation': 'BayernNetz', 'depth': None, 'place': 'Wildenmoos', 'country': ' BW-Net', 'latitude': 47.744171, 'end': None }) in result)
def test_get_stations_inconsistency(self): """ """ # initialize client client = Client(user='******') # example 1 start = UTCDateTime(2008, 1, 1) end = start + 1 result_origin = AttribDict({ 'remark': '', 'code': 'RWMO', 'elevation': 763.0, 'description': 'Wildenmoos, Bavaria, BW-Net', 'start': UTCDateTime(2006, 7, 4, 0, 0), 'restricted': False, 'archive_net': '', 'longitude': 12.729887, 'affiliation': 'BayernNetz', 'depth': None, 'place': 'Wildenmoos', 'country': ' BW-Net', 'latitude': 47.744171, 'end': None }) # OK: from origin node result = client.get_stations(start, end, 'BW', route=True) self.assertTrue(result_origin in result) # BUT: this one from a different node was modified and fails result = client.get_stations(start, end, 'BW') self.assertTrue(result_origin in result)
def getArclinkInst(station,usermail,pwdkeys): inst = 'no_instrument_available' #if station.loc == '': station.loc='--' sn = station.net+'.'+station.sta+'.'+station.loc+'.'+station.comp print 'SN ',sn client = Client(user=usermail,dcid_keys=pwdkeys) inv= client.getInventory(station.net, station.sta, station.loc, station.comp, instruments=True) print 'INV: ',inv try: stats = inv[sn] print 'STATS ',stats t= stats[0] z= t['paz'] inst = z['name'] inst = inst.replace(' ','_') except: inst = 'no_instrument_available' return inst
def test_getWaveformWithDCIDKey(self): """ """ # test server for encryption client1 = Client(host="webdc.eu", port=36000, user="******", dcid_keys={'BIA': 'OfH9ekhi'}) # public server client2 = Client(host="webdc.eu", port=18001, user="******") # request data start = UTCDateTime(2010, 1, 1, 10, 0, 0) end = start + 100 stream1 = client1.get_waveforms('GE', 'APE', '', 'BHZ', start, end) stream2 = client2.get_waveforms('GE', 'APE', '', 'BHZ', start, end) # compare results np.testing.assert_array_equal(stream1[0].data, stream2[0].data) self.assertEqual(stream1[0].stats, stream2[0].stats)
def test_get_waveform_with_dcid_key_file(self): """ Tests various DCID key file formats (with space or equal sign). Also checks if empty lines or comment lines are ignored. """ # 1 - using = sign between username and password with NamedTemporaryFile() as tf: dcidfile = tf.name with open(dcidfile, 'wt') as fh: fh.write('#Comment\n\n\nTEST=XYZ\r\nBIA=OfH9ekhi\r\n') # test server for encryption client1 = Client(host="webdc.eu", port=36000, user="******", dcid_key_file=dcidfile) # public server client2 = Client(host="webdc.eu", port=18001, user="******") # request data start = UTCDateTime(2010, 1, 1, 10, 0, 0) end = start + 100 stream1 = client1.get_waveforms('GE', 'APE', '', 'BHZ', start, end) stream2 = client2.get_waveforms('GE', 'APE', '', 'BHZ', start, end) # compare results np.testing.assert_array_equal(stream1[0].data, stream2[0].data) self.assertEqual(stream1[0].stats, stream2[0].stats) # 2 - using space between username and password with NamedTemporaryFile() as tf: dcidfile = tf.name with open(dcidfile, 'wt') as fh: fh.write('TEST XYZ\r\nBIA OfH9ekhi\r\n') # test server for encryption client1 = Client(host="webdc.eu", port=36000, user="******", dcid_key_file=dcidfile) # public server client2 = Client(host="webdc.eu", port=18001, user="******") # request data start = UTCDateTime(2010, 1, 1, 10, 0, 0) end = start + 100 stream1 = client1.get_waveforms('GE', 'APE', '', 'BHZ', start, end) stream2 = client2.get_waveforms('GE', 'APE', '', 'BHZ', start, end) # compare results np.testing.assert_array_equal(stream1[0].data, stream2[0].data) self.assertEqual(stream1[0].stats, stream2[0].stats)
def test_getWaveformUnknownUser(self): """ Unknown user raises an ArcLinkException: DENIED. """ client = Client(host="webdc.eu", port=36000, user="******") # request data start = UTCDateTime(2010, 1, 1, 10, 0, 0) end = start + 100 self.assertRaises(ArcLinkException, client.get_waveforms, 'GE', 'APE', '', 'BHZ', start, end)
def test_get_waveform_wrong_pattern(self): """ """ # initialize client client = Client(user='******') # example 1 start = UTCDateTime(2008, 1, 1) end = start + 1 self.assertRaises(ArcLinkException, client.get_waveforms, 'BW', 'MAN*', '', '*', start, end)
def test_save_waveform_no_compression(self): """ Explicitly disable compression during waveform request and save it directly to disk. """ # initialize client client = Client(user='******') start = UTCDateTime(2010, 1, 1, 0, 0) end = start + 1 # MiniSEED with NamedTemporaryFile(suffix='.bz2') as tf: mseedfile = tf.name client.save_waveforms(mseedfile, 'GE', 'APE', '', 'BHZ', start, end, compressed=False) st = read(mseedfile) # MiniSEED may not start with Volume Index Control Headers (V) with open(mseedfile, 'rb') as fp: self.assertNotEqual(fp.read(8)[6:7], b"V") # ArcLink cuts on record base self.assertEqual(st[0].stats.network, 'GE') self.assertEqual(st[0].stats.station, 'APE') self.assertEqual(st[0].stats.location, '') self.assertEqual(st[0].stats.channel, 'BHZ') # Full SEED with NamedTemporaryFile(suffix='.bz2') as tf: fseedfile = tf.name client.save_waveforms(fseedfile, 'GE', 'APE', '', 'BHZ', start, end, format='FSEED') st = read(fseedfile) # Full SEED client.save_waveforms(fseedfile, 'BW', 'MANZ', '', 'EHZ', start, end, format='FSEED') # ArcLink cuts on record base self.assertEqual(st[0].stats.network, 'GE') self.assertEqual(st[0].stats.station, 'APE') self.assertEqual(st[0].stats.location, '') self.assertEqual(st[0].stats.channel, 'BHZ')
def test_get_waveform_no_password(self): """ No password raises a "EVPError: bad decrypt". """ client = Client(host="webdc.eu", port=36000, user="******", dcid_keys={'BIA': ''}) # request data start = UTCDateTime(2010, 1, 1, 10, 0, 0) end = start + 100 self.assertRaises(EVPError, client.get_waveforms, 'GE', 'APE', '', 'BHZ', start, end)
def test_get_networks(self): """ """ # initialize client client = Client(user='******') # example 1 start = UTCDateTime(2008, 1, 1) end = start + 1 result = client.get_networks(start, end) self.assertIn('BW', result.keys()) self.assertEqual(result['BW']['code'], 'BW') self.assertEqual(result['BW']['description'], 'BayernNetz')
def test_get_inventory_twice(self): """ Requesting inventory data twice should not fail. """ client = Client(user='******') dt = UTCDateTime(2009, 1, 1) # station client.get_inventory('BW', 'MANZ', starttime=dt, endtime=dt + 1) client.get_inventory('BW', 'MANZ', starttime=dt, endtime=dt + 1) # network client.get_inventory('BW', starttime=dt, endtime=dt + 1) client.get_inventory('BW', starttime=dt, endtime=dt + 1)
def test_get_routing(self): """ Tests get_routing method on various ArcLink nodes. """ dt = UTCDateTime(2010, 1, 1) expected_routing_bw = {'BW.RJOB..': [{ 'priority': 1, 'start': UTCDateTime(1980, 1, 1, 0, 0), 'host': u'erde.geophysik.uni-muenchen.de', 'end': None, 'port': 18001}]} expected_routing_iv = { 'IV...': [{'priority': 1, 'start': UTCDateTime(1988, 1, 1, 0, 0), 'host': 'eida.ingv.it', 'end': None, 'port': 18002}]} expected_routing_ge = { 'GE...': [{'priority': 1, 'start': UTCDateTime(1993, 1, 1, 0, 0), 'host': 'eida.gfz-potsdam.de', 'end': None, 'port': 18002}]} # 1 - BW network via erde.geophysik.uni-muenchen.de:18001 client = Client(host="erde.geophysik.uni-muenchen.de", port=18001, user='******') results = client.get_routing('BW', 'RJOB', dt, dt + 1) self.assertEqual(results, expected_routing_bw) # 2 - BW network via webdc:18001 client = Client(host="webdc.eu", port=18001, user='******') results = client.get_routing('BW', 'RJOB', dt, dt + 1) self.assertEqual(results, expected_routing_bw) # 3 - BW network via webdc:18002 client = Client(host="webdc.eu", port=18002, user='******') results = client.get_routing('BW', 'RJOB', dt, dt + 1) self.assertEqual(results, expected_routing_bw) # 4 - IV network via webdc.eu:18001 client = Client(host="webdc.eu", port=18001, user='******') results = client.get_routing('IV', '', dt, dt + 1) self.assertEqual(results, expected_routing_iv) # 5 - IV network via webdc.eu:18002 client = Client(host="webdc.eu", port=18002, user='******') results = client.get_routing('IV', '', dt, dt + 1) self.assertEqual(results, expected_routing_iv) # 6 - GE.APE via webdc.eu:18001 client = Client(host="webdc.eu", port=18001, user='******') results = client.get_routing('GE', 'APE', dt, dt + 1) self.assertEqual(results, expected_routing_ge) # 7 - GE.APE via webdc.eu:18002 client = Client(host="webdc.eu", port=18002, user='******') results = client.get_routing('GE', 'APE', dt, dt + 1) self.assertEqual(results, expected_routing_ge) # 8 - unknown network 00 via webdc.eu:18002 client = Client(host="webdc.eu", port=18002, user='******') results = client.get_routing('00', '', dt, dt + 1) self.assertEqual(results, {})
def test_get_stations(self): """ """ # initialize client client = Client(user='******') # example 1 start = UTCDateTime(2008, 1, 1) end = start + 1 result = client.get_stations(start, end, 'BW') self.assertTrue( AttribDict({ 'remark': '', 'code': 'RWMO', 'elevation': 763.0, 'description': 'Wildenmoos, Bavaria, BW-Net', 'start': UTCDateTime(2006, 7, 4, 0, 0), 'restricted': False, 'archive_net': '', 'longitude': 12.729887, 'affiliation': 'BayernNetz', 'depth': None, 'place': 'Wildenmoos', 'country': 'BW-Net', 'latitude': 47.744171, 'end': None }) in result) # example 2 expected = AttribDict({ 'code': 'WDD', 'description': 'Wied Dalam', 'affiliation': '', 'country': '', 'place': '', 'remark': '', 'restricted': False, 'archive_net': '', 'latitude': 35.8373, 'longitude': 14.5242, 'elevation': 44.0, 'depth': None, 'start': UTCDateTime(1995, 7, 6, 0, 0), 'end': None }) # routing default result = client.get_stations(start, end, 'MN') self.assertTrue(expected in result) # w/o routing result = client.get_stations(start, end, 'MN', route=False) self.assertTrue(expected in result) # w/ routing result = client.get_stations(start, end, 'MN', route=True) self.assertTrue(expected in result)
def test_getWaveformWithDefaultDCIDKeyFile(self): """ Use $HOME/dcidpasswords.txt. """ dcidfile = DCID_KEY_FILE fh = open(dcidfile, 'wt') fh.write('TEST=XYZ\r\nBIA=OfH9ekhi\r\n') fh.close() # test server for encryption client1 = Client(host="webdc.eu", port=36000, user="******") # public server client2 = Client(host="webdc.eu", port=18001, user="******") # clean up dcid file os.remove(dcidfile) # request data start = UTCDateTime(2010, 1, 1, 10, 0, 0) end = start + 100 stream1 = client1.get_waveforms('GE', 'APE', '', 'BHZ', start, end) stream2 = client2.get_waveforms('GE', 'APE', '', 'BHZ', start, end) # compare results np.testing.assert_array_equal(stream1[0].data, stream2[0].data) self.assertEqual(stream1[0].stats, stream2[0].stats)
def test_get_paz2(self): """ Test for the Client.get_paz function for erde.geophysik.uni-muenchen.de. """ poles = [-3.700400e-02 + 3.701600e-02j, -3.700400e-02 - 3.701600e-02j] dt = UTCDateTime(2009, 1, 1) client = Client('*****@*****.**', host='erde.geophysik.uni-muenchen.de', port=18001) # fetch poles and zeros paz = client.get_paz('BW', 'MANZ', '', 'EHZ', dt) self.assertEqual(len(poles), 2) self.assertEqual(poles, paz['poles'][:2])
def test_get_waveform_wrong_password(self): """ A wrong password password raises exception. """ client = Client(host="webdc.eu", port=36000, user="******", dcid_keys={'BIA': 'WrongPassword'}) # request data start = UTCDateTime(2010, 1, 1, 10, 0, 0) end = start + 100 self.assertRaises(Exception, client.get_waveforms, 'GE', 'APE', '', 'BHZ', start, end)
def get_OVPF_arclink_data(net, sta, locid, cha, starttime, endtime): # serveur de données OVPF # pitonmanuel 195.83.188.22 client = Client(host="195.83.188.22", port="18001", user="******", institution="OVPF") try: st = client.get_waveforms(net, sta, locid, cha, starttime, endtime) return st except: return None
def test_get_waveform_no_compression(self): """ Disabling compression during waveform request. """ # initialize client client = Client(user='******') start = UTCDateTime(2011, 1, 1, 0, 0) end = start + 10 stream = client.get_waveforms('BW', 'MANZ', '', 'EH*', start, end, compressed=False) self.assertEqual(len(stream), 3) for trace in stream: self.assertEqual(trace.stats.network, 'BW') self.assertEqual(trace.stats.station, 'MANZ')
def test_save_response(self): """ Fetches and stores response information as Dataless SEED volume. """ client = Client(user='******') start = UTCDateTime(2008, 1, 1) end = start + 1 with NamedTemporaryFile() as tf: tempfile = tf.name # Dataless SEED client.save_response(tempfile, 'BW', 'MANZ', '', 'EHZ', start, end) with open(tempfile, 'rb') as fp: self.assertEqual(fp.read(8), b"000001V ") # Try again but write to a BytesIO instance. file_object = io.BytesIO() client = Client(user='******') start = UTCDateTime(2008, 1, 1) end = start + 1 # Dataless SEED client.save_response(file_object, 'BW', 'MANZ', '', 'EHZ', start, end) file_object.seek(0, 0) self.assertEqual(file_object.read(8), b"000001V ")
def test_issue_372(self): """ Test case for issue #372. """ dt = UTCDateTime("20120729070000") client = Client(user='******') st = client.get_waveforms("BS", "JMB", "", "BH*", dt, dt + 7200, metadata=True) for tr in st: self.assertIn('paz', tr.stats) self.assertIn('coordinates', tr.stats) self.assertIn('poles', tr.stats.paz) self.assertIn('zeros', tr.stats.paz) self.assertIn('latitude', tr.stats.coordinates)
def test_delayed_request(self): """ """ # initialize client with 0.1 delay client = Client(host='webdc.eu', port=18002, command_delay=0.1, user='******') start = UTCDateTime(2010, 1, 1) end = start + 100 # get_waveforms with 0.1 delay stream = client.get_waveforms('GR', 'FUR', '', 'HHE', start, end) self.assertEqual(len(stream), 1) # get_routing with 0.1 delay results = client.get_routing('GR', 'FUR', start, end) self.assertIn('GR...', results)
def arclink_Request_obspy(station, begin, end, usermail, pwdkeys): sname = station.net+'.'+station.sta+'.'+station.loc+'.'+station.comp print 'STARTING ARCLINK REQUEST FOR STATION ' + sname output = sname + '-ARCLINK.dataless' client = Client(user=usermail,dcid_keys=pwdkeys,debug=False) info = '' if station.net == 'MN': info = arclinkRequest_sc(station,begin,end) #hs: Kommt wohl nicht vor - wird immer von Iris geholt else: try: # client.saveResponse(output, station.net, station.sta, station.loc, station.comp, begin, end) #hs # mdict = getMetaInfo(output) #hs # inst = getArclinkInst(station, usermail, pwdkeys) #hs sta2 = getArclinkInst_2(station, usermail, pwdkeys) #hs #sta2.print1() if station.loc == '': station.loc = '--' form = '{0:3}{1:6}{2:3}{3:4}{4:12}{5:12}{6:10}{7:10}{8:10}{9:20}{10:50}' info = form.format(station.net.strip(), station.sta.strip(), station.loc.strip(), station.comp.strip(), # mdict['lat'], mdict['lon'], mdict['ele'], mdict['dip'], mdict['azi'], mdict['gain'],inst) #hs str(sta2.lat), str(sta2.lon), str(sta2.ele), str(sta2.dip), str(sta2.azi), #hs \ str(sta2.gain), str(sta2.inst)) #hs #logfile.red('ARCLINK METAINFO FOR STATION %s' %(info)) # os.remove(output) #hs print ARCLINK_META #hs return info except: print 'Exception 1 in arclink_Request_obspy' info = '' return info try: return info os.remove(output) except: print 'Exception 2 in arclink_Request_obspy' pass print 'len=', len(info) return info
def test_get_waveform_no_routing(self): """ Tests routing parameter of get_waveforms method. """ # 1 - requesting BW data w/o routing on webdc.eu client = Client(user='******') start = UTCDateTime(2008, 1, 1) end = start + 1 self.assertRaises(ArcLinkException, client.get_waveforms, 'BW', 'MANZ', '', 'EH*', start, end, route=False) # 2 - requesting BW data w/o routing directly from BW ArcLink node client = Client(host='erde.geophysik.uni-muenchen.de', port=18001, user='******') start = UTCDateTime(2008, 1, 1) end = start + 1 stream = client.get_waveforms('BW', 'MANZ', '', 'EH*', start, end, route=False) for trace in stream: self.assertLessEqual(trace.stats.starttime, start) self.assertGreaterEqual(trace.stats.endtime, end) self.assertEqual(trace.stats.network, 'BW') self.assertEqual(trace.stats.station, 'MANZ') self.assertEqual(trace.stats.location, '') self.assertEqual(trace.stats.channel[0:2], 'EH')
def test_get_not_existing_waveform(self): """ """ # initialize client client = Client(user='******') # example 1 start = UTCDateTime(2008, 1, 1) end = start + 1 self.assertRaises(ArcLinkException, client.get_waveforms, 'AA', 'AAAAA', '', '*', start, end) # example 2 start = UTCDateTime(2038, 1, 1) end = start + 1 self.assertRaises(ArcLinkException, client.get_waveforms, 'BW', 'MANZ', '', '*', start, end)
def test_save_waveform(self): """ Default behavior is requesting data compressed and unpack on the fly. """ # initialize client client = Client('*****@*****.**', host="erde.geophysik.uni-muenchen.de", port=18001) start = UTCDateTime(2008, 1, 1) end = start + 10 # MiniSEED with NamedTemporaryFile(suffix='.bz2') as tf: mseedfile = tf.name client.save_waveforms(mseedfile, 'BW', 'MANZ', '', 'EHZ', start, end) st = read(mseedfile) # MiniSEED may not start with Volume Index Control Headers (V) with open(mseedfile, 'rb') as fp: self.assertNotEqual(fp.read(8)[6:7], b"V") # ArcLink cuts on record base self.assertLessEqual(st[0].stats.starttime, start) self.assertGreaterEqual(st[0].stats.endtime, end) self.assertEqual(st[0].stats.network, 'BW') self.assertEqual(st[0].stats.station, 'MANZ') self.assertEqual(st[0].stats.location, '') self.assertEqual(st[0].stats.channel, 'EHZ') # Full SEED with NamedTemporaryFile(suffix='.bz2') as tf: fseedfile = tf.name client.save_waveforms(fseedfile, 'BW', 'MANZ', '', 'EHZ', start, end, format='FSEED') st = read(fseedfile) # Full SEED must start with Volume Index Control Headers (V) with open(fseedfile, 'rb') as fp: self.assertEqual(fp.read(8)[6:7], b"V") # ArcLink cuts on record base self.assertLessEqual(st[0].stats.starttime, start) self.assertGreaterEqual(st[0].stats.endtime, end) self.assertEqual(st[0].stats.network, 'BW') self.assertEqual(st[0].stats.station, 'MANZ') self.assertEqual(st[0].stats.location, '') self.assertEqual(st[0].stats.channel, 'EHZ')
def test_get_waveform_instrument_change(self): """ Check results of get_waveforms if instrumentation has been changed. Sensitivity change for GE.SNAA..BHZ at 2003-01-10T00:00:00 """ client = Client(user='******') # one instrument in given time span dt = UTCDateTime("2003-01-09T00:00:00") st = client.get_waveforms("GE", "SNAA", "", "BHZ", dt, dt + 10, metadata=True) self.assertEqual(len(st), 1) self.assertEqual(st[0].stats.paz.sensitivity, 596224500.0) # two instruments in given time span dt = UTCDateTime("2003-01-09T23:59:00") st = client.get_waveforms("GE", "SNAA", "", "BHZ", dt, dt + 120, metadata=True) # results into two traces self.assertEqual(len(st), 2) # with different PAZ st.sort() self.assertEqual(st[0].stats.paz.sensitivity, 596224500.0) self.assertEqual(st[1].stats.paz.sensitivity, 588000000.0) # one instrument in given time span dt = UTCDateTime("2003-01-10T01:00:00") st = client.get_waveforms("GE", "SNAA", "", "BHZ", dt, dt + 10, metadata=True) self.assertEqual(len(st), 1) self.assertEqual(st[0].stats.paz.sensitivity, 588000000.0)
def test_save_waveform_compressed(self): """ Tests saving compressed and not unpacked bzip2 files to disk. """ # initialize client client = Client(user='******') start = UTCDateTime(2008, 1, 1, 0, 0) end = start + 1 # MiniSEED with NamedTemporaryFile(suffix='.bz2') as tf: mseedfile = tf.name client.save_waveforms(mseedfile, 'GE', 'APE', '', 'BHZ', start, end, unpack=False) # check if compressed with open(mseedfile, 'rb') as fp: self.assertEqual(fp.read(2), b'BZ') # importing via read should work too read(mseedfile) # Full SEED with NamedTemporaryFile(suffix='.bz2') as tf: fseedfile = tf.name client.save_waveforms(fseedfile, 'GE', 'APE', '', 'BHZ', start, end, format="FSEED", unpack=False) # check if compressed with open(fseedfile, 'rb') as fp: self.assertEqual(fp.read(2), b'BZ') # importing via read should work too read(fseedfile)