From eee7281471677a350573a895af433b204fc731f2 Mon Sep 17 00:00:00 2001 From: Jeremy Fee <jmfee@usgs.gov> Date: Wed, 11 May 2016 12:10:54 -0600 Subject: [PATCH] Update imfv283 factories to use generic _get_timeseries method --- geomagio/imfv283/IMFV283Factory.py | 41 ++++++++---------------- geomagio/imfv283/StreamIMFV283Factory.py | 6 ++-- 2 files changed, 16 insertions(+), 31 deletions(-) diff --git a/geomagio/imfv283/IMFV283Factory.py b/geomagio/imfv283/IMFV283Factory.py index 2dc9edc9a..a12e079d2 100644 --- a/geomagio/imfv283/IMFV283Factory.py +++ b/geomagio/imfv283/IMFV283Factory.py @@ -1,10 +1,8 @@ """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') diff --git a/geomagio/imfv283/StreamIMFV283Factory.py b/geomagio/imfv283/StreamIMFV283Factory.py index 1e56fb94c..57e24c955 100644 --- a/geomagio/imfv283/StreamIMFV283Factory.py +++ b/geomagio/imfv283/StreamIMFV283Factory.py @@ -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, -- GitLab