openstef 3.4.54__tar.gz → 3.4.55__tar.gz

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.
Files changed (108) hide show
  1. {openstef-3.4.54 → openstef-3.4.55}/PKG-INFO +1 -1
  2. {openstef-3.4.54 → openstef-3.4.55}/openstef/data_classes/prediction_job.py +3 -1
  3. {openstef-3.4.54 → openstef-3.4.55}/openstef/enums.py +7 -0
  4. {openstef-3.4.54 → openstef-3.4.55}/openstef/feature_engineering/apply_features.py +4 -0
  5. openstef-3.4.55/openstef/feature_engineering/rolling_features.py +43 -0
  6. {openstef-3.4.54 → openstef-3.4.55}/openstef.egg-info/PKG-INFO +1 -1
  7. {openstef-3.4.54 → openstef-3.4.55}/openstef.egg-info/SOURCES.txt +1 -0
  8. {openstef-3.4.54 → openstef-3.4.55}/setup.py +1 -1
  9. {openstef-3.4.54 → openstef-3.4.55}/LICENSE +0 -0
  10. {openstef-3.4.54 → openstef-3.4.55}/README.md +0 -0
  11. {openstef-3.4.54 → openstef-3.4.55}/openstef/__init__.py +0 -0
  12. {openstef-3.4.54 → openstef-3.4.55}/openstef/__main__.py +0 -0
  13. {openstef-3.4.54 → openstef-3.4.55}/openstef/app_settings.py +0 -0
  14. {openstef-3.4.54 → openstef-3.4.55}/openstef/data/NL_terrestrial_radiation.csv +0 -0
  15. {openstef-3.4.54 → openstef-3.4.55}/openstef/data/NL_terrestrial_radiation.csv.license +0 -0
  16. {openstef-3.4.54 → openstef-3.4.55}/openstef/data/dazls_model_3.4.24/dazls_stored_3.4.24_baseline_model.z +0 -0
  17. {openstef-3.4.54 → openstef-3.4.55}/openstef/data/dazls_model_3.4.24/dazls_stored_3.4.24_baseline_model.z.license +0 -0
  18. {openstef-3.4.54 → openstef-3.4.55}/openstef/data/dazls_model_3.4.24/dazls_stored_3.4.24_model_card.md +0 -0
  19. {openstef-3.4.54 → openstef-3.4.55}/openstef/data/dazls_model_3.4.24/dazls_stored_3.4.24_model_card.md.license +0 -0
  20. {openstef-3.4.54 → openstef-3.4.55}/openstef/data/dutch_holidays.csv +0 -0
  21. {openstef-3.4.54 → openstef-3.4.55}/openstef/data/dutch_holidays.csv.license +0 -0
  22. {openstef-3.4.54 → openstef-3.4.55}/openstef/data/pv_single_coefs.csv +0 -0
  23. {openstef-3.4.54 → openstef-3.4.55}/openstef/data/pv_single_coefs.csv.license +0 -0
  24. {openstef-3.4.54 → openstef-3.4.55}/openstef/data_classes/__init__.py +0 -0
  25. {openstef-3.4.54 → openstef-3.4.55}/openstef/data_classes/data_prep.py +0 -0
  26. {openstef-3.4.54 → openstef-3.4.55}/openstef/data_classes/model_specifications.py +0 -0
  27. {openstef-3.4.54 → openstef-3.4.55}/openstef/data_classes/split_function.py +0 -0
  28. {openstef-3.4.54 → openstef-3.4.55}/openstef/exceptions.py +0 -0
  29. {openstef-3.4.54 → openstef-3.4.55}/openstef/feature_engineering/__init__.py +0 -0
  30. {openstef-3.4.54 → openstef-3.4.55}/openstef/feature_engineering/bidding_zone_to_country_mapping.py +0 -0
  31. {openstef-3.4.54 → openstef-3.4.55}/openstef/feature_engineering/cyclic_features.py +0 -0
  32. {openstef-3.4.54 → openstef-3.4.55}/openstef/feature_engineering/data_preparation.py +0 -0
  33. {openstef-3.4.54 → openstef-3.4.55}/openstef/feature_engineering/feature_adder.py +0 -0
  34. {openstef-3.4.54 → openstef-3.4.55}/openstef/feature_engineering/feature_applicator.py +0 -0
  35. {openstef-3.4.54 → openstef-3.4.55}/openstef/feature_engineering/general.py +0 -0
  36. {openstef-3.4.54 → openstef-3.4.55}/openstef/feature_engineering/holiday_features.py +0 -0
  37. {openstef-3.4.54 → openstef-3.4.55}/openstef/feature_engineering/lag_features.py +0 -0
  38. {openstef-3.4.54 → openstef-3.4.55}/openstef/feature_engineering/missing_values_transformer.py +0 -0
  39. {openstef-3.4.54 → openstef-3.4.55}/openstef/feature_engineering/weather_features.py +0 -0
  40. {openstef-3.4.54 → openstef-3.4.55}/openstef/metrics/__init__.py +0 -0
  41. {openstef-3.4.54 → openstef-3.4.55}/openstef/metrics/figure.py +0 -0
  42. {openstef-3.4.54 → openstef-3.4.55}/openstef/metrics/metrics.py +0 -0
  43. {openstef-3.4.54 → openstef-3.4.55}/openstef/metrics/reporter.py +0 -0
  44. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/__init__.py +0 -0
  45. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/basecase.py +0 -0
  46. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/confidence_interval_applicator.py +0 -0
  47. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/fallback.py +0 -0
  48. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/metamodels/__init__.py +0 -0
  49. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/metamodels/feature_clipper.py +0 -0
  50. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/metamodels/grouped_regressor.py +0 -0
  51. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/metamodels/missing_values_handler.py +0 -0
  52. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/model_creator.py +0 -0
  53. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/objective.py +0 -0
  54. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/objective_creator.py +0 -0
  55. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/regressors/__init__.py +0 -0
  56. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/regressors/arima.py +0 -0
  57. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/regressors/custom_regressor.py +0 -0
  58. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/regressors/dazls.py +0 -0
  59. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/regressors/flatliner.py +0 -0
  60. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/regressors/gblinear_quantile.py +0 -0
  61. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/regressors/lgbm.py +0 -0
  62. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/regressors/linear.py +0 -0
  63. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/regressors/linear_quantile.py +0 -0
  64. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/regressors/regressor.py +0 -0
  65. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/regressors/xgb.py +0 -0
  66. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/regressors/xgb_multioutput_quantile.py +0 -0
  67. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/regressors/xgb_quantile.py +0 -0
  68. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/serializer.py +0 -0
  69. {openstef-3.4.54 → openstef-3.4.55}/openstef/model/standard_deviation_generator.py +0 -0
  70. {openstef-3.4.54 → openstef-3.4.55}/openstef/model_selection/__init__.py +0 -0
  71. {openstef-3.4.54 → openstef-3.4.55}/openstef/model_selection/model_selection.py +0 -0
  72. {openstef-3.4.54 → openstef-3.4.55}/openstef/monitoring/__init__.py +0 -0
  73. {openstef-3.4.54 → openstef-3.4.55}/openstef/monitoring/performance_meter.py +0 -0
  74. {openstef-3.4.54 → openstef-3.4.55}/openstef/monitoring/teams.py +0 -0
  75. {openstef-3.4.54 → openstef-3.4.55}/openstef/pipeline/__init__.py +0 -0
  76. {openstef-3.4.54 → openstef-3.4.55}/openstef/pipeline/create_basecase_forecast.py +0 -0
  77. {openstef-3.4.54 → openstef-3.4.55}/openstef/pipeline/create_component_forecast.py +0 -0
  78. {openstef-3.4.54 → openstef-3.4.55}/openstef/pipeline/create_forecast.py +0 -0
  79. {openstef-3.4.54 → openstef-3.4.55}/openstef/pipeline/optimize_hyperparameters.py +0 -0
  80. {openstef-3.4.54 → openstef-3.4.55}/openstef/pipeline/train_create_forecast_backtest.py +0 -0
  81. {openstef-3.4.54 → openstef-3.4.55}/openstef/pipeline/train_model.py +0 -0
  82. {openstef-3.4.54 → openstef-3.4.55}/openstef/pipeline/utils.py +0 -0
  83. {openstef-3.4.54 → openstef-3.4.55}/openstef/postprocessing/__init__.py +0 -0
  84. {openstef-3.4.54 → openstef-3.4.55}/openstef/postprocessing/postprocessing.py +0 -0
  85. {openstef-3.4.54 → openstef-3.4.55}/openstef/preprocessing/__init__.py +0 -0
  86. {openstef-3.4.54 → openstef-3.4.55}/openstef/preprocessing/preprocessing.py +0 -0
  87. {openstef-3.4.54 → openstef-3.4.55}/openstef/settings.py +0 -0
  88. {openstef-3.4.54 → openstef-3.4.55}/openstef/tasks/__init__.py +0 -0
  89. {openstef-3.4.54 → openstef-3.4.55}/openstef/tasks/calculate_kpi.py +0 -0
  90. {openstef-3.4.54 → openstef-3.4.55}/openstef/tasks/create_basecase_forecast.py +0 -0
  91. {openstef-3.4.54 → openstef-3.4.55}/openstef/tasks/create_components_forecast.py +0 -0
  92. {openstef-3.4.54 → openstef-3.4.55}/openstef/tasks/create_forecast.py +0 -0
  93. {openstef-3.4.54 → openstef-3.4.55}/openstef/tasks/create_solar_forecast.py +0 -0
  94. {openstef-3.4.54 → openstef-3.4.55}/openstef/tasks/create_wind_forecast.py +0 -0
  95. {openstef-3.4.54 → openstef-3.4.55}/openstef/tasks/optimize_hyperparameters.py +0 -0
  96. {openstef-3.4.54 → openstef-3.4.55}/openstef/tasks/split_forecast.py +0 -0
  97. {openstef-3.4.54 → openstef-3.4.55}/openstef/tasks/train_model.py +0 -0
  98. {openstef-3.4.54 → openstef-3.4.55}/openstef/tasks/utils/__init__.py +0 -0
  99. {openstef-3.4.54 → openstef-3.4.55}/openstef/tasks/utils/dependencies.py +0 -0
  100. {openstef-3.4.54 → openstef-3.4.55}/openstef/tasks/utils/predictionjobloop.py +0 -0
  101. {openstef-3.4.54 → openstef-3.4.55}/openstef/tasks/utils/taskcontext.py +0 -0
  102. {openstef-3.4.54 → openstef-3.4.55}/openstef/validation/__init__.py +0 -0
  103. {openstef-3.4.54 → openstef-3.4.55}/openstef/validation/validation.py +0 -0
  104. {openstef-3.4.54 → openstef-3.4.55}/openstef.egg-info/dependency_links.txt +0 -0
  105. {openstef-3.4.54 → openstef-3.4.55}/openstef.egg-info/requires.txt +0 -0
  106. {openstef-3.4.54 → openstef-3.4.55}/openstef.egg-info/top_level.txt +0 -0
  107. {openstef-3.4.54 → openstef-3.4.55}/pyproject.toml +0 -0
  108. {openstef-3.4.54 → openstef-3.4.55}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: openstef
