def test_clone_at_timestamp(): md = ModelData(testdata) cloned_md = md.clone_at_timestamp(2.0) comparison_md = md.clone() comparison_md.data['elements']['load']['L1']['Pl'] = 111.1 assert cloned_md.data == comparison_md.data
def test_clone_at_time_index(): md = ModelData(testdata) cloned_md = md.clone_at_time_index(2) comparison_md = md.clone() comparison_md.data['elements']['load']['L1']['Pl'] = 111.1 del comparison_md.data['system']['time_keys'] assert cloned_md.data == comparison_md.data
def test_clone_at_time_indices(): md = ModelData(testdata) cloned_md = md.clone_at_time_keys([1, 2]) comparison_md = md.clone() comparison_md.data['elements']['load']['L1']['Pl'] = \ {'data_type':'time_series', 'values': [111.0, 111.1]} comparison_md.data['system']['time_keys'] = [1.0, 2.0] assert cloned_md.data == comparison_md.data
def _populate_with_forecastable_data(self, sim_type: str, start_time: datetime, num_time_periods: int, time_period_length_minutes: int, model: EgretModel) -> None: # pandas is inclusive on ranges end_time = start_time + timedelta( minutes=num_time_periods * time_period_length_minutes) - timedelta(seconds=1) price_data = self._historical_prices[sim_type][ start_time:end_time].to_list() if sim_type == 'day_ahead': step_ratio = 1 else: step_ratio = time_period_length_minutes // self._frequency_minutes if step_ratio == 1 and len( model.data['system']['time_keys']) == num_time_periods: p_cost = model.data['elements']['generator']['system']['p_cost'][ 'values'] for i, val in enumerate(price_data): p_cost[i] = val else: copy_from = model.clone() copy_from.data['elements']['generator']['system']['p_cost'][ 'values'] = price_data # if the data is at a higher frequency, it is more sensible # to average over the time periods for prices _recurse_average_at_ratio(copy_from.data, model.data, step_ratio) # Fill in times: time_labels = model.data['system']['time_keys'] delta = timedelta(minutes=time_period_length_minutes) for i in range(len(time_labels)): dt = start_time + i * delta time_labels[i] = dt.strftime('%Y-%m-%d %H:%M')
def test_clone(): md = ModelData(testdata) cmd = md.clone() assert md.data == cmd.data