From 1b649dd66a8b91f37988c8c97e6fe1de3a98aea6 Mon Sep 17 00:00:00 2001 From: Luke Nguyen Date: Tue, 15 Sep 2020 11:52:16 -0700 Subject: [PATCH] Add window default vals, change find-start min_period parameter --- sigmet/au3_functions.py | 4 +--- sigmet/sigmet.py | 8 ++++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/sigmet/au3_functions.py b/sigmet/au3_functions.py index 646e54a..fcd7edf 100644 --- a/sigmet/au3_functions.py +++ b/sigmet/au3_functions.py @@ -78,10 +78,8 @@ def find_start(series, user_start, user_end, ma_window=6): assert(ma_window > 0, "Moving average window cannot be less than 1") # filter series to window between start and end date, smooth moving average # NOTE: we inclusively filter with user_start b/c when we run the differencing it will no longer be part of the series - filtered_series = series.rolling(ma_window).mean().loc[( + filtered_series = series.rolling(ma_window, min_periods=1).mean().loc[( series.index >= user_start) & (series.index < user_end)] - if filtered_series.hasnans: - raise ValueError("Moving average value too large for search window. Decrease the moving_average value or increase the size of the search window.") # special case if monotonic decreasing, want to check for largest first derivative if filtered_series.is_monotonic_decreasing: diff --git a/sigmet/sigmet.py b/sigmet/sigmet.py index a51adba..9788c90 100644 --- a/sigmet/sigmet.py +++ b/sigmet/sigmet.py @@ -11,7 +11,7 @@ def __init__(self, data): # self.end_point = end_point self.data = data - def fit(self, window_start, window_end, sarimax_params=(5, 1, 1), standardize=False, moving_average=1, force_start=False, recovery_threshold=0.9): + def fit(self, window_start=None, window_end=None, sarimax_params=(5, 1, 1), standardize=False, moving_average=1, force_start=False, recovery_threshold=0.9): """ Fits the model and returns a score representing the magnitude of the largest negative shock in the window. @@ -47,7 +47,11 @@ def fit(self, window_start, window_end, sarimax_params=(5, 1, 1), standardize=Fa """ srs = self.data.copy(deep=True) - + + if window_start == None: + window_start = self.data.index[0] + if window_end == None: + window_end = self.data.index[-1] if standardize == True: srs = standardize(srs)