3
- Version: 3.4.54
3
+ Version: 3.4.55
4
4
  Summary: Open short term energy forecaster
5
5
  Home-page: https://github.com/OpenSTEF/openstef
6
6
  Author: Alliander N.V
@@ -9,7 +9,7 @@ from pydantic.v1 import BaseModel
9
9
  from openstef.data_classes.data_prep import DataPrepDataClass
10
10
  from openstef.data_classes.model_specifications import ModelSpecificationDataClass
11
11
  from openstef.data_classes.split_function import SplitFuncDataClass
12
- from openstef.enums import PipelineType, BiddingZone
12
+ from openstef.enums import PipelineType, BiddingZone, AggregateFunction
13
13
 
14
14
 
15
15
  class PredictionJobDataClass(BaseModel):
@@ -83,6 +83,8 @@ class PredictionJobDataClass(BaseModel):
83
83
  data_balancing_ratio: Optional[float] = None
84
84
  """If data balancing is enabled, the data will be balanced with data from 1 year
85
85
  ago in the future."""
86
+ rolling_aggregate_features: Optional[list[AggregateFunction]] = None
87
+ """If not None, rolling aggregate(s) of load will be used as features in the model."""
86
88
  depends_on: Optional[list[Union[int, str]]]
87
89
  """Link to another prediction job on which this prediction job might depend."""
