Exemple #1
0
 def test_getInventory2(self):
     """
     Bugfix for location and channel codes for new inventory schema
     """
     client = Client()
     # new schema
     inventory = client.getInventory('CH', 'GRYON')
     self.assertTrue('CH.GRYON..EHE' in inventory)
     # old schema
     inventory = client.getInventory('BW', 'MANZ')
     self.assertTrue('BW.MANZ..EHZ' in inventory)
Exemple #2
0
 def test_getInventory2(self):
     """
     Bugfix for location and channel codes for new inventory schema
     """
     client = Client(user='******')
     # new schema
     inventory = client.getInventory('CH', 'GRYON')
     self.assertTrue('CH.GRYON..EHE' in inventory)
     # old schema
     inventory = client.getInventory('BW', 'MANZ')
     self.assertTrue('BW.MANZ..EHZ' in inventory)
Exemple #3
0
 def test_getInventoryTwice(self):
     """
     Requesting inventory data twice should not fail.
     """
     client = Client(user='******')
     dt = UTCDateTime(2009, 1, 1)
     # station
     client.getInventory('BW', 'MANZ', starttime=dt, endtime=dt + 1)
     client.getInventory('BW', 'MANZ', starttime=dt, endtime=dt + 1)
     # network
     client.getInventory('BW', starttime=dt, endtime=dt + 1)
     client.getInventory('BW', starttime=dt, endtime=dt + 1)
Exemple #4
0
 def test_getInventoryTwice(self):
     """
     Requesting inventory data twice should not fail.
     """
     client = Client()
     dt = UTCDateTime(2009, 1, 1)
     # station
     client.getInventory('BW', 'MANZ', starttime=dt, endtime=dt + 1)
     client.getInventory('BW', 'MANZ', starttime=dt, endtime=dt + 1)
     # network
     client.getInventory('BW', starttime=dt, endtime=dt + 1)
     client.getInventory('BW', starttime=dt, endtime=dt + 1)
Exemple #5
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
Exemple #6
0
    def test_getInventoryInstrumentChange(self):
        """
        Check results of getInventory 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")
        inv = client.getInventory("GE",
                                  "SNAA",
                                  "",
                                  "BHZ",
                                  dt,
                                  dt + 10,
                                  instruments=True,
                                  route=False)
        self.assertTrue(len(inv['GE.SNAA..BHZ']), 1)
        # two instruments in given time span
        dt = UTCDateTime("2003-01-09T23:59:59")
        inv = client.getInventory("GE",
                                  "SNAA",
                                  "",
                                  "BHZ",
                                  dt,
                                  dt + 10,
                                  instruments=True,
                                  route=False)
        self.assertTrue(len(inv['GE.SNAA..BHZ']), 2)
        # one instrument in given time span
        dt = UTCDateTime("2003-01-10T00:00:00")
        inv = client.getInventory("GE",
                                  "SNAA",
                                  "",
                                  "BHZ",
                                  dt,
                                  dt + 10,
                                  instruments=True,
                                  route=False)
        self.assertTrue(len(inv['GE.SNAA..BHZ']), 1)
Exemple #7
0
    def test_getInventoryInstrumentChange(self):
        """
        Check results of getInventory 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")
        inv = client.getInventory("GE", "SNAA", "", "BHZ", dt, dt + 10,
                                  instruments=True, route=False)
        self.assertTrue(len(inv['GE.SNAA..BHZ']), 1)
        # two instruments in given time span
        dt = UTCDateTime("2003-01-09T23:59:59")
        inv = client.getInventory("GE", "SNAA", "", "BHZ", dt, dt + 10,
                                  instruments=True, route=False)
        self.assertTrue(len(inv['GE.SNAA..BHZ']), 2)
        # one instrument in given time span
        dt = UTCDateTime("2003-01-10T00:00:00")
        inv = client.getInventory("GE", "SNAA", "", "BHZ", dt, dt + 10,
                                  instruments=True, route=False)
        self.assertTrue(len(inv['GE.SNAA..BHZ']), 1)
