cleanup: module naming re-structured
This commit is contained in:
0
pylot/core/read/__init__.py
Normal file
0
pylot/core/read/__init__.py
Normal file
94
pylot/core/read/data.py
Normal file
94
pylot/core/read/data.py
Normal file
@@ -0,0 +1,94 @@
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# Provide user the opportunity to read arbitrary organized database
|
||||
# types. This means e.g. seiscomp data structure (SDS) or event based
|
||||
# EGELADOS structure.
|
||||
#
|
||||
|
||||
import os
|
||||
|
||||
|
||||
class GenericDataBase(object):
|
||||
'''
|
||||
GenericDataBase type holds all information about the current data-
|
||||
base working on.
|
||||
'''
|
||||
def __init__(self, stexp=None, **kwargs):
|
||||
dbRegExp = {}
|
||||
|
||||
structExpression = os.path.split(stexp)
|
||||
self.dataBaseDict = kwargs
|
||||
|
||||
|
||||
class SeiscompDataStructure(object):
|
||||
|
||||
def __init__(self, dataType='waveform', **kwargs):
|
||||
'''
|
||||
Object initialization method:
|
||||
|
||||
:type dataType: str
|
||||
:param dataType: Desired data type. Default: ``'waveform'``
|
||||
'''
|
||||
# imports
|
||||
from obspy.core import UTCDateTime
|
||||
|
||||
now = UTCDateTime()
|
||||
# Data type options
|
||||
self.__typeOptions = {'waveform': 'D', # Waveform data
|
||||
'detect': 'E', # Detection data
|
||||
'log': 'L', # Log data
|
||||
'timing': 'T', # Timing data
|
||||
'calib': 'C', # Calibration data
|
||||
'resp': 'R', # Response data
|
||||
'opaque': 'O' # Opaque data
|
||||
}
|
||||
|
||||
if dataType in self.__typeOptions.keys():
|
||||
self.dataType = dataType
|
||||
else:
|
||||
self.dataType = 'waveform' # default value for dataType
|
||||
|
||||
# SDS fields' default values
|
||||
# definitions from
|
||||
# http://www.seiscomp3.org/wiki/doc/applications/slarchive/SDS
|
||||
self.__sdsFields = {'SDSdir': '/data/SDS', # base directory
|
||||
'YEAR': '{0:04d}'.format(now.year), # 4 digits
|
||||
'NET': '??', # up to 8 characters
|
||||
'STA': '????', # up to 8 characters
|
||||
'CHAN': 'HH?', # up to 8 characters
|
||||
'TYPE': self._getType(), # 1 character
|
||||
'LOC': '', # up to 8 characters
|
||||
'DAY': '{0:03d}'.format(now.julday) # 3 digit doy
|
||||
}
|
||||
self.modifiyFields(**kwargs)
|
||||
|
||||
def modifiyFields(self, **kwargs):
|
||||
if kwargs and isinstance(kwargs, dict):
|
||||
for key, value in kwargs.iteritems():
|
||||
key = str(key)
|
||||
value = str(value)
|
||||
try:
|
||||
if key in self.__sdsFields.keys():
|
||||
self.__sdsFields[key] = str(value)
|
||||
else:
|
||||
raise KeyError('unknown SDS wildcard: %s.' % key)
|
||||
except KeyError, e:
|
||||
errmsg = ''
|
||||
errmsg += 'WARNING:\n'
|
||||
errmsg += 'unable to set values for SDS fields\n'
|
||||
errmsg += '%s; desired value was: %s\n' % (e, value)
|
||||
print errmsg
|
||||
|
||||
def _getType(self):
|
||||
return self.__typeOptions[self.dataType]
|
||||
|
||||
def expandDataPath(self):
|
||||
fullChan = '{0}.{1}'.format(self.__sdsFields['CHAN'], self._getType())
|
||||
dataPath = os.path.join(self.__sdsFields['SDSdir'],
|
||||
self.__sdsFields['YEAR'],
|
||||
self.__sdsFields['NET'],
|
||||
self.__sdsFields['STA'],
|
||||
fullChan,
|
||||
'*{0}'.format(self.__sdsFields['DAY'])
|
||||
)
|
||||
return dataPath
|
||||
127
pylot/core/read/inputs.py
Normal file
127
pylot/core/read/inputs.py
Normal file
@@ -0,0 +1,127 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
|
||||
class AutoPickParameter(object):
|
||||
'''
|
||||
AutoPickParameters is a parameter type object capable to read and/or write
|
||||
parameter ASCII and binary files.
|
||||
|
||||
Parameters are given for example as follows:
|
||||
|
||||
phl S # phaselabel
|
||||
ff1 0.1 # freqmin
|
||||
ff2 0.5 # freqmax
|
||||
tdet 6.875 # det-window_(s)_for_ar
|
||||
tpred 2.5 # pred-window_(s)_for_ar
|
||||
order 4 # order_of_ar
|
||||
fnoise 0 # noise_level_for_ar
|
||||
suppp 7 # envelopecoeff
|
||||
tolt 300 # (s)time around arrival time
|
||||
f1tpwt 4 # propfact_minfreq_secondtaper
|
||||
pickwindow 9 # length_of_pick_window
|
||||
w1 1 # length_of_smoothing_window
|
||||
w2 0.37 # cf(i-1)*(1+peps)_for_local_min
|
||||
w3 0.25 # cf(i-1)*(1+peps)_for_local_min
|
||||
tslope 0.8;2 # slope_det_window_loc_glob
|
||||
aerr 30;60 # adjusted_error_slope_fitting_loc_glob
|
||||
tsn 20;5;20;10 # length_signal_window_S/N
|
||||
proPh Sn # nextprominentphase
|
||||
'''
|
||||
|
||||
def __init__(self, fn=None):
|
||||
'''
|
||||
Initialize parameter object:
|
||||
|
||||
read content of an ASCII file an form a type consistent dictionary
|
||||
contain all parameters.
|
||||
'''
|
||||
self.__filename = fn
|
||||
parFileCont = {}
|
||||
try:
|
||||
if self.__filename is not None:
|
||||
inputFile = open(self.__filename, 'r')
|
||||
lines = inputFile.readlines()
|
||||
for line in lines:
|
||||
parspl = line.split('\t')[:2]
|
||||
parFileCont[parspl[0].strip()] = parspl[1]
|
||||
for key, value in parFileCont.iteritems():
|
||||
try:
|
||||
val = int(value)
|
||||
except:
|
||||
try:
|
||||
val = float(value)
|
||||
except:
|
||||
if value.find(';') > 0:
|
||||
vallist = value.strip().split(';')
|
||||
val = []
|
||||
for val0 in vallist:
|
||||
val0 = float(val0)
|
||||
val.append(val0)
|
||||
else:
|
||||
val = str(value.strip())
|
||||
parFileCont[key] = val
|
||||
else:
|
||||
parFileCont = {}
|
||||
except Exception, e:
|
||||
self._printParameterError(e)
|
||||
parFileCont = {}
|
||||
self.__parameter = parFileCont
|
||||
|
||||
# Human-readable string representation of the object
|
||||
def __str__(self):
|
||||
string = ''
|
||||
string += 'Automated picking parameter:\n\n'
|
||||
if self.__parameter:
|
||||
for key, value in self.__parameter.iteritems():
|
||||
string += '%s:\t\t%s\n' % (key, value)
|
||||
else:
|
||||
string += 'Empty parameter dictionary.'
|
||||
return string
|
||||
|
||||
# String representation of the object
|
||||
def __repr__(self):
|
||||
return "AutoPickParameter('%s')" % self.__filename
|
||||
|
||||
# Boolean test
|
||||
def __nonzero__(self):
|
||||
return self.__parameter
|
||||
|
||||
def __getitem__(self, key):
|
||||
return self.__parameter[key]
|
||||
|
||||
def __setitem__(self, key, value):
|
||||
self.__parameter[key] = value
|
||||
|
||||
def __delitem__(self, key):
|
||||
del self.__parameter[key]
|
||||
|
||||
def __iter__(self):
|
||||
return iter(self.__parameter)
|
||||
|
||||
def __len__(self):
|
||||
return len(self.__parameter.keys())
|
||||
|
||||
def getParam(self, *args):
|
||||
try:
|
||||
for param in args:
|
||||
try:
|
||||
return self.__getitem__(param)
|
||||
except KeyError, e:
|
||||
self._printParameterError(e)
|
||||
except TypeError:
|
||||
try:
|
||||
return self.__getitem__(args)
|
||||
except KeyError, e:
|
||||
self._printParameterError(e)
|
||||
|
||||
def setParam(self, **kwargs):
|
||||
for param, value in kwargs.iteritems():
|
||||
try:
|
||||
self.__setitem__(param, value)
|
||||
except KeyError, e:
|
||||
self._printParameterError(e)
|
||||
print self
|
||||
|
||||
def _printParameterError(self, errmsg):
|
||||
print 'ParameterError:\n non-existent parameter %s' % errmsg
|
||||
Reference in New Issue
Block a user