openstef 3.4.56__py3-none-any.whl → 4.0.0a3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- openstef-4.0.0a3.dist-info/METADATA +177 -0
- openstef-4.0.0a3.dist-info/RECORD +4 -0
- {openstef-3.4.56.dist-info → openstef-4.0.0a3.dist-info}/WHEEL +1 -2
- openstef/__init__.py +0 -14
- openstef/__main__.py +0 -3
- openstef/app_settings.py +0 -19
- openstef/data/NL_terrestrial_radiation.csv +0 -25585
- openstef/data/NL_terrestrial_radiation.csv.license +0 -3
- openstef/data/dazls_model_3.4.24/dazls_stored_3.4.24_baseline_model.z +0 -0
- openstef/data/dazls_model_3.4.24/dazls_stored_3.4.24_baseline_model.z.license +0 -3
- openstef/data/dazls_model_3.4.24/dazls_stored_3.4.24_model_card.md +0 -18
- openstef/data/dazls_model_3.4.24/dazls_stored_3.4.24_model_card.md.license +0 -3
- openstef/data/dutch_holidays.csv +0 -1759
- openstef/data/dutch_holidays.csv.license +0 -3
- openstef/data/pv_single_coefs.csv +0 -601
- openstef/data/pv_single_coefs.csv.license +0 -3
- openstef/data_classes/__init__.py +0 -3
- openstef/data_classes/data_prep.py +0 -99
- openstef/data_classes/model_specifications.py +0 -30
- openstef/data_classes/prediction_job.py +0 -135
- openstef/data_classes/split_function.py +0 -97
- openstef/enums.py +0 -140
- openstef/exceptions.py +0 -74
- openstef/feature_engineering/__init__.py +0 -3
- openstef/feature_engineering/apply_features.py +0 -138
- openstef/feature_engineering/bidding_zone_to_country_mapping.py +0 -106
- openstef/feature_engineering/cyclic_features.py +0 -161
- openstef/feature_engineering/data_preparation.py +0 -152
- openstef/feature_engineering/feature_adder.py +0 -206
- openstef/feature_engineering/feature_applicator.py +0 -202
- openstef/feature_engineering/general.py +0 -141
- openstef/feature_engineering/holiday_features.py +0 -231
- openstef/feature_engineering/lag_features.py +0 -165
- openstef/feature_engineering/missing_values_transformer.py +0 -141
- openstef/feature_engineering/rolling_features.py +0 -58
- openstef/feature_engineering/weather_features.py +0 -492
- openstef/metrics/__init__.py +0 -3
- openstef/metrics/figure.py +0 -303
- openstef/metrics/metrics.py +0 -486
- openstef/metrics/reporter.py +0 -222
- openstef/model/__init__.py +0 -3
- openstef/model/basecase.py +0 -82
- openstef/model/confidence_interval_applicator.py +0 -242
- openstef/model/fallback.py +0 -77
- openstef/model/metamodels/__init__.py +0 -3
- openstef/model/metamodels/feature_clipper.py +0 -90
- openstef/model/metamodels/grouped_regressor.py +0 -222
- openstef/model/metamodels/missing_values_handler.py +0 -138
- openstef/model/model_creator.py +0 -214
- openstef/model/objective.py +0 -426
- openstef/model/objective_creator.py +0 -65
- openstef/model/regressors/__init__.py +0 -3
- openstef/model/regressors/arima.py +0 -197
- openstef/model/regressors/custom_regressor.py +0 -64
- openstef/model/regressors/dazls.py +0 -116
- openstef/model/regressors/flatliner.py +0 -95
- openstef/model/regressors/gblinear_quantile.py +0 -334
- openstef/model/regressors/lgbm.py +0 -29
- openstef/model/regressors/linear.py +0 -90
- openstef/model/regressors/linear_quantile.py +0 -305
- openstef/model/regressors/regressor.py +0 -114
- openstef/model/regressors/xgb.py +0 -52
- openstef/model/regressors/xgb_multioutput_quantile.py +0 -261
- openstef/model/regressors/xgb_quantile.py +0 -228
- openstef/model/serializer.py +0 -431
- openstef/model/standard_deviation_generator.py +0 -81
- openstef/model_selection/__init__.py +0 -3
- openstef/model_selection/model_selection.py +0 -311
- openstef/monitoring/__init__.py +0 -3
- openstef/monitoring/performance_meter.py +0 -92
- openstef/monitoring/teams.py +0 -203
- openstef/pipeline/__init__.py +0 -3
- openstef/pipeline/create_basecase_forecast.py +0 -133
- openstef/pipeline/create_component_forecast.py +0 -168
- openstef/pipeline/create_forecast.py +0 -171
- openstef/pipeline/optimize_hyperparameters.py +0 -317
- openstef/pipeline/train_create_forecast_backtest.py +0 -163
- openstef/pipeline/train_model.py +0 -561
- openstef/pipeline/utils.py +0 -52
- openstef/postprocessing/__init__.py +0 -3
- openstef/postprocessing/postprocessing.py +0 -275
- openstef/preprocessing/__init__.py +0 -3
- openstef/preprocessing/preprocessing.py +0 -42
- openstef/settings.py +0 -15
- openstef/tasks/__init__.py +0 -3
- openstef/tasks/calculate_kpi.py +0 -324
- openstef/tasks/create_basecase_forecast.py +0 -118
- openstef/tasks/create_components_forecast.py +0 -162
- openstef/tasks/create_forecast.py +0 -145
- openstef/tasks/create_solar_forecast.py +0 -420
- openstef/tasks/create_wind_forecast.py +0 -80
- openstef/tasks/optimize_hyperparameters.py +0 -135
- openstef/tasks/split_forecast.py +0 -273
- openstef/tasks/train_model.py +0 -224
- openstef/tasks/utils/__init__.py +0 -3
- openstef/tasks/utils/dependencies.py +0 -107
- openstef/tasks/utils/predictionjobloop.py +0 -243
- openstef/tasks/utils/taskcontext.py +0 -160
- openstef/validation/__init__.py +0 -3
- openstef/validation/validation.py +0 -322
- openstef-3.4.56.dist-info/METADATA +0 -154
- openstef-3.4.56.dist-info/RECORD +0 -102
- openstef-3.4.56.dist-info/top_level.txt +0 -1
- /openstef-3.4.56.dist-info/LICENSE → /openstef-4.0.0a3.dist-info/licenses/LICENSE.md +0 -0
|
@@ -1,322 +0,0 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: 2017-2023 Contributors to the OpenSTEF project <korte.termijn.prognoses@alliander.com> # noqa E501>
|
|
2
|
-
#
|
|
3
|
-
# SPDX-License-Identifier: MPL-2.0
|
|
4
|
-
import logging
|
|
5
|
-
import math
|
|
6
|
-
from datetime import datetime, timedelta
|
|
7
|
-
from typing import Union
|
|
8
|
-
|
|
9
|
-
import numpy as np
|
|
10
|
-
import pandas as pd
|
|
11
|
-
import structlog
|
|
12
|
-
|
|
13
|
-
from openstef.exceptions import InputDataOngoingZeroFlatlinerError
|
|
14
|
-
from openstef.model.regressors.regressor import OpenstfRegressor
|
|
15
|
-
from openstef.preprocessing.preprocessing import replace_repeated_values_with_nan
|
|
16
|
-
from openstef.settings import Settings
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
def validate(
|
|
20
|
-
pj_id: Union[int, str],
|
|
21
|
-
data: pd.DataFrame,
|
|
22
|
-
flatliner_threshold_minutes: Union[int, None],
|
|
23
|
-
resolution_minutes: int,
|
|
24
|
-
) -> pd.DataFrame:
|
|
25
|
-
"""Validate prediction job and timeseries data.
|
|
26
|
-
|
|
27
|
-
Steps:
|
|
28
|
-
1. Check if input dataframe has a datetime index.
|
|
29
|
-
1. Check if a zero flatliner pattern is ongoing (i.e. all recent measurements are zero).
|
|
30
|
-
2. Replace repeated values for longer than flatliner_threshold_minutes with NaN.
|
|
31
|
-
|
|
32
|
-
Args:
|
|
33
|
-
pj_id: ind/str, used to identify log statements
|
|
34
|
-
data: pd.DataFrame where the first column should be the target. index=datetimeIndex
|
|
35
|
-
flatliner_threshold_minutes: int indicating the number of minutes after which constant load is considered a flatline.
|
|
36
|
-
if None, the validation is effectively skipped
|
|
37
|
-
resolution_minutes: The forecasting resolution in minutes.
|
|
38
|
-
|
|
39
|
-
Returns:
|
|
40
|
-
Dataframe where repeated values are set to None
|
|
41
|
-
|
|
42
|
-
Raises:
|
|
43
|
-
InputDataOngoingZeroFlatlinerError: If all recent load measurements are zero.
|
|
44
|
-
|
|
45
|
-
"""
|
|
46
|
-
structlog.configure(
|
|
47
|
-
wrapper_class=structlog.make_filtering_bound_logger(
|
|
48
|
-
logging.getLevelName(Settings.log_level)
|
|
49
|
-
)
|
|
50
|
-
)
|
|
51
|
-
logger = structlog.get_logger(__name__)
|
|
52
|
-
|
|
53
|
-
if not isinstance(data.index, pd.DatetimeIndex):
|
|
54
|
-
raise ValueError("Input dataframe does not have a datetime index.")
|
|
55
|
-
|
|
56
|
-
if flatliner_threshold_minutes is None:
|
|
57
|
-
logger.info("Skipping validation of input data", pj_id=pj_id)
|
|
58
|
-
return data
|
|
59
|
-
|
|
60
|
-
zero_flatliner_ongoing = detect_ongoing_zero_flatliner(
|
|
61
|
-
load=data.iloc[:, 0], duration_threshold_minutes=flatliner_threshold_minutes
|
|
62
|
-
)
|
|
63
|
-
|
|
64
|
-
if zero_flatliner_ongoing:
|
|
65
|
-
raise InputDataOngoingZeroFlatlinerError(
|
|
66
|
-
"All recent load measurements are zero."
|
|
67
|
-
)
|
|
68
|
-
|
|
69
|
-
flatliner_threshold_repetitions = math.ceil(
|
|
70
|
-
flatliner_threshold_minutes / resolution_minutes
|
|
71
|
-
)
|
|
72
|
-
|
|
73
|
-
# Drop 'false' measurements. e.g. where load appears to be constant.
|
|
74
|
-
data = replace_repeated_values_with_nan(
|
|
75
|
-
data, threshold=flatliner_threshold_repetitions, column_name=data.columns[0]
|
|
76
|
-
)
|
|
77
|
-
num_repeated_values = len(data) - len(data.iloc[:, 0].dropna())
|
|
78
|
-
if num_repeated_values > 0:
|
|
79
|
-
frac_const_load_values = num_repeated_values / len(data.index)
|
|
80
|
-
|
|
81
|
-
logger.info(
|
|
82
|
-
f"Found {num_repeated_values} values of constant load (repeated values),"
|
|
83
|
-
" converted to NaN value.",
|
|
84
|
-
cleansing_step="repeated_values",
|
|
85
|
-
pj_id=pj_id,
|
|
86
|
-
num_values=num_repeated_values,
|
|
87
|
-
frac_values=frac_const_load_values,
|
|
88
|
-
)
|
|
89
|
-
|
|
90
|
-
return data
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
def drop_target_na(data: pd.DataFrame) -> pd.DataFrame:
|
|
94
|
-
structlog.configure(
|
|
95
|
-
wrapper_class=structlog.make_filtering_bound_logger(
|
|
96
|
-
logging.getLevelName(Settings.log_level)
|
|
97
|
-
)
|
|
98
|
-
)
|
|
99
|
-
logger = structlog.get_logger(__name__)
|
|
100
|
-
len_original = len(data)
|
|
101
|
-
# Remove where load is NA, NaN features are preserved
|
|
102
|
-
data = data.loc[np.isnan(data.iloc[:, 0]) != True, :] # noqa E712
|
|
103
|
-
num_removed_values = len_original - len(data)
|
|
104
|
-
if num_removed_values > 0:
|
|
105
|
-
logger.info(
|
|
106
|
-
f"Removed {num_removed_values} NaN values",
|
|
107
|
-
num_removed_values=num_removed_values,
|
|
108
|
-
)
|
|
109
|
-
|
|
110
|
-
return data
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
def is_data_sufficient(
|
|
114
|
-
data: pd.DataFrame,
|
|
115
|
-
completeness_threshold: float,
|
|
116
|
-
minimal_table_length: int,
|
|
117
|
-
model: OpenstfRegressor = None,
|
|
118
|
-
) -> bool:
|
|
119
|
-
"""Check if enough data is left after validation and cleaning to continue with model training.
|
|
120
|
-
|
|
121
|
-
Args:
|
|
122
|
-
data: pd.DataFrame() with cleaned input data.
|
|
123
|
-
model: model which contains all information regarding trained model
|
|
124
|
-
completeness_threshold: float with threshold for completeness:
|
|
125
|
-
1 for fully complete, 0 for anything could be missing.
|
|
126
|
-
minimal_table_length: int with minimal table length (in rows)
|
|
127
|
-
|
|
128
|
-
Returns:
|
|
129
|
-
True if amount of data is sufficient, False otherwise.
|
|
130
|
-
|
|
131
|
-
"""
|
|
132
|
-
if model is None:
|
|
133
|
-
weights = None # Remove horizon & load column
|
|
134
|
-
else:
|
|
135
|
-
weights = model.feature_importance_dataframe
|
|
136
|
-
|
|
137
|
-
structlog.configure(
|
|
138
|
-
wrapper_class=structlog.make_filtering_bound_logger(
|
|
139
|
-
logging.getLevelName(Settings.log_level)
|
|
140
|
-
)
|
|
141
|
-
)
|
|
142
|
-
logger = structlog.get_logger(__name__)
|
|
143
|
-
# Set output variable
|
|
144
|
-
is_sufficient = True
|
|
145
|
-
|
|
146
|
-
# Calculate completeness
|
|
147
|
-
completeness = calc_completeness_features(
|
|
148
|
-
data, weights, time_delayed=True, homogenise=False
|
|
149
|
-
)
|
|
150
|
-
table_length = data.shape[0]
|
|
151
|
-
|
|
152
|
-
# Check if completeness is up to the standards
|
|
153
|
-
if completeness < completeness_threshold:
|
|
154
|
-
logger.warning(
|
|
155
|
-
"Input data is not sufficient, completeness too low",
|
|
156
|
-
completeness=completeness,
|
|
157
|
-
completeness_threshold=completeness_threshold,
|
|
158
|
-
)
|
|
159
|
-
is_sufficient = False
|
|
160
|
-
|
|
161
|
-
# Check if absolute amount of rows is sufficient
|
|
162
|
-
if table_length < minimal_table_length:
|
|
163
|
-
logger.warning(
|
|
164
|
-
"Input data is not sufficient, table length too short",
|
|
165
|
-
table_length=table_length,
|
|
166
|
-
table_length_threshold=minimal_table_length,
|
|
167
|
-
)
|
|
168
|
-
is_sufficient = False
|
|
169
|
-
|
|
170
|
-
return is_sufficient
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
def calc_completeness_features(
|
|
174
|
-
df: pd.DataFrame,
|
|
175
|
-
weights: pd.DataFrame,
|
|
176
|
-
time_delayed: bool = False,
|
|
177
|
-
homogenise: bool = True,
|
|
178
|
-
) -> float:
|
|
179
|
-
"""Calculate the (weighted) completeness of a dataframe.
|
|
180
|
-
|
|
181
|
-
NOTE: NA values count as incomplete
|
|
182
|
-
|
|
183
|
-
Args:
|
|
184
|
-
df: Dataframe with a datetimeIndex index
|
|
185
|
-
weights: Array-compatible with size equal to columns of df
|
|
186
|
-
(excl. load&horizon), used to weight the completeness of each column
|
|
187
|
-
time_delayed: Should there be a correction for T-x columns
|
|
188
|
-
homogenise: Should the index be resampled to median time delta -
|
|
189
|
-
only available for DatetimeIndex
|
|
190
|
-
|
|
191
|
-
Returns:
|
|
192
|
-
Fraction of completeness
|
|
193
|
-
|
|
194
|
-
"""
|
|
195
|
-
df_copy = df.copy(
|
|
196
|
-
deep=True
|
|
197
|
-
) # Make deep copy to maintain original dataframe in pipeline
|
|
198
|
-
|
|
199
|
-
# Remove load and horizon from data_with_features dataframe to make sure columns are equal
|
|
200
|
-
if "load" in df_copy:
|
|
201
|
-
df_copy.drop("load", inplace=True, axis=1)
|
|
202
|
-
if "horizon" in df_copy:
|
|
203
|
-
df_copy.drop("horizon", inplace=True, axis=1)
|
|
204
|
-
|
|
205
|
-
if weights is None:
|
|
206
|
-
weights = np.array([1] * ((len(df_copy.columns))))
|
|
207
|
-
|
|
208
|
-
length_weights = len(weights)
|
|
209
|
-
length_features = len(df_copy.columns)
|
|
210
|
-
|
|
211
|
-
# Returns the list
|
|
212
|
-
if type(weights) != np.ndarray:
|
|
213
|
-
list_features = weights.index.tolist()
|
|
214
|
-
df_copy = df_copy[list_features] # Reorder the df to match weights index (list)
|
|
215
|
-
weights = weights.weight
|
|
216
|
-
|
|
217
|
-
if length_weights != length_features:
|
|
218
|
-
raise ValueError(
|
|
219
|
-
"Input data is not sufficient, number of features used in model is unequal to amount of columns in data"
|
|
220
|
-
)
|
|
221
|
-
completeness_per_column_dataframe = calc_completeness_dataframe(
|
|
222
|
-
df_copy, time_delayed, homogenise
|
|
223
|
-
)
|
|
224
|
-
|
|
225
|
-
# scale to weights and normalize
|
|
226
|
-
completeness = (completeness_per_column_dataframe * weights).sum() / weights.sum()
|
|
227
|
-
|
|
228
|
-
return completeness
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
def detect_ongoing_zero_flatliner(
|
|
232
|
-
load: pd.Series,
|
|
233
|
-
duration_threshold_minutes: int,
|
|
234
|
-
) -> bool:
|
|
235
|
-
"""Detects if the latest measurements follow a zero flatliner pattern.
|
|
236
|
-
|
|
237
|
-
Args:
|
|
238
|
-
load (pd.Series): A timeseries of measured load with a datetime index.
|
|
239
|
-
duration_threshold_minutes (int): A zero flatliner is only detected if it exceeds the threshold duration.
|
|
240
|
-
|
|
241
|
-
Returns:
|
|
242
|
-
bool: Indicating whether or not there is a zero flatliner ongoing for the given load.
|
|
243
|
-
|
|
244
|
-
"""
|
|
245
|
-
# remove all timestamps in the future
|
|
246
|
-
load = load[load.index.tz_localize(None) <= datetime.utcnow()]
|
|
247
|
-
latest_measurement_time = load.dropna().index.max()
|
|
248
|
-
latest_measurements = load[
|
|
249
|
-
latest_measurement_time - timedelta(minutes=duration_threshold_minutes) :
|
|
250
|
-
].dropna()
|
|
251
|
-
|
|
252
|
-
return (latest_measurements == 0).all() & (not latest_measurements.empty)
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
def calc_completeness_dataframe(
|
|
256
|
-
df: pd.DataFrame,
|
|
257
|
-
time_delayed: bool = False,
|
|
258
|
-
homogenise: bool = True,
|
|
259
|
-
) -> pd.DataFrame:
|
|
260
|
-
"""Calculate the completeness of each column in dataframe.
|
|
261
|
-
|
|
262
|
-
NOTE: NA values count as incomplete
|
|
263
|
-
|
|
264
|
-
Args:
|
|
265
|
-
df: Dataframe with a datetimeIndex index
|
|
266
|
-
time_delayed: Should there be a correction for T-x columns
|
|
267
|
-
homogenise: Should the index be resampled to median time delta -
|
|
268
|
-
only available for DatetimeIndex
|
|
269
|
-
|
|
270
|
-
Returns:
|
|
271
|
-
Dataframe with fraction of completeness per column
|
|
272
|
-
|
|
273
|
-
"""
|
|
274
|
-
structlog.configure(
|
|
275
|
-
wrapper_class=structlog.make_filtering_bound_logger(
|
|
276
|
-
logging.getLevelName(Settings.log_level)
|
|
277
|
-
)
|
|
278
|
-
)
|
|
279
|
-
logger = structlog.get_logger(__name__)
|
|
280
|
-
|
|
281
|
-
if homogenise and isinstance(df.index, pd.DatetimeIndex) and len(df) > 0:
|
|
282
|
-
median_timediff = int(
|
|
283
|
-
df.reset_index().iloc[:, 0].diff().median().total_seconds() / 60.0
|
|
284
|
-
)
|
|
285
|
-
df = df.resample("{:d}T".format(median_timediff)).mean()
|
|
286
|
-
|
|
287
|
-
if time_delayed is False:
|
|
288
|
-
# Calculate completeness
|
|
289
|
-
# Completeness per column
|
|
290
|
-
completeness_per_column_dataframe = df.count() / len(df)
|
|
291
|
-
|
|
292
|
-
# if timeDelayed is True, we correct that time-delayed columns
|
|
293
|
-
# also in the best case will have NA values. E.g. T-2d is not available
|
|
294
|
-
# for times ahead of more than 2 days
|
|
295
|
-
elif time_delayed:
|
|
296
|
-
# assume 15 minute forecast resolution
|
|
297
|
-
# timecols: {delay:number of points expected to be missing}
|
|
298
|
-
# number of points expected to be missing = numberOfPointsUpToTwoDaysAhead - numberOfPointsAvailable
|
|
299
|
-
timecols = {
|
|
300
|
-
x: len(df) - eval(x[2:].replace("min", "/60").replace("d", "*24.0")) / 0.25
|
|
301
|
-
for x in df.columns
|
|
302
|
-
if x[:2] == "T-"
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
non_na_count = df.count()
|
|
306
|
-
|
|
307
|
-
for col, value in timecols.items():
|
|
308
|
-
if non_na_count[col] > value:
|
|
309
|
-
logger.warning(
|
|
310
|
-
"The provided input data (features) contains more values than is to be expected from analysis",
|
|
311
|
-
feature=col,
|
|
312
|
-
number_non_na=non_na_count[col],
|
|
313
|
-
expected_numbers_timedelayed=value,
|
|
314
|
-
)
|
|
315
|
-
|
|
316
|
-
# Correct for day_ahead_electricity_price being only expected to be available up to 24h
|
|
317
|
-
if "day_ahead_electricity_price" in non_na_count.index:
|
|
318
|
-
non_na_count["day_ahead_electricity_price"] += max([len(df) - 96, 0])
|
|
319
|
-
|
|
320
|
-
completeness_per_column_dataframe = non_na_count / (len(df))
|
|
321
|
-
|
|
322
|
-
return completeness_per_column_dataframe
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.2
|
|
2
|
-
Name: openstef
|
|
3
|
-
Version: 3.4.56
|
|
4
|
-
Summary: Open short term energy forecaster
|
|
5
|
-
Home-page: https://github.com/OpenSTEF/openstef
|
|
6
|
-
Author: Alliander N.V
|
|
7
|
-
Author-email: korte.termijn.prognoses@alliander.com
|
|
8
|
-
License: MPL-2.0
|
|
9
|
-
Keywords: energy,forecasting,machinelearning
|
|
10
|
-
Classifier: Development Status :: 5 - Production/Stable
|
|
11
|
-
Classifier: Intended Audience :: Developers
|
|
12
|
-
Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
-
Requires-Python: >=3.11.0
|
|
15
|
-
Description-Content-Type: text/markdown
|
|
16
|
-
License-File: LICENSE
|
|
17
|
-
Requires-Dist: holidays==0.21
|
|
18
|
-
Requires-Dist: joblib==1.3.2
|
|
19
|
-
Requires-Dist: lightgbm~=3.3
|
|
20
|
-
Requires-Dist: matplotlib~=3.7
|
|
21
|
-
Requires-Dist: mlflow~=2.3
|
|
22
|
-
Requires-Dist: networkx~=3.1
|
|
23
|
-
Requires-Dist: numpy<3,>=2
|
|
24
|
-
Requires-Dist: optuna~=3.1
|
|
25
|
-
Requires-Dist: optuna-integration~=3.6
|
|
26
|
-
Requires-Dist: pandas~=2.2.0
|
|
27
|
-
Requires-Dist: plotly~=5.18
|
|
28
|
-
Requires-Dist: pvlib==0.10.5
|
|
29
|
-
Requires-Dist: pydantic~=2.4
|
|
30
|
-
Requires-Dist: pydantic-settings~=2.3
|
|
31
|
-
Requires-Dist: pymsteams~=0.2.2
|
|
32
|
-
Requires-Dist: scikit-learn<1.6,>=1.3
|
|
33
|
-
Requires-Dist: scipy~=1.10
|
|
34
|
-
Requires-Dist: statsmodels<1.0.0,>=0.13.5
|
|
35
|
-
Requires-Dist: structlog<25,>=23.1
|
|
36
|
-
Requires-Dist: xgboost~=2.0
|
|
37
|
-
Dynamic: author
|
|
38
|
-
Dynamic: author-email
|
|
39
|
-
Dynamic: classifier
|
|
40
|
-
Dynamic: description
|
|
41
|
-
Dynamic: description-content-type
|
|
42
|
-
Dynamic: home-page
|
|
43
|
-
Dynamic: keywords
|
|
44
|
-
Dynamic: license
|
|
45
|
-
Dynamic: requires-dist
|
|
46
|
-
Dynamic: requires-python
|
|
47
|
-
Dynamic: summary
|
|
48
|
-
|
|
49
|
-
<!--
|
|
50
|
-
SPDX-FileCopyrightText: 2017-2023 Contributors to the OpenSTEF project <korte.termijn.prognoses@alliander.com>
|
|
51
|
-
|
|
52
|
-
SPDX-License-Identifier: MPL-2.0
|
|
53
|
-
-->
|
|
54
|
-
|
|
55
|
-
# OpenSTEF
|
|
56
|
-
<!-- Badges -->
|
|
57
|
-
[](https://pepy.tech/project/openstef)
|
|
58
|
-
[](https://pepy.tech/project/openstef)
|
|
59
|
-
[](https://bestpractices.coreinfrastructure.org/projects/5585)
|
|
60
|
-
<!-- SonarCloud badges -->
|
|
61
|
-
[](https://sonarcloud.io/dashboard?id=OpenSTEF_openstef)
|
|
62
|
-
[](https://sonarcloud.io/dashboard?id=OpenSTEF_openstef)
|
|
63
|
-
[](https://sonarcloud.io/dashboard?id=OpenSTEF_openstef)
|
|
64
|
-
[](https://sonarcloud.io/dashboard?id=OpenSTEF_openstef)
|
|
65
|
-
[](https://sonarcloud.io/dashboard?id=OpenSTEF_openstef)
|
|
66
|
-
[](https://sonarcloud.io/dashboard?id=OpenSTEF_openstef)
|
|
67
|
-
[](https://sonarcloud.io/dashboard?id=OpenSTEF_openstef)
|
|
68
|
-
[](https://sonarcloud.io/dashboard?id=OpenSTEF_openstef)
|
|
69
|
-
[](https://sonarcloud.io/dashboard?id=OpenSTEF_openstef)
|
|
70
|
-
|
|
71
|
-
OpenSTEF is a Python package designed for generating short-term forecasts in the energy sector. The repository includes all the essential components required for machine learning pipelines that facilitate the forecasting process. To utilize the package, users are required to furnish their own data storage and retrieval interface.
|
|
72
|
-
|
|
73
|
-
# Table of contents
|
|
74
|
-
- [OpenSTEF](#openstef)
|
|
75
|
-
- [Table of contents](#table-of-contents)
|
|
76
|
-
- [External information sources](#external-information-sources)
|
|
77
|
-
- [Installation](#installation)
|
|
78
|
-
- [Usage](#usage)
|
|
79
|
-
- [Example notebooks](#example-notebooks)
|
|
80
|
-
- [Reference Implementation](#reference-implementation)
|
|
81
|
-
- [Database connector for OpenSTEF](#database-connector-for-openstef)
|
|
82
|
-
- [License](license)
|
|
83
|
-
- [Contributing](#contributing)
|
|
84
|
-
- [Contact](#contact)
|
|
85
|
-
|
|
86
|
-
# External information sources
|
|
87
|
-
- [Documentation website](https://openstef.github.io/openstef/index.html);
|
|
88
|
-
- [Python package](https://pypi.org/project/openstef/);
|
|
89
|
-
- [Linux Foundation project page](https://www.lfenergy.org/projects/openstef/);
|
|
90
|
-
- [Documentation on dashboard](https://raw.githack.com/OpenSTEF/.github/main/profile/html/openstef_dashboard_doc.html);
|
|
91
|
-
- [Video about OpenSTEF](https://www.lfenergy.org/forecasting-to-create-a-more-resilient-optimized-grid/);
|
|
92
|
-
|
|
93
|
-
# Installation
|
|
94
|
-
|
|
95
|
-
## Install the openstef package
|
|
96
|
-
|
|
97
|
-
```shell
|
|
98
|
-
pip install openstef
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
### Remark regarding installation within a **conda environment on Windows**
|
|
102
|
-
|
|
103
|
-
A version of the pywin32 package will be installed as a secondary dependency along with the installation of the openstef package. Since conda relies on an old version of pywin32, the new installation can break conda's functionality. The following command can solve this issue:
|
|
104
|
-
```shell
|
|
105
|
-
pip install pywin32==300
|
|
106
|
-
```
|
|
107
|
-
For more information on this issue see the [readme of pywin32](https://github.com/mhammond/pywin32#installing-via-pip) or [this Github issue](https://github.com/mhammond/pywin32/issues/1865#issue-1212752696).
|
|
108
|
-
|
|
109
|
-
## Remark regarding installation on Apple Silicon
|
|
110
|
-
|
|
111
|
-
If you want to install the `openstef` package on Apple Silicon (Mac with M1-chip or newer), you can encounter issues with the dependencies, such as `xgboost`. Solution:
|
|
112
|
-
|
|
113
|
-
1. Run `brew install libomp` (if you haven’t installed Homebrew: [follow instructions here](https://brew.sh/))
|
|
114
|
-
2. If your interpreter can not find the `libomp` installation in `/usr/local/bin`, it is probably in `/opt/brew/Cellar`. Run:
|
|
115
|
-
```sh
|
|
116
|
-
mkdir -p /usr/local/opt/libomp/
|
|
117
|
-
ln -s /opt/brew/Cellar/libomp/{your_version}/lib /usr/local/opt/libomp/lib
|
|
118
|
-
```
|
|
119
|
-
3. Uninstall `xgboost` with `pip` (`pip uninstall xgboost`) and install with `conda-forge` (`conda install -c conda-forge xgboost`)
|
|
120
|
-
4. If you encounter similar issues with `lightgbm`: uninstall `lightgbm` with `pip` (`pip uninstall lightgbm`) and install later version with `conda-forge` (`conda install -c conda-forge 'lightgbm>=4.2.0'`)
|
|
121
|
-
|
|
122
|
-
# Usage
|
|
123
|
-
|
|
124
|
-
## Example notebooks
|
|
125
|
-
To help you get started, a set of fundamental example notebooks has been created. You can access these offline examples [here](https://github.com/OpenSTEF/openstef-offline-example).
|
|
126
|
-
|
|
127
|
-
## Reference Implementation
|
|
128
|
-
A complete implementation including databases, user interface, example data, etc. is available at: https://github.com/OpenSTEF/openstef-reference
|
|
129
|
-
|
|
130
|
-

|
|
131
|
-
Screenshot of the operational dashboard showing the key functionality of OpenSTEF.
|
|
132
|
-
Dashboard documentation can be found [here](https://raw.githack.com/OpenSTEF/.github/main/profile/html/openstef_dashboard_doc.html).
|
|
133
|
-
|
|
134
|
-
To run a task use:
|
|
135
|
-
|
|
136
|
-
```shell
|
|
137
|
-
python -m openstef task <task_name>
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
## Database connector for openstef
|
|
141
|
-
This repository provides an interface to OpenSTEF (reference) databases. The repository can be found [here](https://github.com/OpenSTEF/openstef-dbc).
|
|
142
|
-
|
|
143
|
-
# License
|
|
144
|
-
This project is licensed under the Mozilla Public License, version 2.0 - see LICENSE for details.
|
|
145
|
-
|
|
146
|
-
## Licenses third-party libraries
|
|
147
|
-
This project includes third-party libraries, which are licensed under their own respective Open-Source licenses. SPDX-License-Identifier headers are used to show which license is applicable. The concerning license files can be found in the LICENSES directory.
|
|
148
|
-
|
|
149
|
-
# Contributing
|
|
150
|
-
Please read [CODE_OF_CONDUCT.md](https://github.com/OpenSTEF/.github/blob/main/CODE_OF_CONDUCT.md), [CONTRIBUTING.md](https://github.com/OpenSTEF/.github/blob/main/CONTRIBUTING.md) and [PROJECT_GOVERNANCE.md](https://github.com/OpenSTEF/.github/blob/main/PROJECT_GOVERNANCE.md) for details on the process for submitting pull requests to us.
|
|
151
|
-
|
|
152
|
-
# Contact
|
|
153
|
-
Please read [SUPPORT.md](https://github.com/OpenSTEF/.github/blob/main/SUPPORT.md) for how to connect and get into contact with the OpenSTEF project
|
|
154
|
-
|
openstef-3.4.56.dist-info/RECORD
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
openstef/__init__.py,sha256=93UM6m0LLQhO69-mSqLuUy73jgs4W7Iuxfo3Lm8c98g,419
|
|
2
|
-
openstef/__main__.py,sha256=bIyGTSA4V5VoOLTwdaiJJAnozmpSzvQooVYlsf8H4eU,163
|
|
3
|
-
openstef/app_settings.py,sha256=EJTDtimctFQQ-3f7ZcOQaRYohpZk3JD6aZBWPFYM2_A,582
|
|
4
|
-
openstef/enums.py,sha256=FrP0m_Tk0kV7gSZ2hTY_8iD45KIKnexHrjNufhpKXpE,2829
|
|
5
|
-
openstef/exceptions.py,sha256=U4u2LTcdT6cmzpipT2Jh7kq9nCjT_-6gntn8yjuhGU0,1993
|
|
6
|
-
openstef/settings.py,sha256=nSgkBqFxuqB3w7Rwo60i8j37c5ngDbt6vpjHS6QtJXQ,354
|
|
7
|
-
openstef/data/NL_terrestrial_radiation.csv,sha256=A4kbW56GDzWi4tWUwY2C-4PiOvcKJCwkWQQtdg4ekPE,820246
|
|
8
|
-
openstef/data/NL_terrestrial_radiation.csv.license,sha256=AxxHusqwIXU5RHl5ZMU65LyXmgtbj6QlcnFaOEN4kEE,145
|
|
9
|
-
openstef/data/dutch_holidays.csv,sha256=Cg8EYjXp1O0lcFOkIOmrS5HaOArrxZwOXsZ9pVkIcKI,49847
|
|
10
|
-
openstef/data/dutch_holidays.csv.license,sha256=AxxHusqwIXU5RHl5ZMU65LyXmgtbj6QlcnFaOEN4kEE,145
|
|
11
|
-
openstef/data/pv_single_coefs.csv,sha256=jadIEYdHvl1lnV_06X_FASkJZ6C3Hecs5xZnH1gPMvI,24779
|
|
12
|
-
openstef/data/pv_single_coefs.csv.license,sha256=AxxHusqwIXU5RHl5ZMU65LyXmgtbj6QlcnFaOEN4kEE,145
|
|
13
|
-
openstef/data/dazls_model_3.4.24/dazls_stored_3.4.24_baseline_model.z,sha256=2HEXuEvt5BMZMcDPiMfRiABgDQ698H_eM410XREIQK0,1293
|
|
14
|
-
openstef/data/dazls_model_3.4.24/dazls_stored_3.4.24_baseline_model.z.license,sha256=AxxHusqwIXU5RHl5ZMU65LyXmgtbj6QlcnFaOEN4kEE,145
|
|
15
|
-
openstef/data/dazls_model_3.4.24/dazls_stored_3.4.24_model_card.md,sha256=KJ8S8jg2k_aL1pCK_b3wOLMZqGdDALa4in73c4Am8gY,539
|
|
16
|
-
openstef/data/dazls_model_3.4.24/dazls_stored_3.4.24_model_card.md.license,sha256=AxxHusqwIXU5RHl5ZMU65LyXmgtbj6QlcnFaOEN4kEE,145
|
|
17
|
-
openstef/data_classes/__init__.py,sha256=bIyGTSA4V5VoOLTwdaiJJAnozmpSzvQooVYlsf8H4eU,163
|
|
18
|
-
openstef/data_classes/data_prep.py,sha256=gRSL7UiHvZis8m8z7VoTCZc0Ccffhef5_hmSyApnqK0,3417
|
|
19
|
-
openstef/data_classes/model_specifications.py,sha256=Uod1W3QzhRqVLb6zvXwxh9wRL3EHCzSvX0oDNd28cFk,1197
|
|
20
|
-
openstef/data_classes/prediction_job.py,sha256=OFGg6h0XQZOIkJEYr1EoT3LE2oV6YULaCCxhkaES4wA,5874
|
|
21
|
-
openstef/data_classes/split_function.py,sha256=ljQIQQu1t1Y_CVWGAy25jrM6wG9odIVVQVimrT1n-1s,3358
|
|
22
|
-
openstef/feature_engineering/__init__.py,sha256=bIyGTSA4V5VoOLTwdaiJJAnozmpSzvQooVYlsf8H4eU,163
|
|
23
|
-
openstef/feature_engineering/apply_features.py,sha256=9Yzg61Whd4n0osQBfrcW8cI0gaUiv7u8KnQIQPR40fY,5327
|
|
24
|
-
openstef/feature_engineering/bidding_zone_to_country_mapping.py,sha256=u9aabjFDImydkO6_cXiaQxBT4gb5zy0gGTg2EoIUO_Y,2106
|
|
25
|
-
openstef/feature_engineering/cyclic_features.py,sha256=0Z3wZeF_qrkmEcOq91gtdSMZucAq99kUoBuFDV0SHqk,5962
|
|
26
|
-
openstef/feature_engineering/data_preparation.py,sha256=htca9LBO3ZN1D-iX4vXf0UN1fw_rRO7y6N3AuYVMpfk,5628
|
|
27
|
-
openstef/feature_engineering/feature_adder.py,sha256=aSqDl_gUrB3H2TD3cNvU5JniY_KOb4u4a2A6J7zB2BQ,6835
|
|
28
|
-
openstef/feature_engineering/feature_applicator.py,sha256=bU1Pu5V1fxMCQCwh6HG66nmctBjrNa7gHUYqOqPmLTU,7501
|
|
29
|
-
openstef/feature_engineering/general.py,sha256=tgU4_1stag9jJmaQAfWCMhfBscznVuQvW5hPK_z9_9g,4438
|
|
30
|
-
openstef/feature_engineering/holiday_features.py,sha256=CbolIP5bfiQkqDct-9TbD828-lhC48bfeNQ2-VFnsJA,8274
|
|
31
|
-
openstef/feature_engineering/lag_features.py,sha256=Dr6qS8UhdgEHPZZSe-w6ibtjl_lcbcQohhqdZN9fqEU,5652
|
|
32
|
-
openstef/feature_engineering/missing_values_transformer.py,sha256=o_zCVEOCPn2tWzvlY44XZuDysV0TuxqeVYhilYU54YY,5010
|
|
33
|
-
openstef/feature_engineering/rolling_features.py,sha256=UW_zvUR0Ru6tt-0S1UybvKJEJ5t4NAc_lWkZDTFOHfU,1955
|
|
34
|
-
openstef/feature_engineering/weather_features.py,sha256=Lr9DItyHvJ2CpWQ1r6A83tJKtR2k_Wwn32FdFTGblO0,15750
|
|
35
|
-
openstef/metrics/__init__.py,sha256=bIyGTSA4V5VoOLTwdaiJJAnozmpSzvQooVYlsf8H4eU,163
|
|
36
|
-
openstef/metrics/figure.py,sha256=KDoezYem9wdS13kUx7M7FOy-4u88Sg3OX1DuhNT6kgQ,9751
|
|
37
|
-
openstef/metrics/metrics.py,sha256=BsVrKalhgs20YsVBGyYZI2Uzor2nTPKTBCLHFCogCH8,15475
|
|
38
|
-
openstef/metrics/reporter.py,sha256=w1Q6xWoYGmvnjwjXik-Gz7_gnb0lOeJMep-whEV5mNk,7897
|
|
39
|
-
openstef/model/__init__.py,sha256=bIyGTSA4V5VoOLTwdaiJJAnozmpSzvQooVYlsf8H4eU,163
|
|
40
|
-
openstef/model/basecase.py,sha256=caI6Q-8y0ymlxGK9Js_H3Vh0q6ruNHlGD5RG0_kE5M0,2878
|
|
41
|
-
openstef/model/confidence_interval_applicator.py,sha256=Bx0mm4zGKlqopMZ589cVyDN_k6jfuyqtV1FoViXxc2Y,9775
|
|
42
|
-
openstef/model/fallback.py,sha256=VV9ehgnoMZtWzqKk9H1t8wnERFh5CyC4TvDIuRP_ZDI,2861
|
|
43
|
-
openstef/model/model_creator.py,sha256=L84A4_HVYL7bRZY0D77j4c4kHRleVGCRXqZZkT9BZY0,6668
|
|
44
|
-
openstef/model/objective.py,sha256=qJdI6GAzv8l5Mxd8G7BIqQnfdJNM7aOlg9DMzMGjWqA,14558
|
|
45
|
-
openstef/model/objective_creator.py,sha256=jqMvdXiVRc9GmOvSijQY0zuyxS07-ezkVXclvoW98g4,2208
|
|
46
|
-
openstef/model/serializer.py,sha256=IUiiAWvoGVoWzmS-akI6LC7jHRY5Ln_vOCBZy1LnESY,17238
|
|
47
|
-
openstef/model/standard_deviation_generator.py,sha256=Od9bzXi2TLb1v8Nz-VhBMZHSopWH6ssaDe8gYLlqO1I,2911
|
|
48
|
-
openstef/model/metamodels/__init__.py,sha256=bIyGTSA4V5VoOLTwdaiJJAnozmpSzvQooVYlsf8H4eU,163
|
|
49
|
-
openstef/model/metamodels/feature_clipper.py,sha256=wDsf4k_2YuC6rrFlwE12LpgOdOwHHWuET2ZrJ_gr4yo,2861
|
|
50
|
-
openstef/model/metamodels/grouped_regressor.py,sha256=yMN_a6TnQSyFaqlB_6Nifq-ydpb5hs6w_b97IaBbHj4,8337
|
|
51
|
-
openstef/model/metamodels/missing_values_handler.py,sha256=veyvYZHhKvlYZxaUpxRQ7XoE033_3Lcg9LrbuKchlOk,5241
|
|
52
|
-
openstef/model/regressors/__init__.py,sha256=bIyGTSA4V5VoOLTwdaiJJAnozmpSzvQooVYlsf8H4eU,163
|
|
53
|
-
openstef/model/regressors/arima.py,sha256=wt7FVykjSvljpl7vjtliq61SiyjQ7KKtw8PF9x0xf04,7587
|
|
54
|
-
openstef/model/regressors/custom_regressor.py,sha256=Hsmxahc9nfSWD0aEZ6cm4pxW2noQ8B1SujS17_fmxcU,1768
|
|
55
|
-
openstef/model/regressors/dazls.py,sha256=Xt89yFHjkwpIUTkkhPmPZ74F8_tht_XV88INuP5GU2E,3994
|
|
56
|
-
openstef/model/regressors/flatliner.py,sha256=T9u-ukhqFcatQmlgUtBL_G-1b_wQzgdVRq0ac64GnjQ,2789
|
|
57
|
-
openstef/model/regressors/gblinear_quantile.py,sha256=DSRjL_kadBfDKrDEgrOfU1N60grTiAovtcBszBa41TI,11271
|
|
58
|
-
openstef/model/regressors/lgbm.py,sha256=zCdn1euEdSFxYJzH8XqQFFnb6R4JVUnmineKjX_Gy-g,800
|
|
59
|
-
openstef/model/regressors/linear.py,sha256=uOvZMLGZH_9nXfmS5honCMfyVeyGXP1Cza9A_BdXlVw,3665
|
|
60
|
-
openstef/model/regressors/linear_quantile.py,sha256=sI5cl6_W-hh13mg4Gf09LQ1caZmBy7COc8_5BBJxySQ,10534
|
|
61
|
-
openstef/model/regressors/regressor.py,sha256=uJcx59AyCPE9f_yPcAQ59h2ZS7eNsDpIHJrladKvHIw,3461
|
|
62
|
-
openstef/model/regressors/xgb.py,sha256=SH-UiYJtMbfmRBK6738dU0ZRfYfzNynnikwbxINCE7Q,1467
|
|
63
|
-
openstef/model/regressors/xgb_multioutput_quantile.py,sha256=xWzA7tymC_o-F1OS3I7vUKf9zP6RR1ZglEeY4NAgjU0,9146
|
|
64
|
-
openstef/model/regressors/xgb_quantile.py,sha256=PzKIxqN_CnEPFmzXACNuzLSmZSHbooTuiJ5ckJ9vh_E,7805
|
|
65
|
-
openstef/model_selection/__init__.py,sha256=bIyGTSA4V5VoOLTwdaiJJAnozmpSzvQooVYlsf8H4eU,163
|
|
66
|
-
openstef/model_selection/model_selection.py,sha256=3xTiAkP5KecB2jFOvHa8-AkVqFbwx0j_d8IMUTbkKBE,11181
|
|
67
|
-
openstef/monitoring/__init__.py,sha256=bIyGTSA4V5VoOLTwdaiJJAnozmpSzvQooVYlsf8H4eU,163
|
|
68
|
-
openstef/monitoring/performance_meter.py,sha256=6aCGjJFXFq-7qwaJyBkF3MLqjgVK6FMFVcO-bcLLUb4,2803
|
|
69
|
-
openstef/monitoring/teams.py,sha256=A-tlZeuAgolxFHjgT3gGjraxzW2dmuB-UAOz4xgYNIQ,6668
|
|
70
|
-
openstef/pipeline/__init__.py,sha256=bIyGTSA4V5VoOLTwdaiJJAnozmpSzvQooVYlsf8H4eU,163
|
|
71
|
-
openstef/pipeline/create_basecase_forecast.py,sha256=YkpiqohETTAETb4GiVlK_btw5dpixJy2LmFZdm10iaI,4623
|
|
72
|
-
openstef/pipeline/create_component_forecast.py,sha256=U2v_R-FSOXWVbWeknsJbkulN1YK56fL7-bB1h2B1yzw,6021
|
|
73
|
-
openstef/pipeline/create_forecast.py,sha256=F09civdIumNQwJq2hraea5QTQx7DgvEliXKs4Y3f8Mc,5689
|
|
74
|
-
openstef/pipeline/optimize_hyperparameters.py,sha256=3SLkcLR7XC4IeN48C-XT_lxlfCqW_D0NoMpZcrB9UUM,11045
|
|
75
|
-
openstef/pipeline/train_create_forecast_backtest.py,sha256=-kZqCWal5zYLL0k0Sapks1zTmU5unNAooVPaPos1_7E,6050
|
|
76
|
-
openstef/pipeline/train_model.py,sha256=ThZwPo5otikVqVe6NdXkYcxkVFh-kegRVxMsQg1lbFc,19743
|
|
77
|
-
openstef/pipeline/utils.py,sha256=23mB31p19FoGWelLJzxNmqlzGwEr3fCDBEA37V2kpYY,2167
|
|
78
|
-
openstef/postprocessing/__init__.py,sha256=bIyGTSA4V5VoOLTwdaiJJAnozmpSzvQooVYlsf8H4eU,163
|
|
79
|
-
openstef/postprocessing/postprocessing.py,sha256=iR1dhfIqBSRl1NpQiMAceDsY-fHs1qnzDc-b5jFdzvc,9321
|
|
80
|
-
openstef/preprocessing/__init__.py,sha256=bIyGTSA4V5VoOLTwdaiJJAnozmpSzvQooVYlsf8H4eU,163
|
|
81
|
-
openstef/preprocessing/preprocessing.py,sha256=bM_cSSSb2vGTD79RGzUrI6KoELbzlCyJwc7jqQGNEsE,1454
|
|
82
|
-
openstef/tasks/__init__.py,sha256=bIyGTSA4V5VoOLTwdaiJJAnozmpSzvQooVYlsf8H4eU,163
|
|
83
|
-
openstef/tasks/calculate_kpi.py,sha256=O8m-K7lmkU3tY2H4E3gLqRAhhALZ75Y18x8Y_-D8Htw,11876
|
|
84
|
-
openstef/tasks/create_basecase_forecast.py,sha256=rexAt6jGbW3YTXvDo606rzJvYETCoLVYCsBRihZas9U,4213
|
|
85
|
-
openstef/tasks/create_components_forecast.py,sha256=bhBVN1v8mhBQhYP1fBfbhag58DmQlxSKDTSz5YfTYGc,6179
|
|
86
|
-
openstef/tasks/create_forecast.py,sha256=OOXfM3wTPEMa5CnlFPXNPe9kNN4LQG-3fHbeAUsiOKo,6096
|
|
87
|
-
openstef/tasks/create_solar_forecast.py,sha256=cZiIoCVHlLlDrsWeH3ZX4zfcMMrgGgqkG2CmbCp8lqM,15074
|
|
88
|
-
openstef/tasks/create_wind_forecast.py,sha256=RhshkmNSyFWx4Y6yQn02GzHjWTREbN5A5GAeWv0JpcE,2907
|
|
89
|
-
openstef/tasks/optimize_hyperparameters.py,sha256=meiOn5S4yBrk5ANCFwcBCfTZIhm-b1rdh9TFh7KFr3E,4754
|
|
90
|
-
openstef/tasks/split_forecast.py,sha256=AF_AwFcD6BqOrfvNLhIm_8gb7SpyKxEx60mymoxohPg,9323
|
|
91
|
-
openstef/tasks/train_model.py,sha256=PLkZMMZppsHuc2miCKDeVKoPhrwZi68xXL0axH2cDoA,8518
|
|
92
|
-
openstef/tasks/utils/__init__.py,sha256=bIyGTSA4V5VoOLTwdaiJJAnozmpSzvQooVYlsf8H4eU,163
|
|
93
|
-
openstef/tasks/utils/dependencies.py,sha256=Jy9dtV_G7lTEa5Cdy--wvMxJuAb0adb3R0X4QDjVteM,3077
|
|
94
|
-
openstef/tasks/utils/predictionjobloop.py,sha256=Ysy3zF5lzPMz_asYDKeF5m0qgVT3tCtwSPihqMjnI5Q,9580
|
|
95
|
-
openstef/tasks/utils/taskcontext.py,sha256=L9K14ycwgVxbIVUjH2DIn_QWbnu-OfxcGtQ1K9T6sus,5630
|
|
96
|
-
openstef/validation/__init__.py,sha256=bIyGTSA4V5VoOLTwdaiJJAnozmpSzvQooVYlsf8H4eU,163
|
|
97
|
-
openstef/validation/validation.py,sha256=6FY-mD7bWxM7NpM9y-RcGZJt-kyyOmPl8QSemYRY11w,11200
|
|
98
|
-
openstef-3.4.56.dist-info/LICENSE,sha256=7Pm2fWFFHHUG5lDHed1vl5CjzxObIXQglnYsEdtjo_k,14907
|
|
99
|
-
openstef-3.4.56.dist-info/METADATA,sha256=rMQR-9KWXJppECBpZTJg05GnhOZi8aKrjDZlySvl_6I,8305
|
|
100
|
-
openstef-3.4.56.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
|
101
|
-
openstef-3.4.56.dist-info/top_level.txt,sha256=kD0H4PqrQoncZ957FvqwfBxa89kTrun4Z_RAPs_HhLs,9
|
|
102
|
-
openstef-3.4.56.dist-info/RECORD,,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
openstef
|
|
File without changes
|