Example #1
0
 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)
Example #2
0
 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)
Example #3
0
    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)
Example #4
0
 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)
Example #5
0
 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)
Example #6
0
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
Example #7
0
 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)
Example #8
0
 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)
Example #9
0
 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)
Example #10
0
 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)
Example #11
0
 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')
Example #12
0
 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)
Example #13
0
 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')
Example #14
0
 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)
Example #15
0
 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, {})
Example #16
0
 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)
Example #17
0
 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)
Example #18
0
 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])
Example #19
0
 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)
Example #20
0
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
Example #21
0
 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')
Example #22
0
    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 ")
Example #23
0
 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)
Example #24
0
 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)
Example #25
0
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
Example #26
0
 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')
Example #27
0
 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)
Example #28
0
 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')
Example #29
0
    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)
Example #30
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)