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.""" """Factory that loads IAGA2002 Files."""
import obspy.core
import numpy import numpy
from .. import ChannelConverter from .. import ChannelConverter
from ..TimeseriesFactory import TimeseriesFactory from ..TimeseriesFactory import TimeseriesFactory
from ..Util import read_url
from IMFV283Parser import IMFV283Parser from IMFV283Parser import IMFV283Parser
from ..ObservatoryMetadata import ObservatoryMetadata from ..ObservatoryMetadata import ObservatoryMetadata
...@@ -23,10 +21,8 @@ class IMFV283Factory(TimeseriesFactory): ...@@ -23,10 +21,8 @@ class IMFV283Factory(TimeseriesFactory):
url/file reading. url/file reading.
""" """
def __init__(self, urlTemplate, observatory=None, channels=None, type=None, def __init__(self, observatoryMetadata=None, **kwargs):
interval=None, observatoryMetadata=None): TimeseriesFactory.__init__(self, **kwargs)
TimeseriesFactory.__init__(self, observatory, channels, type,
interval, urlTemplate)
self.observatoryMetadata = observatoryMetadata or ObservatoryMetadata() self.observatoryMetadata = observatoryMetadata or ObservatoryMetadata()
def get_timeseries(self, starttime, endtime, observatory=None, def get_timeseries(self, starttime, endtime, observatory=None,
...@@ -57,24 +53,21 @@ class IMFV283Factory(TimeseriesFactory): ...@@ -57,24 +53,21 @@ class IMFV283Factory(TimeseriesFactory):
if invalid values are requested, or errors occur while if invalid values are requested, or errors occur while
retrieving timeseries. retrieving timeseries.
""" """
timeseries = self._get_timeseries(
starttime=starttime,
endtime=endtime,
observatory=observatory,
channels=channels,
type=type,
interval=interval)
observatory = observatory or self.observatory 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: if observatory is not None:
timeseries = timeseries.select(station=observatory) 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): def parse_string(self, imfV283String):
"""Parse the contents of a string in the format of an IMFV283 file. """Parse the contents of a string in the format of an IMFV283 file.
...@@ -104,9 +97,3 @@ class IMFV283Factory(TimeseriesFactory): ...@@ -104,9 +97,3 @@ class IMFV283Factory(TimeseriesFactory):
trace.data = ChannelConverter.get_radians_from_minutes( trace.data = ChannelConverter.get_radians_from_minutes(
trace.data) trace.data)
return stream 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): ...@@ -17,10 +17,8 @@ class StreamIMFV283Factory(IMFV283Factory):
IMFV283Factory IMFV283Factory
Timeseriesfactory Timeseriesfactory
""" """
def __init__(self, stream, observatory=None, channels=None, def __init__(self, stream, **kwargs):
type=None, interval=None): IMFV283Factory.__init__(self, **kwargs)
IMFV283Factory.__init__(self, None, observatory, channels,
type, interval)
self._stream = stream self._stream = stream
def get_timeseries(self, starttime, endtime, observatory=None, 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