openstef 3.3.13__tar.gz → 3.3.15__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 (99) hide show
  1. {openstef-3.3.13 → openstef-3.3.15}/PKG-INFO +2 -2
  2. openstef-3.3.15/openstef/preprocessing/preprocessing.py +42 -0
  3. {openstef-3.3.13 → openstef-3.3.15}/openstef/validation/validation.py +1 -1
  4. {openstef-3.3.13 → openstef-3.3.15}/openstef.egg-info/PKG-INFO +2 -2
  5. {openstef-3.3.13 → openstef-3.3.15}/openstef.egg-info/requires.txt +1 -1
  6. {openstef-3.3.13 → openstef-3.3.15}/setup.py +1 -1
  7. openstef-3.3.13/openstef/preprocessing/preprocessing.py +0 -27
  8. {openstef-3.3.13 → openstef-3.3.15}/LICENSE +0 -0
  9. {openstef-3.3.13 → openstef-3.3.15}/README.md +0 -0
  10. {openstef-3.3.13 → openstef-3.3.15}/openstef/__init__.py +0 -0
  11. {openstef-3.3.13 → openstef-3.3.15}/openstef/__main__.py +0 -0
  12. {openstef-3.3.13 → openstef-3.3.15}/openstef/data/dazls_stored.sav +0 -0
  13. {openstef-3.3.13 → openstef-3.3.15}/openstef/data/dazls_stored.sav.license +0 -0
  14. {openstef-3.3.13 → openstef-3.3.15}/openstef/data/dazls_stored_3.2.49.sav +0 -0
  15. {openstef-3.3.13 → openstef-3.3.15}/openstef/data/dazls_stored_3.2.49.sav.license +0 -0
  16. {openstef-3.3.13 → openstef-3.3.15}/openstef/data/dutch_holidays_2020-2022.csv +0 -0
  17. {openstef-3.3.13 → openstef-3.3.15}/openstef/data/dutch_holidays_2020-2022.csv.license +0 -0
  18. {openstef-3.3.13 → openstef-3.3.15}/openstef/data/pv_single_coefs.csv +0 -0
  19. {openstef-3.3.13 → openstef-3.3.15}/openstef/data/pv_single_coefs.csv.license +0 -0
  20. {openstef-3.3.13 → openstef-3.3.15}/openstef/data_classes/__init__.py +0 -0
  21. {openstef-3.3.13 → openstef-3.3.15}/openstef/data_classes/data_prep.py +0 -0
  22. {openstef-3.3.13 → openstef-3.3.15}/openstef/data_classes/model_specifications.py +0 -0
  23. {openstef-3.3.13 → openstef-3.3.15}/openstef/data_classes/prediction_job.py +0 -0
  24. {openstef-3.3.13 → openstef-3.3.15}/openstef/data_classes/split_function.py +0 -0
  25. {openstef-3.3.13 → openstef-3.3.15}/openstef/enums.py +0 -0
  26. {openstef-3.3.13 → openstef-3.3.15}/openstef/exceptions.py +0 -0
  27. {openstef-3.3.13 → openstef-3.3.15}/openstef/feature_engineering/__init__.py +0 -0
  28. {openstef-3.3.13 → openstef-3.3.15}/openstef/feature_engineering/apply_features.py +0 -0
  29. {openstef-3.3.13 → openstef-3.3.15}/openstef/feature_engineering/data_preparation.py +0 -0
  30. {openstef-3.3.13 → openstef-3.3.15}/openstef/feature_engineering/feature_adder.py +0 -0
  31. {openstef-3.3.13 → openstef-3.3.15}/openstef/feature_engineering/feature_applicator.py +0 -0
  32. {openstef-3.3.13 → openstef-3.3.15}/openstef/feature_engineering/general.py +0 -0
  33. {openstef-3.3.13 → openstef-3.3.15}/openstef/feature_engineering/historic_features.py +0 -0
  34. {openstef-3.3.13 → openstef-3.3.15}/openstef/feature_engineering/holiday_features.py +0 -0
  35. {openstef-3.3.13 → openstef-3.3.15}/openstef/feature_engineering/lag_features.py +0 -0
  36. {openstef-3.3.13 → openstef-3.3.15}/openstef/feature_engineering/weather_features.py +0 -0
  37. {openstef-3.3.13 → openstef-3.3.15}/openstef/metrics/__init__.py +0 -0
  38. {openstef-3.3.13 → openstef-3.3.15}/openstef/metrics/figure.py +0 -0
  39. {openstef-3.3.13 → openstef-3.3.15}/openstef/metrics/metrics.py +0 -0
  40. {openstef-3.3.13 → openstef-3.3.15}/openstef/metrics/reporter.py +0 -0
  41. {openstef-3.3.13 → openstef-3.3.15}/openstef/model/__init__.py +0 -0
  42. {openstef-3.3.13 → openstef-3.3.15}/openstef/model/basecase.py +0 -0
  43. {openstef-3.3.13 → openstef-3.3.15}/openstef/model/confidence_interval_applicator.py +0 -0
  44. {openstef-3.3.13 → openstef-3.3.15}/openstef/model/fallback.py +0 -0
  45. {openstef-3.3.13 → openstef-3.3.15}/openstef/model/metamodels/__init__.py +0 -0
  46. {openstef-3.3.13 → openstef-3.3.15}/openstef/model/metamodels/grouped_regressor.py +0 -0
  47. {openstef-3.3.13 → openstef-3.3.15}/openstef/model/metamodels/missing_values_handler.py +0 -0
  48. {openstef-3.3.13 → openstef-3.3.15}/openstef/model/model_creator.py +0 -0
  49. {openstef-3.3.13 → openstef-3.3.15}/openstef/model/objective.py +0 -0
  50. {openstef-3.3.13 → openstef-3.3.15}/openstef/model/objective_creator.py +0 -0
  51. {openstef-3.3.13 → openstef-3.3.15}/openstef/model/regressors/__init__.py +0 -0
  52. {openstef-3.3.13 → openstef-3.3.15}/openstef/model/regressors/arima.py +0 -0
  53. {openstef-3.3.13 → openstef-3.3.15}/openstef/model/regressors/custom_regressor.py +0 -0
  54. {openstef-3.3.13 → openstef-3.3.15}/openstef/model/regressors/dazls.py +0 -0
  55. {openstef-3.3.13 → openstef-3.3.15}/openstef/model/regressors/lgbm.py +0 -0
  56. {openstef-3.3.13 → openstef-3.3.15}/openstef/model/regressors/linear.py +0 -0
  57. {openstef-3.3.13 → openstef-3.3.15}/openstef/model/regressors/proloaf.py +0 -0
  58. {openstef-3.3.13 → openstef-3.3.15}/openstef/model/regressors/regressor.py +0 -0
  59. {openstef-3.3.13 → openstef-3.3.15}/openstef/model/regressors/xgb.py +0 -0
  60. {openstef-3.3.13 → openstef-3.3.15}/openstef/model/regressors/xgb_quantile.py +0 -0
  61. {openstef-3.3.13 → openstef-3.3.15}/openstef/model/serializer.py +0 -0
  62. {openstef-3.3.13 → openstef-3.3.15}/openstef/model/standard_deviation_generator.py +0 -0
  63. {openstef-3.3.13 → openstef-3.3.15}/openstef/model_selection/__init__.py +0 -0
  64. {openstef-3.3.13 → openstef-3.3.15}/openstef/model_selection/model_selection.py +0 -0
  65. {openstef-3.3.13 → openstef-3.3.15}/openstef/monitoring/__init__.py +0 -0
  66. {openstef-3.3.13 → openstef-3.3.15}/openstef/monitoring/performance_meter.py +0 -0
  67. {openstef-3.3.13 → openstef-3.3.15}/openstef/monitoring/teams.py +0 -0
  68. {openstef-3.3.13 → openstef-3.3.15}/openstef/pipeline/__init__.py +0 -0
  69. {openstef-3.3.13 → openstef-3.3.15}/openstef/pipeline/create_basecase_forecast.py +0 -0
  70. {openstef-3.3.13 → openstef-3.3.15}/openstef/pipeline/create_component_forecast.py +0 -0
  71. {openstef-3.3.13 → openstef-3.3.15}/openstef/pipeline/create_forecast.py +0 -0
  72. {openstef-3.3.13 → openstef-3.3.15}/openstef/pipeline/optimize_hyperparameters.py +0 -0
  73. {openstef-3.3.13 → openstef-3.3.15}/openstef/pipeline/train_create_forecast_backtest.py +0 -0
  74. {openstef-3.3.13 → openstef-3.3.15}/openstef/pipeline/train_model.py +0 -0
  75. {openstef-3.3.13 → openstef-3.3.15}/openstef/pipeline/utils.py +0 -0
  76. {openstef-3.3.13 → openstef-3.3.15}/openstef/postprocessing/__init__.py +0 -0
  77. {openstef-3.3.13 → openstef-3.3.15}/openstef/postprocessing/postprocessing.py +0 -0
  78. {openstef-3.3.13 → openstef-3.3.15}/openstef/preprocessing/__init__.py +0 -0
  79. {openstef-3.3.13 → openstef-3.3.15}/openstef/tasks/__init__.py +0 -0
  80. {openstef-3.3.13 → openstef-3.3.15}/openstef/tasks/calculate_kpi.py +0 -0
  81. {openstef-3.3.13 → openstef-3.3.15}/openstef/tasks/create_basecase_forecast.py +0 -0
  82. {openstef-3.3.13 → openstef-3.3.15}/openstef/tasks/create_components_forecast.py +0 -0
  83. {openstef-3.3.13 → openstef-3.3.15}/openstef/tasks/create_forecast.py +0 -0
  84. {openstef-3.3.13 → openstef-3.3.15}/openstef/tasks/create_solar_forecast.py +0 -0
  85. {openstef-3.3.13 → openstef-3.3.15}/openstef/tasks/create_wind_forecast.py +0 -0
  86. {openstef-3.3.13 → openstef-3.3.15}/openstef/tasks/optimize_hyperparameters.py +0 -0
  87. {openstef-3.3.13 → openstef-3.3.15}/openstef/tasks/run_tracy.py +0 -0
  88. {openstef-3.3.13 → openstef-3.3.15}/openstef/tasks/split_forecast.py +0 -0
  89. {openstef-3.3.13 → openstef-3.3.15}/openstef/tasks/train_model.py +0 -0
  90. {openstef-3.3.13 → openstef-3.3.15}/openstef/tasks/utils/__init__.py +0 -0
  91. {openstef-3.3.13 → openstef-3.3.15}/openstef/tasks/utils/dependencies.py +0 -0
  92. {openstef-3.3.13 → openstef-3.3.15}/openstef/tasks/utils/predictionjobloop.py +0 -0
  93. {openstef-3.3.13 → openstef-3.3.15}/openstef/tasks/utils/taskcontext.py +0 -0
  94. {openstef-3.3.13 → openstef-3.3.15}/openstef/validation/__init__.py +0 -0
  95. {openstef-3.3.13 → openstef-3.3.15}/openstef.egg-info/SOURCES.txt +0 -0
  96. {openstef-3.3.13 → openstef-3.3.15}/openstef.egg-info/dependency_links.txt +0 -0
  97. {openstef-3.3.13 → openstef-3.3.15}/openstef.egg-info/top_level.txt +0 -0
  98. {openstef-3.3.13 → openstef-3.3.15}/pyproject.toml +0 -0
  99. {openstef-3.3.13 → openstef-3.3.15}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openstef