Exemple #8
0
def ARC_available(input_dics, event, target_path, event_number):
    """
    Check the availability of ArcLink stations
    """
    print "Check the availability of ArcLink stations"
    client_arclink = Client_arclink(user='******',
                                    timeout=input_dics['arc_avai_timeout'])
    Sta_arc = []
    try:
        inventories = client_arclink.getInventory(
            network=input_dics['net'],
            station=input_dics['sta'],
            location=input_dics['loc'],
            channel=input_dics['cha'],
            starttime=UTCDateTime(event['t1']),
            endtime=UTCDateTime(event['t2']),
            min_latitude=input_dics['mlat_rbb'],
            max_latitude=input_dics['Mlat_rbb'],
            min_longitude=input_dics['mlon_rbb'],
            max_longitude=input_dics['Mlon_rbb'])

        for inv_key in inventories.keys():
            netsta = inv_key.split('.')
            if len(netsta) == 4:
                sta = '%s.%s' % (netsta[0], netsta[1])
                if not inventories[sta]['depth']:
                    inventories[sta]['depth'] = 0.0
                Sta_arc.append([netsta[0], netsta[1], netsta[2], netsta[3],
                                inventories[sta]['latitude'],
                                inventories[sta]['longitude'],
                                inventories[sta]['elevation'],
                                inventories[sta]['depth']])

    except Exception as e:
        exc_file = open(os.path.join(target_path, 'info', 'exception'), 'a+')
        ee = 'arclink -- Event: %s --- %s\n' % (str(event_number+1), e)
        exc_file.writelines(ee)
        exc_file.close()
        print 'ERROR: %s' % ee

    if len(Sta_arc) == 0:
        Sta_arc.append([])
    Sta_arc.sort()
    return Sta_arc
Exemple #9
0
 def test_getInventory(self):
     """
     Tests getInventory method on various ArcLink nodes.
     """
     client = Client(user='******')
     dt = UTCDateTime(2010, 1, 1)
     # 1 - GE network
     result = client.getInventory('GE', 'APE', starttime=dt, endtime=dt + 1)
     self.assertTrue('GE' in result)
     self.assertTrue('GE.APE' in result)
     # 2 - GE network
     result = client.getInventory('GE', 'APE', '', 'BHE', starttime=dt,
                                  endtime=dt + 1, instruments=True)
     self.assertTrue('GE' in result)
     self.assertTrue('GE.APE' in result)
     self.assertTrue('GE.APE..BHE' in result)  # only for instruments=True
     # 3 - BW network
     result = client.getInventory('BW', 'RJOB', starttime=dt,
                                  endtime=dt + 1)
     self.assertTrue('BW' in result)
     self.assertTrue('BW.RJOB' in result)
     # 4 - BW network
     result = client.getInventory('BW', 'MANZ', '', 'EHE', starttime=dt,
                                  endtime=dt + 1, instruments=True)
     self.assertTrue('BW' in result)
     self.assertTrue('BW.MANZ' in result)
     self.assertTrue('BW.MANZ..EHE' in result)
     # 5 - unknown network 00 via webdc.eu:18002
     self.assertRaises(ArcLinkException, client.getInventory, '00', '',
                       starttime=dt, endtime=dt + 1)
     # 6 - get channel gain without PAZ
     start = UTCDateTime("1970-01-01 00:00:00")
     end = UTCDateTime("2020-10-19 00:00:00")
     result = client.getInventory('BW', 'MANZ', '', 'EHE', start, end)
     self.assertTrue('BW' in result)
     self.assertTrue('BW.MANZ' in result)
     self.assertTrue('BW.MANZ..EHE' in result)
     self.assertEquals(len(result['BW.MANZ..EHE']), 1)
     self.assertTrue('gain' in result['BW.MANZ..EHE'][0])
     self.assertTrue('paz' not in result['BW.MANZ..EHE'][0])
     # 7 - history of instruments
     # GE.SNAA sometimes needs a while therefore we use command_delay=0.1
     client = Client(user='******', command_delay=0.1)
     result = client.getInventory('GE', 'SNAA', '', 'BHZ', start, end,
                                  instruments=True)
     self.assertTrue('GE' in result)
     self.assertTrue('GE.SNAA' in result)
     self.assertTrue('GE.SNAA..BHZ' in result)
     self.assertEquals(len(result['GE.SNAA..BHZ']), 4)
     # sort channel results
     channel = result['GE.SNAA..BHZ']
     channel = sorted(channel, key=operator.itemgetter('starttime'))
     # check for required attributes
     self.assertEquals(channel[0].starttime, UTCDateTime("1997-03-03"))
     self.assertEquals(channel[0].endtime, UTCDateTime("1999-10-11"))
     self.assertEquals(channel[0].gain, 596224500.0)
     self.assertEquals(channel[1].starttime, UTCDateTime("1999-10-11"))
     self.assertEquals(channel[1].endtime, UTCDateTime("2003-01-10"))
     self.assertEquals(channel[1].gain, 596224500.0)
     self.assertEquals(channel[2].starttime, UTCDateTime("2003-01-10"))
     self.assertEquals(channel[2].endtime, UTCDateTime(2011, 1, 15, 9, 56))
     self.assertEquals(channel[2].gain, 588000000.0)
