From 2e9dbf42eb300a3de0b9c74a89a0a921acd46366 Mon Sep 17 00:00:00 2001
From: pcain-usgs <pcain@usgs.gov>
Date: Tue, 28 Jan 2020 16:01:46 -0700
Subject: [PATCH] Input and output intervals set by get_delta_from_interval
 method

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

diff --git a/geomagio/algorithm/FilterAlgorithm.py b/geomagio/algorithm/FilterAlgorithm.py
index b59527e73..089e031a1 100644
--- a/geomagio/algorithm/FilterAlgorithm.py
+++ b/geomagio/algorithm/FilterAlgorithm.py
@@ -5,6 +5,7 @@ from numpy.lib import stride_tricks as npls
 import scipy.signal as sps
 from obspy.core import Stream, Stats
 import json
+from .. import TimeseriesUtility as tu
 
 
 class FilterAlgorithm(Algorithm):
@@ -31,8 +32,6 @@ class FilterAlgorithm(Algorithm):
         # Initialize filter to execute filtering step with custom coefficients
         if self.filtertype == 'custom':
             self.load_state()
-            self.decimation = int(self.output_sample_period /
-                    self.input_sample_period)
             self.numtaps = len(self.window)
         # initialize filter to execute cascading filtering steps
         else:
@@ -125,7 +124,7 @@ class FilterAlgorithm(Algorithm):
         if self.filtertype == 'custom':
             for trace in stream:
                 data = trace.data
-                step = self.decimation
+                step = int(output_sample_period / input_sample_period)
                 filtered = self.firfilter(data, self.window, step)
                 stats = Stats(trace.stats)
                 stats.starttime = trace.stats.starttime + \
@@ -141,7 +140,7 @@ class FilterAlgorithm(Algorithm):
 
         # set stop index to where the sampling period in steparr
         # equals the desired output sample period
-        stop_idx = np.argwhere(self.steparr == self.output_sample_period)[0][0]
+        stop_idx = np.argwhere(self.steparr == output_sample_period)[0][0]
         for trace in stream:
             # reinitialize input sample period
             input_sample_period = self.input_sample_period
@@ -311,7 +310,8 @@ class FilterAlgorithm(Algorithm):
         parser: ArgumentParser
             command line argument parser
         """
-        # input and output time intervals are managed by Controller
+        # input and output time intervals are managed
+        # by Controller and TimeriesUtility
 
         parser.add_argument('--filter-type',
                 help='Specify default filters or custom filter',
@@ -342,21 +342,7 @@ class FilterAlgorithm(Algorithm):
         self.volt_conv = arguments.volt_conversion
         self.bin_conv = arguments.bin_conversion
         self.coeff_filename = arguments.filter_coefficients
-
-        if arguments.input_interval in ['tenhertz']:
-            self.input_sample_period = 0.1
-        elif arguments.input_interval in ['second']:
-            self.input_sample_period = 1.0
-        elif arguments.input_interval in ['minute']:
-            self.input_sample_period = 60.0
-        elif arguments.input_interval in ['hour', 'hourly']:
-            self.input_sample_period = 3600.0
-
-        if arguments.output_interval in ['tenhertz']:
-            self.output_sample_period = 0.1
-        elif arguments.output_interval in ['second']:
-            self.output_sample_period = 1.0
-        elif arguments.output_interval in ['minute']:
-            self.output_sample_period = 60.0
-        elif arguments.output_interval in ['hour', 'hourly']:
-            self.output_sample_period = 3600.0
+        input_interval = arguments.input_interval
+        output_interval = arguments.output_interval
+        self.input_sample_period = tu.get_delta_from_interval(input_interval)
+        self.output_sample_period = tu.get_delta_from_interval(output_interval)
-- 
GitLab