Skip to content
Snippets Groups Projects
Commit eee72814 authored by Jeremy M Fee's avatar Jeremy M Fee
Browse files

Update imfv283 factories to use generic _get_timeseries method

parent a8ea5893
No related branches found
No related tags found
No related merge requests found
"""Factory that loads IAGA2002 Files."""
import obspy.core
import numpy
from .. import ChannelConverter
from ..TimeseriesFactory import TimeseriesFactory
from ..Util import read_url
from IMFV283Parser import IMFV283Parser
from ..ObservatoryMetadata import ObservatoryMetadata
......@@ -23,10 +21,8 @@ class IMFV283Factory(TimeseriesFactory):
url/file reading.
"""
def __init__(self, urlTemplate, observatory=None, channels=None, type=None,
interval=None, observatoryMetadata=None):
TimeseriesFactory.__init__(self, observatory, channels, type,
interval, urlTemplate)
def __init__(self, observatoryMetadata=None, **kwargs):
TimeseriesFactory.__init__(self, **kwargs)
self.observatoryMetadata = observatoryMetadata or ObservatoryMetadata()
def get_timeseries(self, starttime, endtime, observatory=None,
......@@ -57,24 +53,21 @@ class IMFV283Factory(TimeseriesFactory):
if invalid values are requested, or errors occur while
retrieving timeseries.
"""
timeseries = self._get_timeseries(
starttime=starttime,
endtime=endtime,
observatory=observatory,
channels=channels,
type=type,
interval=interval)
observatory = observatory or self.observatory
channels = channels or self.channels
type = type or self.type
interval = interval or self.interval
timeseries = obspy.core.Stream()
url_id = self._get_url(observatory, obspy.core.UTCDateTime(),
type, interval)
imfV283File = read_url(url_id)
timeseries += self.parse_string(imfV283File)
# merge channel traces for multiple days
timeseries.merge()
# trim to requested start/end time
timeseries.trim(starttime, endtime)
self._post_process(timeseries)
if observatory is not None:
timeseries = timeseries.select(station=observatory)
return timeseries.select(station=observatory)
for trace in timeseries:
stats = trace.stats
self.observatoryMetadata.set_metadata(stats, stats.station,
stats.channel, 'variation', 'minute')
return timeseries
def parse_string(self, imfV283String):
"""Parse the contents of a string in the format of an IMFV283 file.
......@@ -104,9 +97,3 @@ class IMFV283Factory(TimeseriesFactory):
trace.data = ChannelConverter.get_radians_from_minutes(
trace.data)
return stream
def _post_process(self, timeseries):
for trace in timeseries:
stats = trace.stats
self.observatoryMetadata.set_metadata(stats, stats.station,
stats.channel, 'variation', 'minute')
......@@ -17,10 +17,8 @@ class StreamIMFV283Factory(IMFV283Factory):
IMFV283Factory
Timeseriesfactory
"""
def __init__(self, stream, observatory=None, channels=None,
type=None, interval=None):
IMFV283Factory.__init__(self, None, observatory, channels,
type, interval)
def __init__(self, stream, **kwargs):
IMFV283Factory.__init__(self, **kwargs)
self._stream = stream
def get_timeseries(self, starttime, endtime, observatory=None,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment