Newer
Older

Jeremy M Fee
committed
Hal Simpson
committed
import TimeseriesUtility

Jeremy M Fee
committed
class Algorithm(object):
"""Base class for geomag algorithms
Parameters
----------
channels: array_like
the list of channels to be processed.
Notes
-----
An algorithm processes a stream of timeseries to produce new timeseries.

Jeremy M Fee
committed
"""
def __init__(self, inchannels=None, outchannels=None):
self._inchannels = inchannels
self._outchannels = outchannels
Hal Simpson
committed

Jeremy M Fee
committed
def process(self, stream):

Jeremy M Fee
committed
Parameters
----------
stream : obspy.core.Stream
input data
Returns
-------
obspy.core.Stream
resulting data
"""
return stream.copy()
Hal Simpson
committed
def get_input_channels(self):
"""Get input channels
Returns
-------
array_like
list of channels the algorithm needs to operate.
"""
Hal Simpson
committed
def get_output_channels(self):
"""Get output channels
Returns
-------
array_like
list of channels the algorithm will be returning.
"""
def get_input_interval(self, start, end):
start : UTCDateTime
start time of requested output
end : UTCDateTime
end time of requested output
tuple : (input_start, input_end)
start and end of required input to generate requested output.
Hal Simpson
committed
def can_produce_data(self, starttime, endtime, stream):
"""Can Product data
Parameters
----------
starttime: UTCDateTime
start time of requested output
end : UTCDateTime
end time of requested output
stream: obspy.core.Stream
The input stream we want to make certain has data for the algorithm
"""
input_gaps = TimeseriesUtility.get_merged_gaps(
TimeseriesUtility.get_stream_gaps(stream))
for input_gap in input_gaps:
# Check for gaps that include the entire range
if (starttime >= input_gap[0] and
starttime <= input_gap[1] and
endtime < input_gap[2]):
return False
return True