Exemple #10
0
 def test_getInventory(self):
     """
     Tests getInventory method on various ArcLink nodes.
     """
     client = Client()
     dt = UTCDateTime(2010, 1, 1)
     # 1 - GE network
     result = client.getInventory('GE', 'APE', starttime=dt, endtime=dt + 1)
     self.assertTrue('GE' in result)
     self.assertTrue('GE.APE' in result)
     # 2 - GE network
     result = client.getInventory('GE', 'APE', '', 'BHE', starttime=dt,
                                  endtime=dt + 1, instruments=True)
     self.assertTrue('GE' in result)
     self.assertTrue('GE.APE' in result)
     self.assertTrue('GE.APE..BHE' in result)  # only for instruments=True
     # 3 - BW network
     result = client.getInventory('BW', 'RJOB', starttime=dt,
                                  endtime=dt + 1)
     self.assertTrue('BW' in result)
     self.assertTrue('BW.RJOB' in result)
     # 4 - BW network
     result = client.getInventory('BW', 'MANZ', '', 'EHE', starttime=dt,
                                  endtime=dt + 1, instruments=True)
     self.assertTrue('BW' in result)
     self.assertTrue('BW.MANZ' in result)
     self.assertTrue('BW.MANZ..EHE' in result)
     # 5 - unknown network 00 via webdc.eu:18002
     self.assertRaises(ArcLinkException, client.getInventory, '00', '',
                       starttime=dt, endtime=dt + 1)
     # 6 - get channel gain without PAZ
     start = UTCDateTime("1970-01-01 00:00:00")
     end = UTCDateTime("2020-10-19 00:00:00")
     result = client.getInventory('BW', 'MANZ', '', 'EHE', start, end)
     self.assertTrue('BW' in result)
     self.assertTrue('BW.MANZ' in result)
     self.assertTrue('BW.MANZ..EHE' in result)
     self.assertEquals(len(result['BW.MANZ..EHE']), 1)
     self.assertTrue('gain' in result['BW.MANZ..EHE'][0])
     self.assertTrue('paz' not in result['BW.MANZ..EHE'][0])
     # 7 - history of instruments
     # GE.SNAA sometimes needs a while therefore we use command_delay=0.1
     client = Client(command_delay=0.1)
     result = client.getInventory('GE', 'SNAA', '', 'BHZ', start, end,
                                  instruments=True)
     self.assertTrue('GE' in result)
     self.assertTrue('GE.SNAA' in result)
     self.assertTrue('GE.SNAA..BHZ' in result)
     self.assertEquals(len(result['GE.SNAA..BHZ']), 4)
     # sort channel results
     channel = result['GE.SNAA..BHZ']
     channel = sorted(channel, key=operator.itemgetter('starttime'))
     # check for required attributes
     self.assertEquals(channel[0].starttime, UTCDateTime("1997-03-03"))
     self.assertEquals(channel[0].endtime, UTCDateTime("1999-10-11"))
     self.assertEquals(channel[0].gain, 596224500.0)
     self.assertEquals(channel[1].starttime, UTCDateTime("1999-10-11"))
     self.assertEquals(channel[1].endtime, UTCDateTime("2003-01-10"))
     self.assertEquals(channel[1].gain, 596224500.0)
     self.assertEquals(channel[2].starttime, UTCDateTime("2003-01-10"))
     self.assertEquals(channel[2].endtime, UTCDateTime(2011, 1, 15, 9, 56))
     self.assertEquals(channel[2].gain, 588000000.0)
