From a1c770eacf91d67ac6e61726f6962d7422bd217f Mon Sep 17 00:00:00 2001
From: pcain-usgs <pcain@usgs.gov>
Date: Tue, 8 Sep 2020 17:47:16 -0600
Subject: [PATCH] Implement step timeshift method

---
 geomagio/algorithm/FilterAlgorithm.py | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/geomagio/algorithm/FilterAlgorithm.py b/geomagio/algorithm/FilterAlgorithm.py
index e6c9269d8..ba78a759b 100644
--- a/geomagio/algorithm/FilterAlgorithm.py
+++ b/geomagio/algorithm/FilterAlgorithm.py
@@ -43,6 +43,12 @@ STEPS = [
 ]
 
 
+def get_step_time_shift(step):
+    input_sample_period = step["input_sample_period"]
+    numtaps = len(step["window"])
+    return input_sample_period * ((numtaps - 1) / 2)
+
+
 class FilterAlgorithm(Algorithm):
     """
     Filter Algorithm that filters and downsamples data
@@ -226,13 +232,13 @@ class FilterAlgorithm(Algorithm):
         window = window / sum(window)
         # first output timestamp is in the center of the filter window for firfilters
         # center output timestamp is in the center of the filter window for averages
-        filter_time_shift = input_sample_period * ((numtaps - 1) / 2)
+        shift = get_step_time_shift(step)
         out = Stream()
         for trace in stream:
             # data to filter
             data = trace.data
             starttime, data = self.check_misalignment(
-                step, data, trace.stats.starttime, filter_time_shift
+                step, data, trace.stats.starttime, shift
             )
             if len(data) < numtaps:
                 continue
@@ -336,7 +342,7 @@ class FilterAlgorithm(Algorithm):
                 end = (start + intervals) - step["input_sample_period"]
                 return (start, end)
 
-            shift = len(step["window"]) // 2
+            shift = get_step_time_shift(step)
             shift_step = shift * step["input_sample_period"]
             start = start - shift_step
             end = end + shift_step
-- 
GitLab