From b3829a0f232ae8de885bc7e7bc19e3d9b29b5f06 Mon Sep 17 00:00:00 2001
From: pcain <pcain@usgs.gov>
Date: Tue, 24 Aug 2021 13:07:47 -0600
Subject: [PATCH] _set_metadata and _get_empty for derived factory

---
 geomagio/DerivedTimeseriesFactory.py | 46 ++++++++++++++++++++++++++--
 1 file changed, 43 insertions(+), 3 deletions(-)

diff --git a/geomagio/DerivedTimeseriesFactory.py b/geomagio/DerivedTimeseriesFactory.py
index c722bf31..648a33f9 100644
--- a/geomagio/DerivedTimeseriesFactory.py
+++ b/geomagio/DerivedTimeseriesFactory.py
@@ -1,6 +1,6 @@
 from typing import List, Optional
 
-from obspy import Stream, UTCDateTime
+from obspy import Stream, Trace, UTCDateTime
 
 from .algorithm import Algorithm, DeltaFAlgorithm, XYZAlgorithm
 from .TimeseriesFactory import TimeseriesFactory, TimeseriesUtility
@@ -55,7 +55,7 @@ class DerivedTimeseriesFactory(TimeseriesFactory):
         missing = get_missing(timeseries, channels)
         if missing and add_empty_channels:
             for channel in missing:
-                timeseries += self.factory._get_empty_trace(
+                timeseries += self._get_empty_trace(
                     starttime=starttime,
                     endtime=endtime,
                     observatory=observatory,
@@ -66,7 +66,7 @@ class DerivedTimeseriesFactory(TimeseriesFactory):
         # file-based factories return all channels found in file
         timeseries = Stream([t for t in timeseries if t.stats.channel in channels])
         for channel in channels:
-            self.factory._set_metadata(
+            self._set_metadata(
                 stream=timeseries.select(channel=channel),
                 observatory=observatory,
                 channel=channel,
@@ -160,6 +160,46 @@ class DerivedTimeseriesFactory(TimeseriesFactory):
                 )
         return Stream()
 
+    def _get_empty_trace(
+        self,
+        starttime: UTCDateTime,
+        endtime: UTCDateTime,
+        observatory: str,
+        channel: str,
+        data_type: str,
+        interval: str,
+        network: str = "NT",
+        location: str = "",
+    ) -> Trace:
+        """creates empty trace"""
+        return self.factory._get_empty_trace(
+            starttime,
+            endtime,
+            observatory,
+            channel,
+            data_type,
+            interval,
+            network=network,
+            location=location,
+        )
+
+    def _set_metadata(
+        self, stream: Stream, 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}
+        """
+        return self.factory._set_metadata(stream, observatory, channel, type, interval)
+
 
 def get_missing(input: Stream, desired: List[str]) -> List[str]:
     """Return missing channels from input"""
-- 
GitLab