Exemple #11
0
def getArclinkInst_2(station, usermail, pwdkeys):

    #if station.loc == '--' : loc = ''

    sta2 = station
    sta2.lon = -1
    sta2.lat = -1
    sta2.ele = -1
    sta2.gain = -1
    sta2.dip = -1
    sta2.azi = -1
    sta2.inst = 'no_instrument_available'

    loc = station.loc

    if loc == '00' or loc == '01' or loc == '10' or loc == '11':  # no entry for this loc
        print 'Use key file'
        return getFromKeyFile(sta2)

    loc = ''

    client = Client(user=usermail, dcid_keys=pwdkeys)

    try:
        inv = client.getInventory(station.net,
                                  station.sta,
                                  loc,
                                  station.comp,
                                  instruments=True)
    except:
        return getFromKeyFile(sta2)

    #inv = WebDC.getInventory (station, usermail, pwdkeys)  # ??? noch einbauen

    print 'INV: ', inv
    keys = inv.keys()

    if len(keys) == 0:
        print 'No keys'
        return None

    if Globals.isDebug:  #    save inventory

        file = Server.InventoryFileName(station, '.txt')
        fp = open(file, 'w')
        lines = []

        for k in keys:
            lines.append('key = ' + str(k) + '\n')
            lines.append('inv = ' + str(inv[k]) + '\n')

        Basic.writeTextFile(file, lines)
    #endif

    inv1 = inv[station.net + '.' + station.sta]
    sta2.lon = inv1['longitude']
    sta2.lat = inv1['latitude']
    sta2.ele = inv1['elevation']

    key = station.net + '.' + station.sta + '.' + loc + '.' + station.comp
    inv1 = inv[key]

    z = inv1[0]
    z1 = z['paz']

    if 'gain' in z1: sta2.gain = z1['gain']

    if 'name' in z1:
        inst = z1['name']
        sta2.inst = inst.replace(' ', '_')

    sta3 = sta2
    return sta3
Exemple #12
0
# Setting up Vars...
net = opts.net
sta = opts.sta
cha = opts.cha
b = UTCDateTime(opts.b)
elat = opts.elat
elon = opts.elon 
edep = opts.edep
year=b.year
jul=b.julday
hour=b.hour
min=b.minute
sec=b.second

#Getting Station Latitude and Longitude:
stadic = client.getInventory(net,station=sta)
slat = stadic.get(net+"."+sta).get("latitude")
slon = stadic.get(net+"."+sta).get("longitude")
selv = stadic.get(net+"."+sta).get("elevation")
#print slat
#print slon

# Calculate gcarc, baz and az:
irisclient = iclient.Client()
gcbazaz = irisclient.distaz(stalat=slat, stalon=slon, evtlat=elat, evtlon=elon) 
gcarc = gcbazaz.get('distance')
baz = gcbazaz.get('backazimuth')
az = gcbazaz.get('azimuth')
#print gcarc
#print baz
#print az