88
90
  sid: Optional[str]
@@ -108,6 +108,13 @@ class BiddingZone(Enum):
108
108
  DE_AMP_LU = "DE_AMP_LU"
109
109
 
110
110
 
111
+ class AggregateFunction(Enum):
112
+ MEAN = "mean"
113
+ MEDIAN = "median"
114
+ MAX = "max"
115
+ MIN = "min"
116
+
117
+
111
118
  class ModelType(Enum):
112
119
  XGB = "xgb"
113
120
  XGB_QUANTILE = "xgb_quantile"
@@ -22,6 +22,7 @@ from openstef.feature_engineering.lag_features import generate_lag_feature_funct
22
22
  from openstef.feature_engineering.bidding_zone_to_country_mapping import (
23
23
  BIDDING_ZONE_TO_COUNTRY_CODE_MAPPING,
24
24
  )
25
+ from openstef.feature_engineering.rolling_features import add_rolling_aggregate_features
25
26
  from openstef.feature_engineering.weather_features import (
26
27
  add_additional_solar_features,
27
28
  add_additional_wind_features,
@@ -130,5 +131,8 @@ def apply_features(
130
131
  # Adds daylight terrestrial feature
131
132
  data = add_daylight_terrestrial_feature(data)
132
133
 
134
+ if pj.get("rolling_aggregate_features") is not None:
135
+ data = add_rolling_aggregate_features(data, pj=pj)
136
+
133
137
  # Return dataframe including all requested features
134
138
  return data
@@ -0,0 +1,43 @@
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
+ from datetime import timedelta
5
+
6
+ import pandas as pd
7
+
8
+ from openstef.data_classes.prediction_job import PredictionJobDataClass
9
+
10
+
11
+ def add_rolling_aggregate_features(
12
+ data: pd.DataFrame,
13
+ pj: PredictionJobDataClass,
14
+ rolling_window: timedelta = timedelta(hours=24),
15
+ ) -> pd.DataFrame:
16
+ """
17
+ Adds rolling aggregate features to the input dataframe.
18
+
19
+ These features are calculated with an aggregation over a rolling window of the data.
20
+ A list of requested features is used to determine whether to add the rolling features
21
+ or not.
22
+
23
+ Args:
24
+ data: Input dataframe to which the rolling features will be added.
25
+ pj: Prediction job data.
26
+ rolling_window: Rolling window size for the aggregation.
27
+
28
+ Returns:
29
+ DataFrame with added rolling features.
30
+ """
31
+ # Ensure the index is a DatetimeIndex
32
+ if not isinstance(data.index, pd.DatetimeIndex):
33
+ raise ValueError("The DataFrame index must be a DatetimeIndex.")
34
+
35
+ if "load" not in data.columns:
36
+ raise ValueError("The DataFrame must contain a 'load' column.")
37
+ rolling_window_load = data["load"].rolling(window=rolling_window)
38
+
39
+ for aggregate_func in pj["rolling_aggregate_features"]:
40
+ data[
41
+ f"rolling_{aggregate_func.value}_load_{rolling_window}"
42
+ ] = rolling_window_load.aggregate(aggregate_func.value)
43
+ return data
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: openstef
3
- Version: 3.4.54
3
+ Version: 3.4.55
4
4
  Summary: Open short term energy forecaster
5
5
  Home-page: https://github.com/OpenSTEF/openstef
6
6
  Author: Alliander N.V
@@ -40,6 +40,7 @@ openstef/feature_engineering/general.py
40
40
  openstef/feature_engineering/holiday_features.py
41
41
  openstef/feature_engineering/lag_features.py
42
42
  openstef/feature_engineering/missing_values_transformer.py
43
+ openstef/feature_engineering/rolling_features.py
43
44
  openstef/feature_engineering/weather_features.py
44
45
  openstef/metrics/__init__.py
45
46
  openstef/metrics/figure.py
@@ -29,7 +29,7 @@ def read_long_description_from_readme():
29
29
 
30
30
  setup(
31
31
  name="openstef",
32
- version="3.4.54",
32
+ version="3.4.55",
33
33
  packages=find_packages(include=["openstef", "openstef.*"]),
34
34
  description="Open short term energy forecaster",
35
35
  long_description=read_long_description_from_readme(),
File without changes
File without changes
File without changes
File without changes