def tsa_group_by(self, datestring, tsa, subkeys, group_func): """ TODO: make this method static, inteval should be in tsa group given tsa by subkeys, and use group_func to aggregate data first all Timeseries will be aligned in time, to get proper points in timeline parameters: tsa <TimeseriesArrayLazy> subkey <tuple> could also be empty, to aggregate everything group_func <func> like lambda a,b : (a+b)/2 to get averages slotlength <int> interval in seconds to correct every timeseries to returns: <TimeseriesArrayLazy> """ # intermediated tsa tsa2 = TimeseriesArrayLazy(index_keys=subkeys, value_keys=tsa.value_keys, ts_key=tsa.ts_key, datatypes=tsa.datatypes) start_ts, _ = DataLogger.get_ts_for_datestring(datestring) ts_keyname = tsa.ts_key for data in tsa.export(): # align timestamp nearest_slot = round((data[ts_keyname] - start_ts) / self.__interval) data[ts_keyname] = int(start_ts + nearest_slot * self.__interval) #data[ts_keyname] = align_timestamp(data[ts_keyname]) tsa2.group_add(data, group_func) return tsa2