def metadata(read_dir): try: st = read(read_dir) #print(st) x = len(st) #CORRECTING FOR NETWORK CODE AND LOCATION network_change1 = 'UM' network_new_name1 = 'UM' #'BM' network_change2 = '01' network_new_name2 = 'UM' network_change3 = 'A' network_change4 = '' location_blank = '' for i in range(0, x): tr = st[i] # removes LOCATION so it is blank, as listed in the metadata # files (regardless of what it was previously) tr.stats["location"] = location_blank # Changes BOREHOLE network codes from UM to BM and SURFACE #network codes from 01 to UM net = tr.stats["network"] if network_change1 in net: tr.stats["network"] = network_new_name1 elif network_change2 or network_change3 or \ network_change4 in net: tr.stats["network"] = network_new_name2 else: continue #CORRECTING BOREHOLE STATION NAMES serial_no_1 = 'A346' site_name_1 = 'LOYU' serial_no_2 = 'BD5E' site_name_2 = 'MOSU' serial_no_3 = 'BD70' site_name_3 = 'SGWU' serial_no_4 = 'BD91' site_name_4 = 'WILU' #Changes station name from serial number to station code for i in range(0, x): tr = st[i] stat = tr.stats["station"] if serial_no_1 in stat: tr.stats["station"] = site_name_1 elif serial_no_2 in stat: tr.stats["station"] = site_name_2 elif serial_no_3 in stat: tr.stats["station"] = site_name_3 elif serial_no_4 in stat: tr.stats["station"] = site_name_4 else: continue # CHANGES TO CHANNEL CODE # (this is a bit messy at the moment since the wildcard #feature seemed to be failing) channel_new_name_E = 'EHE' channel_new_name_N = 'EHN' channel_new_name_Z = 'EHZ' for i in range(0, x): tr = st[i] chan = tr.stats["channel"] # Changes CHANNEL names from '**E', '**N', '**Z', (e.g. BHE, DHZ) # to a consistant format of EHE, EHN, EHZ # EXCEPT FOR BOREHOLE STATIONS, which will maintain channel codes # BHE, BHN, BHZ if 'DHE' in chan: tr.stats["channel"] = channel_new_name_E elif 'DHN' in chan: tr.stats["channel"] = channel_new_name_N elif 'DHZ' in chan: tr.stats["channel"] = channel_new_name_Z elif 'ENE' in chan: tr.stats["channel"] = channel_new_name_E elif 'ENN' in chan: tr.stats["channel"] = channel_new_name_N elif 'ENZ' in chan: tr.stats["channel"] = channel_new_name_Z else: continue # saves stream as a combination of edited traces st[i] = tr # ATTACH METADATA TO STREAM #import and read metadata file from GitHub metadata_path = 'UOM.xml' if not os.path.isfile(metadata_path): os.system('wget https://raw.githubusercontent.com/\ unimelb-geophys/metadata/master/UOM.xml') metadata = stationxml.read_StationXML(metadata_path) #print(metadata) #st.write("") #attach metadata to stream st.attach_response(metadata) #st.remove_response() #delete downloaded metadata file #os.system('rm -r UOM.xml') #st.write(read_dir, format="MSEED") except Exception as e: print("\nOops, there was a problem with attaching the metadata\n") print(e) return st
elif 'ENZ' in chan: tr.stats["channel"] = channel_new_name_Z else: continue # saves stream as a combination of edited traces st[i] = tr # ATTACH METADATA TO STREAM #import and read metadata file from GitHub os.system( 'wget https://raw.githubusercontent.com/unimelb-geophys/metadata/master/UOM.xml' ) metadata = stationxml.read_StationXML( "/storage/AGOS/XML/UOM.xml") #'UOM.xml') #print(metadata) #st.write("") print(st) #attach metadata to stream st.attach_response(metadata) #st.remove_response() #delete downloaded metadata file os.system('rm -r UOM.xml') #CAN CHECK EVERYTHING IS WORKING st.write(read_dir, format="MSEED")
def metadata(read_dir): try: st = read(read_dir) #print(st) x = len(st) #CORRECTING FOR NETWORK CODE AND LOCATION network_change1 = 'UM' network_new_name1 = 'UM'#'BM' network_change2 = '01' network_new_name2 = 'UM' network_change3 = 'A' network_change4 = '' location_blank = '' for i in range(0, x): tr = st[i] # removes LOCATION so it is blank, as listed in the metadata # files (regardless of what it was previously) tr.stats["location"] = location_blank # Changes BOREHOLE network codes from UM to BM and SURFACE #network codes from 01 to UM net = tr.stats["network"] if network_change1 in net: tr.stats["network"] = network_new_name1 elif network_change2 or network_change3 or \ network_change4 in net: tr.stats["network"] = network_new_name2 else: continue #CORRECTING BOREHOLE STATION NAMES serial_no_1 = 'A346' site_name_1 = 'LOYU' serial_no_2 = 'BD5E' site_name_2 = 'MOSU' serial_no_3 = 'BD70' site_name_3 = 'SGWU' serial_no_4 = 'BD91' site_name_4 = 'WILU' #Changes station name from serial number to station code for i in range(0, x): tr = st[i] stat = tr.stats["station"] if serial_no_1 in stat: tr.stats["station"] = site_name_1 elif serial_no_2 in stat: tr.stats["station"] = site_name_2 elif serial_no_3 in stat: tr.stats["station"] = site_name_3 elif serial_no_4 in stat: tr.stats["station"] = site_name_4 else: continue # CHANGES TO CHANNEL CODE # (this is a bit messy at the moment since the wildcard #feature seemed to be failing) channel_new_name_E = 'EHE' channel_new_name_N = 'EHN' channel_new_name_Z = 'EHZ' for i in range(0, x): tr = st[i] chan = tr.stats["channel"] # Changes CHANNEL names from '**E', '**N', '**Z', (e.g. BHE, DHZ) # to a consistant format of EHE, EHN, EHZ # EXCEPT FOR BOREHOLE STATIONS, which will maintain channel codes # BHE, BHN, BHZ if 'DHE' in chan: tr.stats["channel"] = channel_new_name_E elif 'DHN' in chan: tr.stats["channel"] = channel_new_name_N elif 'DHZ' in chan: tr.stats["channel"] = channel_new_name_Z elif 'ENE' in chan: tr.stats["channel"] = channel_new_name_E elif 'ENN' in chan: tr.stats["channel"] = channel_new_name_N elif 'ENZ' in chan: tr.stats["channel"] = channel_new_name_Z else: continue # saves stream as a combination of edited traces st[i] = tr # ATTACH METADATA TO STREAM #import and read metadata file from GitHub metadata_path = 'UOM.xml' if not os.path.isfile(metadata_path): os.system('wget https://raw.githubusercontent.com/\ unimelb-geophys/metadata/master/UOM.xml') metadata = stationxml.read_StationXML(metadata_path) #print(metadata) #st.write("") #attach metadata to stream st.attach_response(metadata) #st.remove_response() #delete downloaded metadata file #os.system('rm -r UOM.xml') #st.write(read_dir, format="MSEED") except Exception as e: print("\nOops, there was a problem with attaching the metadata\n") print(e) return st
def get_waveforms(starttime = str() , duration, Surface = True, Borehole = True, metadata = True, filestruct = Channel,Stat, Net, Sta, BUD, zerofill = True): # ==================================================== # Sort out time from user input # ==================================================== # ======================== # Data download # ======================== # ======================================== # Attach metadata # ======================================== #use file name produced from download script to read .mseed file from wherever this has been saved. #alternatively I imagine eventually we could pull files down from seishub instead. #currently reading an example miniseed file in as a stream st = read("2014-10-17UTC8_13.mseed") x = len(st) #CORRECTING FOR NETWORK CODE AND LOCATION network_change1 = 'UM' network_new_name1 = 'BM' network_change2 = '01' network_new_name2 = 'UM' location_blank = '' for i in range(0, x): tr = st[i] # removes LOCATION so it is blank, as listed in the metadata files (regardless of what it was previously) tr.stats["location"] = location_blank # Changes BOREHOLE network codes from UM to BM and SURFACE network codes from 01 to UM net = tr.stats["network"] if network_change1 in net: tr.stats["network"] = network_new_name1 elif network_change2 in net: tr.stats["network"] = network_new_name2 else: continue #CORRECTING BOREHOLE STATION NAMES serial_no_1 = 'A346' site_name_1 = 'LOYU' serial_no_2 = 'BD5E' site_name_2 = 'MOSU' serial_no_3 = 'BD70' site_name_3 = 'SGWU' serial_no_4 = 'BD91' site_name_4 = 'WILU' #Changes station name from serial number to station code for i in range(0, x): tr = st[i] stat = tr.stats["station"] if serial_no_1 in stat: tr.stats["station"] = site_name_1 elif serial_no_2 in stat: tr.stats["station"] = site_name_2 elif serial_no_3 in stat: tr.stats["station"] = site_name_3 elif serial_no_4 in stat: tr.stats["station"] = site_name_4 else: continue # CHANGES TO CHANNEL CODE # (this is a bit messy at the moment since the wildcard feature seemed to be failing) channel_new_name_E = 'EHE' channel_new_name_N = 'EHN' channel_new_name_Z = 'EHZ' for i in range(0, x): tr = st[i] chan = tr.stats["channel"] # Changes CHANNEL names from '**E', '**N', '**Z', (e.g. BHE, DHZ) to a consitant format of EHE, EHN, EHZ # EXCEPT FOR BOREHOLE STATIONS, which will maintain channel codes BHE, BHN, BHZ if 'DHE' in chan: tr.stats["channel"] = channel_new_name_E elif 'DHN' in chan: tr.stats["channel"] = channel_new_name_N elif 'DHZ' in chan: tr.stats["channel"] = channel_new_name_Z elif 'ENE' in chan: tr.stats["channel"] = channel_new_name_E elif 'ENN' in chan: tr.stats["channel"] = channel_new_name_N elif 'ENZ' in chan: tr.stats["channel"] = channel_new_name_Z else: continue # saves stream as a combination of edited traces st[i] = tr # ATTACH METADATA TO STREAM #import and read metadata file, before attaching it to our stream #next step is to pull from github or include option here to update metadata file. metadata = stationxml.read_StationXML("UOM.xml") #can use'("/path/to/UOM.xml")' to direct script to the correct location st.attach_response(metadata) #then save the file, or push to seishub, open in obspyck etc. # ======================================== # Process: fill, buffer, highpass lowpass, remove response, spectral whitening # ======================================== # ======================================== # Output # ======================================== if filestruct == "Single": elif
""" import os, sys sys.path.append("/home/abe/anaconda/lib/python2.7/site-packages") from obspy import UTCDateTime import datetime as dt from obspy import read, read_inventory from obspy import station from obspy.station import stationxml from obspy.xseed import Parser meta_dir = '/home/boland/Dropbox/University/UniMelb/AGOS/METADATA/metadata/UOM.dataless' meta_dir = "/home/boland/Dropbox/University/UniMelb/AGOS/METADATA/metadata/UOM.xml" metadata = stationxml.read_StationXML(meta_dir) t0 = UTCDateTime("2014-10-01T00:00:00.0") # date at time 00h00m00s dirs = '/storage/ANT/PROGRAMS/ANT_OUTPUT/INPUT/DATA/2014-10/UM.HOLS.EHZ.mseed' st = read(dirs, starttime=t0, endtime=t0 + dt.timedelta(minutes=45)) print(st) #inv = Parser(meta_dir) #paz = inv.getPAZ("EHZ", t0) #attach metadata to stream st.attach_response(metadata) st.remove_response()