From cc5e8aa703266c64213032bfab5b1e12e5b09273 Mon Sep 17 00:00:00 2001 From: pcain <pcain@usgs.gov> Date: Mon, 23 Aug 2021 15:14:11 +0000 Subject: [PATCH] _set_metadata as placeholder is TSFactory --- geomagio/DerivedTimeseriesFactory.py | 8 ++++++++ geomagio/TimeseriesFactory.py | 12 +---------- geomagio/edge/EdgeFactory.py | 30 +++++++++++++++++++++++++--- geomagio/edge/MiniSeedFactory.py | 30 +++++++++++++++++++++++++--- 4 files changed, 63 insertions(+), 17 deletions(-) diff --git a/geomagio/DerivedTimeseriesFactory.py b/geomagio/DerivedTimeseriesFactory.py index 01d7a5c44..c2a4fca2b 100644 --- a/geomagio/DerivedTimeseriesFactory.py +++ b/geomagio/DerivedTimeseriesFactory.py @@ -63,6 +63,14 @@ class DerivedTimeseriesFactory(TimeseriesFactory): data_type=type, interval=interval, ) + for channel in channels: + self.factory._set_metadata( + stream=timeseries.select(channel=channel), + observatory=observatory, + channel=channel, + type=type, + interval=interval, + ) # file-based factories return all channels found in file timeseries = Stream([t for t in timeseries if t.stats.channel in channels]) return timeseries diff --git a/geomagio/TimeseriesFactory.py b/geomagio/TimeseriesFactory.py index 21fd3b37a..fe4e63cb4 100644 --- a/geomagio/TimeseriesFactory.py +++ b/geomagio/TimeseriesFactory.py @@ -320,13 +320,6 @@ class TimeseriesFactory(object): network=network, location=location, ) - self._set_metadata( - stream=[trace], - observatory=observatory, - channel=channel, - type=data_type, - interval=interval, - ) return trace def _get_file_from_url(self, url): @@ -558,7 +551,4 @@ class TimeseriesFactory(object): interval interval length {minute, second} """ - for trace in stream: - self.observatoryMetadata.set_metadata( - trace.stats, observatory, channel, type, interval - ) + return stream diff --git a/geomagio/edge/EdgeFactory.py b/geomagio/edge/EdgeFactory.py index e02b68982..43ad19524 100644 --- a/geomagio/edge/EdgeFactory.py +++ b/geomagio/edge/EdgeFactory.py @@ -9,7 +9,6 @@ to take advantage of it's newer realtime abilities. Edge is the USGS earthquake hazard centers replacement for earthworm. """ from __future__ import absolute_import -from typing import Optional import sys import numpy @@ -23,7 +22,7 @@ from ..TimeseriesFactory import TimeseriesFactory from ..TimeseriesFactoryException import TimeseriesFactoryException from ..ObservatoryMetadata import ObservatoryMetadata from .RawInputClient import RawInputClient -from .LegacySNCL import LegacySNCL, get_location +from .LegacySNCL import LegacySNCL class EdgeFactory(TimeseriesFactory): @@ -347,7 +346,6 @@ class EdgeFactory(TimeseriesFactory): for trace in data: trace.data = trace.data.astype("i4") data.merge() - self._set_metadata(data, observatory, channel, type, interval) if data.count() == 0 and add_empty_channels: data += self._get_empty_trace( starttime=starttime, @@ -359,6 +357,7 @@ class EdgeFactory(TimeseriesFactory): network=sncl.network, location=sncl.location, ) + self._set_metadata(data, observatory, channel, type, interval) return data def _post_process(self, timeseries, starttime, endtime, channels): @@ -468,3 +467,28 @@ class EdgeFactory(TimeseriesFactory): if self.forceout: ric.forceout() ric.close() + + def _set_metadata( + self, + stream: obspy.core.Trace, + observatory: str, + channel: str, + type: str, + interval: str, + ): + """set metadata for a given stream/channel + Parameters + ---------- + observatory + observatory code + channel + edge channel code {MVH, MVE, MVD, ...} + type + data type {definitive, quasi-definitive, variation} + interval + interval length {minute, second} + """ + for trace in stream: + self.observatoryMetadata.set_metadata( + trace.stats, observatory, channel, type, interval + ) diff --git a/geomagio/edge/MiniSeedFactory.py b/geomagio/edge/MiniSeedFactory.py index 1b0684373..7208e36e1 100644 --- a/geomagio/edge/MiniSeedFactory.py +++ b/geomagio/edge/MiniSeedFactory.py @@ -11,7 +11,6 @@ Edge is the USGS earthquake hazard centers replacement for earthworm. from __future__ import absolute_import import sys -from typing import Optional import numpy import numpy.ma @@ -24,7 +23,7 @@ from ..TimeseriesFactory import TimeseriesFactory from ..TimeseriesFactoryException import TimeseriesFactoryException from ..ObservatoryMetadata import ObservatoryMetadata from .MiniSeedInputClient import MiniSeedInputClient -from .SNCL import SNCL, get_location +from .SNCL import SNCL class MiniSeedFactory(TimeseriesFactory): @@ -353,7 +352,6 @@ class MiniSeedFactory(TimeseriesFactory): sncl.network, sncl.station, sncl.location, sncl.channel, starttime, endtime ) data.merge() - self._set_metadata(data, observatory, channel, type, interval) if data.count() == 0 and add_empty_channels: data += self._get_empty_trace( starttime=starttime, @@ -365,6 +363,7 @@ class MiniSeedFactory(TimeseriesFactory): network=sncl.network, location=sncl.location, ) + self._set_metadata(data, observatory, channel, type, interval) return data def _convert_timeseries( @@ -500,3 +499,28 @@ class MiniSeedFactory(TimeseriesFactory): trace.stats.channel = sncl.channel # finally, send to edge self.write_client.send(to_write) + + def _set_metadata( + self, + stream: obspy.core.Trace, + observatory: str, + channel: str, + type: str, + interval: str, + ): + """set metadata for a given stream/channel + Parameters + ---------- + observatory + observatory code + channel + edge channel code {MVH, MVE, MVD, ...} + type + data type {definitive, quasi-definitive, variation} + interval + interval length {minute, second} + """ + for trace in stream: + self.observatoryMetadata.set_metadata( + trace.stats, observatory, channel, type, interval + ) -- GitLab