@@ -69,6 +69,20 @@ def validate(self, logger: ILogger) -> bool:
6969 """
7070 return self .settings .validate (self .name , logger )
7171
72+ def filter_years (
73+ self , time_dim_name : str , value_array : _xr .DataArray
74+ ) -> _xr .DataArray :
75+ """Filters the values for the specified start and end year
76+
77+ Args:
78+ value_array (DataArray): value to filter
79+ """
80+ start = str (self ._start_year ) if self ._start_year is not None else None
81+ end = str (self ._end_year ) if self ._end_year is not None else None
82+ slice_obj = slice (start , end )
83+ # filtered_array = value_array.sel({time_dim_name: slice_obj})
84+ return value_array .sel ({time_dim_name : slice_obj })
85+
7286 def execute (self , value_array : _xr .DataArray , logger : ILogger ) -> _xr .DataArray :
7387 """Aggregates the values for the specified start and end date
7488
@@ -99,11 +113,8 @@ def execute(self, value_array: _xr.DataArray, logger: ILogger) -> _xr.DataArray:
99113
100114 # perform aggregations in case of multi-year monthly average
101115 if TimeOperationType .MULTI_YEAR_MONTHLY_AVERAGE == settings .operation_type :
102- start = str (self ._start_year ) if self ._start_year is not None else None
103- end = str (self ._end_year ) if self ._end_year is not None else None
104- slice_obj = slice (start , end )
105- value_array = value_array .sel ({time_dim_name : slice_obj })
106- grouped_values = value_array .groupby (f"{ time_dim_name } .month" )
116+ filtered_values = self .filter_years (time_dim_name , value_array )
117+ grouped_values = filtered_values .groupby (f"{ time_dim_name } .month" )
107118 result = self ._perform_grouping_operation (
108119 grouped_values , settings .operation_type
109120 )
0 commit comments