3
- Version: 3.3.13
3
+ Version: 3.3.15
4
4
  Summary: Open short term energy forecaster
5
5
  Home-page: https://github.com/OpenSTEF/openstef
6
6
  Author: Alliander N.V
@@ -30,7 +30,7 @@ Requires-Dist: scikit-learn~=1.3
30
30
  Requires-Dist: scipy~=1.10
31
31
  Requires-Dist: statsmodels~=0.13.5
32
32
  Requires-Dist: structlog~=23.1
33
- Requires-Dist: xgboost~=2.0
33
+ Requires-Dist: xgboost~=1.7
34
34
  Provides-Extra: proloaf
35
35
  Requires-Dist: proloaf==0.2.0; extra == "proloaf"
36
36
  Requires-Dist: torch==1.10.0; extra == "proloaf"
@@ -0,0 +1,42 @@
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
+
5
+ import numpy as np
6
+ import pandas as pd
7
+
8
+
9
+ def replace_repeated_values_with_nan(
10
+ df: pd.DataFrame, threshold: int, column_name: str
11
+ ) -> pd.DataFrame:
12
+ """Replace sequentially repeated values with NaN.
13
+
14
+ Args:
15
+ df: Data with potential repeating values.
16
+ threshold: The minimum number of squentially repeated values needed to trigger the replacement with NaN.
17
+ column_name: Column name of input dataframe with repeating values.
18
+
19
+ Returns:
20
+ DataFrame, similar to df, with the desired values set to NaN.
21
+
22
+ """
23
+ data = df.copy()
24
+
25
+ # Add a boolean column to mark sequential duplicates
26
+ data["temp_is_duplicate"] = data[column_name].eq(data[column_name].shift(1))
27
+
28
+ # Create an unique identifier for each sequence with the same value, so we can easily remove the correct sequences
29
+ data["temp_repeated_group"] = (~data["temp_is_duplicate"]).cumsum()
30
+
31
+ # Create mask of sequences larger than or equal to the threshold value
32
+ mask = (
33
+ data.groupby("temp_repeated_group")[column_name].transform("count") >= threshold
34
+ )
35
+
36
+ # Replace the masked values with NaN
37
+ data.loc[mask, column_name] = np.nan
38
+
39
+ # Drop temporary columns
40
+ data = data.drop(["temp_is_duplicate", "temp_repeated_group"], axis=1)
41
+
42
+ return data
@@ -62,7 +62,7 @@ def validate(
62
62
 
63
63
  # Drop 'false' measurements. e.g. where load appears to be constant.
64
64
  data = replace_repeated_values_with_nan(
65
- data, max_length=flatliner_threshold_repetitions, column_name=data.columns[0]
65
+ data, threshold=flatliner_threshold_repetitions, column_name=data.columns[0]
66
66
  )
67
67
  num_repeated_values = len(data) - len(data.iloc[:, 0].dropna())
68
68
  if num_repeated_values > 0:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openstef
3
- Version: 3.3.13
3
+ Version: 3.3.15
4
4
  Summary: Open short term energy forecaster
5
5
  Home-page: https://github.com/OpenSTEF/openstef
6
6
  Author: Alliander N.V
@@ -30,7 +30,7 @@ Requires-Dist: scikit-learn~=1.3
30
30
  Requires-Dist: scipy~=1.10
31
31
  Requires-Dist: statsmodels~=0.13.5
32
32
  Requires-Dist: structlog~=23.1
33
- Requires-Dist: xgboost~=2.0
33
+ Requires-Dist: xgboost~=1.7
34
34
  Provides-Extra: proloaf
35
35
  Requires-Dist: proloaf==0.2.0; extra == "proloaf"
36
36
  Requires-Dist: torch==1.10.0; extra == "proloaf"
@@ -13,7 +13,7 @@ scikit-learn~=1.3
13
13
  scipy~=1.10
14
14
  statsmodels~=0.13.5
15
15
  structlog~=23.1
16
- xgboost~=2.0
16
+ xgboost~=1.7
17
17
 
18
18
  [proloaf]
19
19
  proloaf==0.2.0
@@ -29,7 +29,7 @@ def read_long_description_from_readme():
29
29
 
30
30
  setup(
31
31
  name="openstef",
32
- version="3.3.13",
32
+ version="3.3.15",
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(),
@@ -1,27 +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
-
5
- import numpy as np
6
- import pandas as pd
7
-
8
-
9
- def replace_repeated_values_with_nan(
10
- df: pd.DataFrame, max_length: int, column_name: str
11
- ) -> pd.DataFrame:
12
- """Replace sequentially repeated values with NaN.
13
-
14
- Args:
15
- df: Data with potential repeating values.
16
- max_length: Maximum length of sequence. Above are set to NaN.
17
- column_name: Column name of input dataframe with repeating values.
18
-
19
- Returns:
20
- DataFrame, similar to df, with the desired values set to NaN.
21
-
22
- """
23
- data = df.copy(deep=True)
24
- sequentials = data[column_name].diff().ne(0).cumsum()
25
- grouped_sequentials_over_max = sequentials.groupby(sequentials).head(max_length)
26
- data.loc[~data.index.isin(grouped_sequentials_over_max.index), column_name] = np.nan
27
- return data
File without changes
File without changes
File without changes
File without changes
File without changes