[change] improved docstrings and testing of utils.py
This commit is contained in:
parent
36e7bc1bb2
commit
49727b25df
@ -83,8 +83,8 @@ def clims(lim1, lim2):
|
|||||||
|
|
||||||
def demeanTrace(trace, window):
|
def demeanTrace(trace, window):
|
||||||
"""
|
"""
|
||||||
returns the DATA where each trace is demean by the average value within
|
takes a trace object and returns the same trace object but with data
|
||||||
WINDOW
|
demeaned within a certain time window
|
||||||
:param trace: waveform trace object
|
:param trace: waveform trace object
|
||||||
:type trace: `~obspy.core.stream.Trace`
|
:type trace: `~obspy.core.stream.Trace`
|
||||||
:param window:
|
:param window:
|
||||||
@ -101,9 +101,9 @@ def findComboBoxIndex(combo_box, val):
|
|||||||
Function findComboBoxIndex takes a QComboBox object and a string and
|
Function findComboBoxIndex takes a QComboBox object and a string and
|
||||||
returns either 0 or the index throughout all QComboBox items.
|
returns either 0 or the index throughout all QComboBox items.
|
||||||
:param combo_box: Combo box object.
|
:param combo_box: Combo box object.
|
||||||
:type combo_box: QComboBox
|
:type combo_box: `~QComboBox`
|
||||||
:param val: Name of a combo box to search for.
|
:param val: Name of a combo box to search for.
|
||||||
:type val:
|
:type val: basestring
|
||||||
:return: index value of item with name val or 0
|
:return: index value of item with name val or 0
|
||||||
"""
|
"""
|
||||||
return combo_box.findText(val) if combo_box.findText(val) is not -1 else 0
|
return combo_box.findText(val) if combo_box.findText(val) is not -1 else 0
|
||||||
@ -111,21 +111,35 @@ def findComboBoxIndex(combo_box, val):
|
|||||||
|
|
||||||
def find_nearest(array, value):
|
def find_nearest(array, value):
|
||||||
'''
|
'''
|
||||||
Function find_nearest takes an array and a value and returns the
|
function find_nearest takes an array and a value and returns the
|
||||||
index of the nearest value found in the array.
|
index of the nearest value found in the array
|
||||||
:param array:
|
:param array: array containing values
|
||||||
:param value:
|
:type array: `~numpy.ndarray`
|
||||||
:return:
|
:param value: number searched for
|
||||||
|
:return: index of the array item being nearest to the value
|
||||||
|
|
||||||
|
>>> a = np.array([ 1.80339578, -0.72546654, 0.95769195, -0.98320759, 0.85922623])
|
||||||
|
>>> find_nearest(a, 1.3)
|
||||||
|
2
|
||||||
|
>>> find_nearest(a, 0)
|
||||||
|
1
|
||||||
|
>>> find_nearest(a, 2)
|
||||||
|
0
|
||||||
|
>>> find_nearest(a, -1)
|
||||||
|
3
|
||||||
|
>>> a = np.array([ 1.1, -0.7, 0.9, -0.9, 0.8])
|
||||||
|
>>> find_nearest(a, 0.849)
|
||||||
|
4
|
||||||
'''
|
'''
|
||||||
return (np.abs(array - value)).argmin()
|
return (np.abs(array - value)).argmin()
|
||||||
|
|
||||||
|
|
||||||
def fnConstructor(s):
|
def fnConstructor(s):
|
||||||
'''
|
'''
|
||||||
|
takes a string and returns a valid filename (especially on windows machines)
|
||||||
:param s:
|
:param s: desired filename
|
||||||
:type s:
|
:type s: str
|
||||||
:return:
|
:return: valid filename
|
||||||
'''
|
'''
|
||||||
if type(s) is str:
|
if type(s) is str:
|
||||||
s = s.split(':')[-1]
|
s = s.split(':')[-1]
|
||||||
@ -143,7 +157,21 @@ def fnConstructor(s):
|
|||||||
|
|
||||||
|
|
||||||
def four_digits(year):
|
def four_digits(year):
|
||||||
if year + 2000 < UTCDateTime.utcnow().year:
|
"""
|
||||||
|
takes a two digit year integer and returns the correct four digit equivalent
|
||||||
|
from the last 100 years
|
||||||
|
:param year: two digit year
|
||||||
|
:type year: int
|
||||||
|
:return: four digit year correspondant
|
||||||
|
|
||||||
|
>>> four_digits(20)
|
||||||
|
1920
|
||||||
|
>>> four_digits(16)
|
||||||
|
2016
|
||||||
|
>>> four_digits(00)
|
||||||
|
2000
|
||||||
|
"""
|
||||||
|
if year + 2000 <= UTCDateTime.utcnow().year:
|
||||||
year += 2000
|
year += 2000
|
||||||
else:
|
else:
|
||||||
year += 1900
|
year += 1900
|
||||||
@ -152,10 +180,11 @@ def four_digits(year):
|
|||||||
|
|
||||||
def getGlobalTimes(stream):
|
def getGlobalTimes(stream):
|
||||||
'''
|
'''
|
||||||
|
takes a stream object and returns the latest end and the earliest start
|
||||||
:param stream:
|
time of all contained trace objects
|
||||||
:type stream
|
:param stream: seismological data stream
|
||||||
:return:
|
:type stream: `~obspy.core.stream.Stream`
|
||||||
|
:return: minimum start time and maximum end time
|
||||||
'''
|
'''
|
||||||
min_start = UTCDateTime()
|
min_start = UTCDateTime()
|
||||||
max_end = None
|
max_end = None
|
||||||
@ -169,6 +198,8 @@ def getGlobalTimes(stream):
|
|||||||
|
|
||||||
def getHash(time):
|
def getHash(time):
|
||||||
'''
|
'''
|
||||||
|
takes a time object and returns the corresponding SHA1 hash of the
|
||||||
|
formatted date string
|
||||||
:param time: time object for which a hash should be calculated
|
:param time: time object for which a hash should be calculated
|
||||||
:type time: :class: `~obspy.core.utcdatetime.UTCDateTime` object
|
:type time: :class: `~obspy.core.utcdatetime.UTCDateTime` object
|
||||||
:return: str
|
:return: str
|
||||||
@ -180,27 +211,26 @@ def getHash(time):
|
|||||||
|
|
||||||
def getLogin():
|
def getLogin():
|
||||||
'''
|
'''
|
||||||
|
returns the actual user's login ID
|
||||||
:return:
|
:return: login ID
|
||||||
'''
|
'''
|
||||||
return pwd.getpwuid(os.getuid())[0]
|
return pwd.getpwuid(os.getuid())[0]
|
||||||
|
|
||||||
|
|
||||||
def getOwner(fn):
|
def getOwner(fn):
|
||||||
'''
|
'''
|
||||||
|
takes a filename and return the login ID of the actual owner of the file
|
||||||
:param fn:
|
:param fn: filename of the file tested
|
||||||
:type fn:
|
:type fn: str
|
||||||
:return:
|
:return: login ID of the file's owner
|
||||||
'''
|
'''
|
||||||
return pwd.getpwuid(os.stat(fn).st_uid).pw_name
|
return pwd.getpwuid(os.stat(fn).st_uid).pw_name
|
||||||
|
|
||||||
|
|
||||||
def getPatternLine(fn, pattern):
|
def getPatternLine(fn, pattern):
|
||||||
"""
|
"""
|
||||||
Takes a file name and a pattern string to search for in the file and
|
takes a file name and a pattern string to search for in the file and
|
||||||
returns the first line which contains the pattern string otherwise None.
|
returns the first line which contains the pattern string otherwise 'None'
|
||||||
|
|
||||||
:param fn: file name
|
:param fn: file name
|
||||||
:type fn: str
|
:type fn: str
|
||||||
:param pattern: pattern string to search for
|
:param pattern: pattern string to search for
|
||||||
@ -223,22 +253,52 @@ def getPatternLine(fn, pattern):
|
|||||||
|
|
||||||
def isSorted(iterable):
|
def isSorted(iterable):
|
||||||
'''
|
'''
|
||||||
Takes an iterable and checks if args* are in order.
|
takes an iterable and returns 'True' if the items are in order otherwise
|
||||||
:param iterable: any with defined __ls__() and __gs__()
|
'False'
|
||||||
:type iterable: list
|
:param iterable: an iterable object
|
||||||
|
:type iterable:
|
||||||
:return: Boolean
|
:return: Boolean
|
||||||
|
|
||||||
|
>>> isSorted(1)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
AssertionError: object is not iterable; object: 1
|
||||||
|
>>> isSorted([1,2,3,4])
|
||||||
|
True
|
||||||
|
>>> isSorted('abcd')
|
||||||
|
True
|
||||||
|
>>> isSorted('bcad')
|
||||||
|
False
|
||||||
|
>>> isSorted([2,3,1,4])
|
||||||
|
False
|
||||||
'''
|
'''
|
||||||
|
assert isIterable(iterable), 'object is not iterable; object: {' \
|
||||||
|
'0}'.format(iterable)
|
||||||
|
if type(iterable) is str:
|
||||||
|
iterable = [s for s in iterable]
|
||||||
return sorted(iterable) == iterable
|
return sorted(iterable) == iterable
|
||||||
|
|
||||||
|
|
||||||
|
def isIterable(obj):
|
||||||
|
"""
|
||||||
|
takes a python object and returns 'True' is the object is iterable and
|
||||||
|
'False' otherwise
|
||||||
|
:param obj: a python object
|
||||||
|
:return: True of False
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
iterator = iter(obj)
|
||||||
|
except TypeError as te:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
def prepTimeAxis(stime, trace):
|
def prepTimeAxis(stime, trace):
|
||||||
'''
|
'''
|
||||||
|
takes a starttime and a trace object and returns a valid time axis for
|
||||||
:param stime:
|
plotting
|
||||||
:type stime:
|
:param stime: start time of the actual seismogram as UTCDateTime
|
||||||
:param trace:
|
:param trace: seismic trace object
|
||||||
:type trace:
|
:return: valid numpy array with time stamps for plotting
|
||||||
:return:
|
|
||||||
'''
|
'''
|
||||||
nsamp = trace.stats.npts
|
nsamp = trace.stats.npts
|
||||||
srate = trace.stats.sampling_rate
|
srate = trace.stats.sampling_rate
|
||||||
|
Loading…
Reference in New Issue
Block a user