From 94ebbcb3b32033f3fb4f599ebc6f5866f8ce11f2 Mon Sep 17 00:00:00 2001
From: pcain-usgs <pcain@usgs.gov>
Date: Mon, 23 Nov 2020 13:00:02 -0700
Subject: [PATCH] Implement updating for legacy data

---
 geomagio/processing/update_legacy.py | 74 ++++++++++++++++++++++++++++
 1 file changed, 74 insertions(+)
 create mode 100644 geomagio/processing/update_legacy.py

diff --git a/geomagio/processing/update_legacy.py b/geomagio/processing/update_legacy.py
new file mode 100644
index 000000000..4b483cec0
--- /dev/null
+++ b/geomagio/processing/update_legacy.py
@@ -0,0 +1,74 @@
+import os
+
+from .. import Controller
+from ..edge import EdgeFactory
+from ..algorithm import FilterAlgorithm
+from ..TimeseriesUtility import (
+    get_delta_from_interval,
+    get_previous_interval,
+    get_merged_gaps,
+    get_stream_gaps,
+)
+
+from datetime import datetime
+from obspy.core import UTCDateTime
+import typer
+
+
+def main():
+    typer.run(update_legacy)
+
+
+def update_legacy(
+    observatory: str,
+    interval: str,
+    input_channels: list,
+    output_channels: list = None,
+    realtime_interval: int = 86400,
+    edge_host: str = os.getenv("EDGE_HOST", "cwbpub.cr.usgs.gov "),
+    edge_port: int = os.getenv("EDGE_PORT", 2061),
+):
+
+    current_time = datetime.utcnow()
+    current_time_string = current_time.strftime("%Y-%m-%d")
+    endtime = UTCDateTime(current_time_string) - 1
+
+    starttime = endtime - realtime_interval
+
+    timeseries_factory = EdgeFactory(host=edge_host, port=edge_port, interval=interval)
+
+    output_timeseries = timeseries_factory.get_timeseries(
+        observatory=observatory,
+        starttime=starttime,
+        endtime=endtime,
+        channels=channels,
+        type="variation",
+    )
+
+    output_gaps = get_merged_gaps(get_stream_gaps(output_timeseries))
+
+    if len(output_gaps) == 0:
+        return
+
+    input_interval = get_previous_interval(interval)
+    input_delta = get_delta_from_interval(input_interval)
+    output_delta = get_delta_from_interval(interval)
+
+    controller = Controller(
+        algorithm=FilterAlgorithm(
+            input_sample_period=input_delta, output_sample_period=output_delta
+        ),
+        inputFactory=EdgeFactory(
+            host=edge_host, port=edge_port, interval=input_interval
+        ),
+        outputFactory=timeseries_factory,
+    )
+
+    for output_gap in output_gaps:
+        controller.run(
+            observatory=(observatory,),
+            starttime=output_gap[0],
+            endtime=output_gap[1],
+            input_channels=input_channels,
+            output_channels=output_channels,
+        )
-- 
GitLab