diff --git a/docs/_static/methodology_train_predict.svg b/docs/_static/methodology_train_predict.svg index 8d5ffb301..f2997bd9e 100644 --- a/docs/_static/methodology_train_predict.svg +++ b/docs/_static/methodology_train_predict.svg @@ -1 +1 @@ -LoadDatetime8.22023-02-0310:00:00Z8.62023-02-0310:15:00ZE1C_AMI_AAPXWindspeed0.001248.03.20.001548.03.8isWeekdayDew-pointWindEnergyLoad 15minsbeforeLoad 2daysbefore08.90.207.814.309.10.238.214.6LoadWeatherForecastsMarketPricesTypicalProfilesDerivedWeatherDerivedRenewableLaggedLoadTargetyExternalPredictorsDerivedFeaturesFeatures-xInput Backtest PipelineCalculatesMultiplyfor traininghorizonsHorizon(excl. in fit)Dew-pointWindEnergyLoad 15minsbeforeLoad 2daysbeforeE1C_AMI_AAPXWindspeedLoadDatetime(exclin fit)0.258.90.207.814.30.001248.03.28.22023-02-0310:00:00Z47.08.90.2014.30.00123.28.22023-02-0310:00:00Z0.259.10.238.214.60.001548.03.88.62023-02-0310:15:00Z47.09.10.2314.60.00153.88.62023-02-0310:15:00Z1)OpenSTEFforecastsatimeseries with aknownhistory; theTarget.Typicallythis is themeasuredload onanasset.CalendarInfo2) The Target ismergedwithExternalPredictors,suchasWeatherForecasts.3)DerivedFeaturesarecalculated,suchas theLaggedTarget,weekdayandthegenerationof atypicalwind turbine4)OpenSTEFtrainsasinglemodeltopredicttheload atallleadtimes.Thisisperformedbyduplicatingthetraining dataforeverytraining horizon (typically15minutesaheadand47hoursahead),andmaskingallfeatureswhichareoperationallynotavailableatthattraining horizon. E.g. Theday-aheadelectricitypriceisknownfora training horizonof 15 minutes, butnotfor47hours.Thisway,themodelhasincreasedpredictivepowerforshort leadtimes,whilealsoabletomake asensiblepredictionat longleadtimesmodel.fit4)DuringForecasting,themodelpredictsin a singleshotallrequestedleadtimes,typicallyupto48hoursaheadwitha 15 minuteresolution.Dew-pointWindEnergyLoad 15minsbeforeLoad 2daysbeforeE1C_AMI_AAPXWind-speed7.10.605.15.20.001352.04.27.30.685.70.001352.04.47.10.885.10.00158.8model.predictLoadForecastDatetime7.62023-02-0407:00:00Z7.82023-02-0407:15:00Z7.42023-02-0506:45:00ZDatetime2023-02-0407:00:00Z2023-02-0407:15:00Z2023-02-0406:45:00ZForecast @ 2023-02-03 06:50:00Z \ No newline at end of file +LoadDatetime8.22023-02-0310:00:00Z8.62023-02-0310:15:00ZE1C_AMI_Aday_ahead_electricity_priceWindspeed0.001248.03.20.001548.03.8isWeekdayDew-pointWindEnergyLoad 15minsbeforeLoad 2daysbefore08.90.207.814.309.10.238.214.6LoadWeatherForecastsMarketPricesTypicalProfilesDerivedWeatherDerivedRenewableLaggedLoadTargetyExternalPredictorsDerivedFeaturesFeatures-xInput Backtest PipelineCalculatesMultiplyfor traininghorizonsHorizon(excl. in fit)Dew-pointWindEnergyLoad 15minsbeforeLoad 2daysbeforeE1C_AMI_Aday_ahead_electricity_priceWindspeedLoadDatetime(exclin fit)0.258.90.207.814.30.001248.03.28.22023-02-0310:00:00Z47.08.90.2014.30.00123.28.22023-02-0310:00:00Z0.259.10.238.214.60.001548.03.88.62023-02-0310:15:00Z47.09.10.2314.60.00153.88.62023-02-0310:15:00Z1)OpenSTEFforecastsatimeseries with aknownhistory; theTarget.Typicallythis is themeasuredload onanasset.CalendarInfo2) The Target ismergedwithExternalPredictors,suchasWeatherForecasts.3)DerivedFeaturesarecalculated,suchas theLaggedTarget,weekdayandthegenerationof atypicalwind turbine4)OpenSTEFtrainsasinglemodeltopredicttheload atallleadtimes.Thisisperformedbyduplicatingthetraining dataforeverytraining horizon (typically15minutesaheadand47hoursahead),andmaskingallfeatureswhichareoperationallynotavailableatthattraining horizon. E.g. Theday-aheadelectricitypriceisknownfora training horizonof 15 minutes, butnotfor47hours.Thisway,themodelhasincreasedpredictivepowerforshort leadtimes,whilealsoabletomake asensiblepredictionat longleadtimesmodel.fit4)DuringForecasting,themodelpredictsin a singleshotallrequestedleadtimes,typicallyupto48hoursaheadwitha 15 minuteresolution.Dew-pointWindEnergyLoad 15minsbeforeLoad 2daysbeforeE1C_AMI_Aday_ahead_electricity_priceWind-speed7.10.605.15.20.001352.04.27.30.685.70.001352.04.47.10.885.10.00158.8model.predictLoadForecastDatetime7.62023-02-0407:00:00Z7.82023-02-0407:15:00Z7.42023-02-0506:45:00ZDatetime2023-02-0407:00:00Z2023-02-0407:15:00Z2023-02-0406:45:00ZForecast @ 2023-02-03 06:50:00Z \ No newline at end of file diff --git a/openstef/feature_engineering/feature_applicator.py b/openstef/feature_engineering/feature_applicator.py index ee235dcef..9ffddc9ea 100644 --- a/openstef/feature_engineering/feature_applicator.py +++ b/openstef/feature_engineering/feature_applicator.py @@ -24,7 +24,9 @@ remove_non_requested_feature_columns, ) -LATENCY_CONFIG = {"APX": 24} # A specific latency is part of a specific feature. +LATENCY_CONFIG = { + "day_ahead_electricity_price": 24 +} # A specific latency is part of a specific feature. class AbstractFeatureApplicator(ABC): @@ -94,7 +96,7 @@ def add_features( if not specified a default location is used latency_config: (Optional) Invalidate certain features that are not available for a specific horizon due to data latency. Defaults to - ``{"APX": 24}``. + ``{"day_ahead_electricity_price": 24}``. Returns: Input DataFrame with an extra column for every added feature and sorted on the datetime index. diff --git a/openstef/model/regressors/linear_quantile.py b/openstef/model/regressors/linear_quantile.py index d53fd2ade..cf0cdb7c7 100644 --- a/openstef/model/regressors/linear_quantile.py +++ b/openstef/model/regressors/linear_quantile.py @@ -93,7 +93,7 @@ def __init__( ) if clipped_features is None: - clipped_features = ["APX"] + clipped_features = ["day_ahead_electricity_price"] self.quantiles = quantiles self.alpha = alpha diff --git a/openstef/tasks/create_components_forecast.py b/openstef/tasks/create_components_forecast.py index ee2b43dc4..816e9ce5c 100644 --- a/openstef/tasks/create_components_forecast.py +++ b/openstef/tasks/create_components_forecast.py @@ -6,7 +6,7 @@ This code assumes trained models are available from the persistent storage. If these are not available run model_train.py to train all models. To provide the prognoses the following steps are carried out: - 1. Get historic training data (TDCV, Load, Weather and APX price data) + 1. Get historic training data (TDCV, Load, Weather and day_ahead_electricity_price price data) 2. Apply features 3. Load model 4. Make component prediction diff --git a/openstef/tasks/create_forecast.py b/openstef/tasks/create_forecast.py index da2f72623..685ecdf69 100644 --- a/openstef/tasks/create_forecast.py +++ b/openstef/tasks/create_forecast.py @@ -6,7 +6,7 @@ This code assumes trained models are available from the persistent storage. If these are not available run model_train.py to train all models. To provide the prognoses the folowing steps are carried out: - 1. Get historic training data (TDCV, Load, Weather and APX price data) + 1. Get historic training data (TDCV, Load, Weather and day_ahead_electricity_price price data) 2. Apply features 3. Load model 4. Make prediction @@ -24,7 +24,7 @@ from pathlib import Path from openstef.data_classes.prediction_job import PredictionJobDataClass -from openstef.enums import ModelType, PipelineType +from openstef.enums import BiddingZone, ModelType, PipelineType from openstef.exceptions import InputDataOngoingZeroFlatlinerError from openstef.pipeline.create_forecast import create_forecast_pipeline from openstef.tasks.utils.predictionjobloop import PredictionJobLoop @@ -82,8 +82,13 @@ def create_forecast_task( location=[pj["lat"], pj["lon"]], datetime_start=datetime_start, datetime_end=datetime_end, + market_price=pj.electricity_bidding_zone.value, ) + # Add APX price to the input data for backward compatibility,remove this line when all models are retrained + if pj.electricity_bidding_zone == BiddingZone.NL: + input_data["APX"] = input_data["day_ahead_electricity_price"] + try: # Make forecast with the forecast pipeline forecast = create_forecast_pipeline( diff --git a/openstef/tasks/train_model.py b/openstef/tasks/train_model.py index 40b7c475e..00b2fed8f 100644 --- a/openstef/tasks/train_model.py +++ b/openstef/tasks/train_model.py @@ -4,7 +4,7 @@ """This module contains the CRON job that is periodically executed to retrain the prognosis models. For this the folowing steps are caried out: - 1. Get historic training data (TDCV, Load, Weather and APX price data) + 1. Get historic training data (TDCV, Load, Weather and day_ahead_electricity_price price data) 2. Apply features 3. Train and Test the new model 4. Check if new model performs better than the old model diff --git a/openstef/validation/validation.py b/openstef/validation/validation.py index 69e73c394..8bf872837 100644 --- a/openstef/validation/validation.py +++ b/openstef/validation/validation.py @@ -313,9 +313,9 @@ def calc_completeness_dataframe( expected_numbers_timedelayed=value, ) - # Correct for APX being only expected to be available up to 24h - if "APX" in non_na_count.index: - non_na_count["APX"] += max([len(df) - 96, 0]) + # Correct for day_ahead_electricity_price being only expected to be available up to 24h + if "day_ahead_electricity_price" in non_na_count.index: + non_na_count["day_ahead_electricity_price"] += max([len(df) - 96, 0]) completeness_per_column_dataframe = non_na_count / (len(df)) diff --git a/test/unit/data/fallback_index.csv b/test/unit/data/fallback_index.csv index f05b3263d..c57186334 100644 --- a/test/unit/data/fallback_index.csv +++ b/test/unit/data/fallback_index.csv @@ -1,4 +1,4 @@ -index,APX,clouds,radiation,temp,winddeg,windspeed,pressure,humidity,rain,mxlD,snowDepth,clearSky_ulf,clearSky_dlf,windspeed_100m,sjv_E1A,sjv_E1B,sjv_E1C,sjv_E2A,sjv_E2B,sjv_E3A,sjv_E3B,sjv_E3C,sjv_E3D,sjv_E4A,T-900min,T-780min,T-15min,T-660min,T-540min,T-30min,T-1440min,T-420min,T-1320min,T-300min,T-45min,T-1200min,T-180min,T-1080min,T-60min,T-960min,T-2880min,T-840min,T-720min,T-600min,T-480min,T-1380min,T-360min,T-1260min,T-240min,T-2160min,T-1140min,T-120min,T-1020min,T-1d,T-2d,T-3d,T-4d,T-5d,T-6d,T-7d,T-8d,T-9d,T-10d,T-11d,T-12d,T-13d,T-14d,IsWeekendDay,IsWeekDay,IsMonday,IsTuesday,IsWednesday,IsThursday,IsFriday,IsSaturday,IsSunday,Month,Quarter,IsChristmas,Is00Hour,Is01Hour,Is02Hour,Is03Hour,Is04Hour,Is05Hour,Is06Hour,Is07Hour,Is08Hour,Is09Hour,Is10Hour,Is11Hour,Is12Hour,Is13Hour,Is14Hour,Is15Hour,Is16Hour,Is17Hour,Is18Hour,Is19Hour,Is20Hour,Is21Hour,Is22Hour,Is23Hour,windspeed_100mExtrapolated,windPowerFit_extrapolated,windpowerFit_harm_arome,saturation_pressure,vapour_pressure,dewpoint,air_density,dtemp_quarter,dtemp_hour,dtemp_day,dtemp_week,dwindspeed_quarter,dwindspeed_hour,dwindspeed_day,dwindspeed_week,dwindspeed_100m_quarter,dwindspeed_100m_hour,dwindspeed_100m_day,dwindspeed_100m_week,dwinddeg_quarter,dwinddeg_hour,dwinddeg_day,dwinddeg_week,dpressure_quarter,dpressure_hour,dpressure_day,dpressure_week,dhumidity_quarter,dhumidity_hour,dhumidity_day,dhumidity_week,dair_density_quarter,dair_density_hour,dair_density_day,dair_density_week +index,day_ahead_electricity_price,clouds,radiation,temp,winddeg,windspeed,pressure,humidity,rain,mxlD,snowDepth,clearSky_ulf,clearSky_dlf,windspeed_100m,sjv_E1A,sjv_E1B,sjv_E1C,sjv_E2A,sjv_E2B,sjv_E3A,sjv_E3B,sjv_E3C,sjv_E3D,sjv_E4A,T-900min,T-780min,T-15min,T-660min,T-540min,T-30min,T-1440min,T-420min,T-1320min,T-300min,T-45min,T-1200min,T-180min,T-1080min,T-60min,T-960min,T-2880min,T-840min,T-720min,T-600min,T-480min,T-1380min,T-360min,T-1260min,T-240min,T-2160min,T-1140min,T-120min,T-1020min,T-1d,T-2d,T-3d,T-4d,T-5d,T-6d,T-7d,T-8d,T-9d,T-10d,T-11d,T-12d,T-13d,T-14d,IsWeekendDay,IsWeekDay,IsMonday,IsTuesday,IsWednesday,IsThursday,IsFriday,IsSaturday,IsSunday,Month,Quarter,IsChristmas,Is00Hour,Is01Hour,Is02Hour,Is03Hour,Is04Hour,Is05Hour,Is06Hour,Is07Hour,Is08Hour,Is09Hour,Is10Hour,Is11Hour,Is12Hour,Is13Hour,Is14Hour,Is15Hour,Is16Hour,Is17Hour,Is18Hour,Is19Hour,Is20Hour,Is21Hour,Is22Hour,Is23Hour,windspeed_100mExtrapolated,windPowerFit_extrapolated,windpowerFit_harm_arome,saturation_pressure,vapour_pressure,dewpoint,air_density,dtemp_quarter,dtemp_hour,dtemp_day,dtemp_week,dwindspeed_quarter,dwindspeed_hour,dwindspeed_day,dwindspeed_week,dwindspeed_100m_quarter,dwindspeed_100m_hour,dwindspeed_100m_day,dwindspeed_100m_week,dwinddeg_quarter,dwinddeg_hour,dwinddeg_day,dwinddeg_week,dpressure_quarter,dpressure_hour,dpressure_day,dpressure_week,dhumidity_quarter,dhumidity_hour,dhumidity_day,dhumidity_week,dair_density_quarter,dair_density_hour,dair_density_day,dair_density_week 2020-01-02 14:15:00+00:00,,100.0,87307.71875,5.135711669921875,330.55521392822266,,102121.5546875,0.9630825370550156,,1217.462875366211,0.0,0.8048269748687744,9.19796633720398,9.129966259002686,3.578e-05,3.855e-05,3.476e-05,2.962e-05,3.054e-05,1.816e-05,1.979e-05,1.979e-05,2.571e-05,6.024e-05,7.873333333333333,31.686666666666667,37.6,32.15,33.92333333333333,38.04666666666667,34.34666666666667,37.843333333333334,31.97,38.446666666666665,38.29,8.839999999999998,38.169999999999995,7.466666666666665,38.016666666666666,8.076666666666668,34.53333333333333,23.87333333333333,31.9,32.36,35.38333333333333,32.876666666666665,37.74333333333333,8.870000000000001,38.413333333333334,31.836666666666666,8.083333333333334,38.14666666666667,8.14,34.34666666666667,34.53333333333333,37.53,38.35666666666667,33.836666666666666,34.85333333333333,34.28333333333333,33.74,37.62,37.730000000000004,33.94333333333333,34.45333333333333,39.166666666666664,38.093333333333334,False,True,False,False,False,True,False,False,False,1,1,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,True,False,False,False,False,False,False,False,False,False,,,0.6690336382064527,8.815313721120072,8.489874703472209,4.597185695949985,1.1554210812714338,0.01153564453125,0.19317626953125,1.1988525390625,0.09820556640625,,,,,0.2862677574157715,0.5278754234313965,4.101582050323486,1.275410771369934,-0.28444671630859375,-6.377281188964844,323.67613220214844,274.4930648803711,-14.078125,-65.763671875,-915.0546875,105.66015625,0.0008316487073898315,-0.006531417369842529,0.09409430623054504,0.12278266251087189,-0.00020725164089374637,-0.0015474556236589887,-0.015403507671178485,0.0007831801747628653 2020-01-02 14:30:00+00:00,,100.0,65007.375,5.147247314453125,330.27076721191406,,102107.4765625,0.9639141857624054,,1001.8500671386719,0.0,1.0695586204528809,9.464561939239502,9.416234016418457,3.578e-05,3.855e-05,3.476e-05,2.962e-05,3.054e-05,1.816e-05,1.979e-05,1.979e-05,2.571e-05,6.024e-05,7.913333333333334,31.50333333333333,37.550000000000004,31.939999999999998,34.61666666666667,37.6,34.32666666666667,37.97,31.72666666666666,38.46,38.04666666666667,8.88666666666667,38.16666666666667,7.233333333333336,38.29,7.933333333333335,34.88333333333333,31.883333333333333,32.093333333333334,32.379999999999995,35.736666666666665,32.66,37.92,8.803333333333335,38.70333333333333,31.833333333333332,7.806666666666665,38.34,7.936666666666667,34.32666666666667,34.88333333333333,37.736666666666665,38.39,33.913333333333334,35.49333333333333,34.74666666666667,33.876666666666665,37.403333333333336,37.443333333333335,33.05,34.586666666666666,39.263333333333335,37.89666666666666,False,True,False,False,False,True,False,False,False,1,1,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,True,False,False,False,False,False,False,False,False,False,,,0.7096942131928761,8.822403770790025,8.504040147188242,4.621002789735361,1.1552138467408297,0.01153564453125,0.1441650390625,1.455322265625,0.1512451171875,,,,,0.2862677574157715,0.733607292175293,3.968555450439453,1.4573724269866943,-0.28444671630859375,-4.6307830810546875,320.1625213623047,269.04998779296875,-14.078125,-62.61328125,-930.859375,109.53125,0.0008316487073898315,-0.003245413303375244,0.08826178312301636,0.1157674491405487,-0.00020723453060411678,-0.001307760801531499,-0.016666548757323207,0.0006070461433393959 2020-01-02 14:45:00+00:00,,100.0,42707.03125,5.158782958984375,329.98632049560547,,102093.3984375,0.9647458344697952,,786.2372589111328,0.0,1.3342902660369873,9.731157541275024,9.702501773834229,3.578e-05,3.855e-05,3.476e-05,2.962e-05,3.054e-05,1.816e-05,1.979e-05,1.979e-05,2.571e-05,6.024e-05,7.803333333333331,31.623333333333335,37.550000000000004,31.78333333333333,35.17666666666667,37.550000000000004,34.42666666666666,37.92333333333333,31.923333333333332,38.36,37.6,8.456666666666665,38.236666666666665,7.136666666666663,38.04666666666667,7.909999999999998,35.18666666666667,31.82,31.973333333333336,32.85333333333333,36.52333333333333,33.02333333333333,38.54333333333333,8.626666666666663,38.61333333333334,31.660000000000004,7.739999999999998,38.00333333333333,7.790000000000003,34.42666666666666,35.18666666666667,38.123333333333335,38.309999999999995,33.92,35.52333333333333,35.17,33.78333333333333,37.699999999999996,37.406666666666666,32.68666666666666,34.583333333333336,39.21,38.69333333333333,False,True,False,False,False,True,False,False,False,1,1,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,True,False,False,False,False,False,False,False,False,False,,,0.7472466446725978,8.82949885677055,8.518222242525209,4.644812793077298,1.155006629318322,0.01153564453125,0.09515380859375,1.7117919921875,0.20428466796875,,,,,0.2862677574157715,0.9393391609191895,3.83552885055542,1.6393340826034546,-0.28444671630859375,-2.8842849731445312,316.64891052246094,263.6069107055664,-14.078125,-59.462890625,-946.6640625,113.40234375,0.0008316487073898315,4.0590763092041016e-05,0.08242926001548767,0.10875223577022552,-0.00020721742250762176,-0.001068243604647856,-0.017931442600870984,0.00043093703837282504 diff --git a/test/unit/data/input_data.csv b/test/unit/data/input_data.csv index 8ca1f5aa7..2a43df7d1 100644 --- a/test/unit/data/input_data.csv +++ b/test/unit/data/input_data.csv @@ -1,4 +1,4 @@ -index,load,APX,clearSky_dlf,clearSky_ulf,clouds,humidity,mxlD,pressure,radiation,rain,snowDepth,temp,winddeg,windspeed,windspeed_100m,sjv_E1A,sjv_E1B,sjv_E1C,sjv_E2A,sjv_E2B,sjv_E3A,sjv_E3B,sjv_E3C,sjv_E3D,sjv_E4A +index,load,day_ahead_electricity_price,clearSky_dlf,clearSky_ulf,clouds,humidity,mxlD,pressure,radiation,rain,snowDepth,temp,winddeg,windspeed,windspeed_100m,sjv_E1A,sjv_E1B,sjv_E1C,sjv_E2A,sjv_E2B,sjv_E3A,sjv_E3B,sjv_E3C,sjv_E3D,sjv_E4A 2019-11-28 14:45:00+00:00,-16.17,,,,,,,,,,,,,,,,,,,,,,,, 2019-11-28 15:00:00+00:00,-12.986666666666666,47.7,-5.5954742431640625,9.330299377441406,100.0,0.9209308624267578,470.93084716796875,99348.0,5006.3125,0.48,0.0,9.849761962890625,76.83540344238281,4.125,7.760239601135254,3.101e-05,3.238e-05,3.25e-05,3.584e-05,3.673e-05,5.097e-05,4.572e-05,4.572e-05,3.118e-05,0.0 2019-11-28 15:15:00+00:00,-11.153333333333334,47.7,-5.878936767578125,8.157358407974243,100.0,0.9186419546604156,459.35560607910156,99377.56640625,3764.171875,0.505,0.0,9.690399169921875,70.78819465637207,4.05625,7.924123287200928,3.223e-05,3.379e-05,3.402e-05,3.707e-05,3.809e-05,4.919e-05,4.565e-05,4.565e-05,3.136e-05,0.0 diff --git a/test/unit/data/input_data_multi_horizon_features.csv b/test/unit/data/input_data_multi_horizon_features.csv index 731a648e5..5c752b748 100644 --- a/test/unit/data/input_data_multi_horizon_features.csv +++ b/test/unit/data/input_data_multi_horizon_features.csv @@ -1,4 +1,4 @@ -index,load,APX,IsSunday,IsWeekDay,IsWeekendDay,Month,Quarter,T-1020min,T-1080min,T-10d,T-1140min,T-11d,T-1200min,T-120min,T-1260min,T-12d,T-1320min,T-1380min,T-13d,T-14d,T-15min,T-180min,T-1d,T-240min,T-2d,T-300min,T-30min,T-360min,T-3d,T-420min,T-45min,T-480min,T-4d,T-540min,T-5d,T-600min,T-60min,T-660min,T-6d,T-720min,T-780min,T-7d,T-840min,T-8d,T-900min,T-960min,T-9d,air_density,clearSky_dlf,clearSky_ulf,clouds,day0fweek_cosine,day0fweek_sine,daylight_continuous,dewpoint,dni,gti,humidity,is_bevrijdingsdag,is_bouwvakmidden,is_bouwvaknoord,is_bouwvakzuid,is_bridgeday,is_eerste_kerstdag,is_eerste_paasdag,is_eerste_pinksterdag,is_goede_vrijdag,is_hemelvaart,is_herfstvakantiemidden,is_herfstvakantienoord,is_herfstvakantiezuid,is_kerstvakantie,is_koningsdag,is_meivakantie,is_national_holiday,is_nieuwjaarsdag,is_schoolholiday,is_tweede_kerstdag,is_tweede_paasdag,is_tweede_pinksterdag,is_voorjaarsvakantiemidden,is_voorjaarsvakantienoord,is_voorjaarsvakantiezuid,is_zomervakantiemidden,is_zomervakantienoord,is_zomervakantiezuid,month_cosine,month_sine,mxlD,pressure,radiation,rain,saturation_pressure,season_cosine,season_sine,sjv_E1A,sjv_E1B,sjv_E1C,sjv_E2A,sjv_E2B,sjv_E3A,sjv_E3B,sjv_E3C,sjv_E3D,sjv_E4A,snowDepth,temp,time0fday_cosine,time0fday_sine,vapour_pressure,windPowerFit_extrapolated,winddeg,windpowerFit_harm_arome,windspeed,windspeed_100m,windspeed_100mExtrapolated,horizon +index,load,day_ahead_electricity_price,IsSunday,IsWeekDay,IsWeekendDay,Month,Quarter,T-1020min,T-1080min,T-10d,T-1140min,T-11d,T-1200min,T-120min,T-1260min,T-12d,T-1320min,T-1380min,T-13d,T-14d,T-15min,T-180min,T-1d,T-240min,T-2d,T-300min,T-30min,T-360min,T-3d,T-420min,T-45min,T-480min,T-4d,T-540min,T-5d,T-600min,T-60min,T-660min,T-6d,T-720min,T-780min,T-7d,T-840min,T-8d,T-900min,T-960min,T-9d,air_density,clearSky_dlf,clearSky_ulf,clouds,day0fweek_cosine,day0fweek_sine,daylight_continuous,dewpoint,dni,gti,humidity,is_bevrijdingsdag,is_bouwvakmidden,is_bouwvaknoord,is_bouwvakzuid,is_bridgeday,is_eerste_kerstdag,is_eerste_paasdag,is_eerste_pinksterdag,is_goede_vrijdag,is_hemelvaart,is_herfstvakantiemidden,is_herfstvakantienoord,is_herfstvakantiezuid,is_kerstvakantie,is_koningsdag,is_meivakantie,is_national_holiday,is_nieuwjaarsdag,is_schoolholiday,is_tweede_kerstdag,is_tweede_paasdag,is_tweede_pinksterdag,is_voorjaarsvakantiemidden,is_voorjaarsvakantienoord,is_voorjaarsvakantiezuid,is_zomervakantiemidden,is_zomervakantienoord,is_zomervakantiezuid,month_cosine,month_sine,mxlD,pressure,radiation,rain,saturation_pressure,season_cosine,season_sine,sjv_E1A,sjv_E1B,sjv_E1C,sjv_E2A,sjv_E2B,sjv_E3A,sjv_E3B,sjv_E3C,sjv_E3D,sjv_E4A,snowDepth,temp,time0fday_cosine,time0fday_sine,vapour_pressure,windPowerFit_extrapolated,winddeg,windpowerFit_harm_arome,windspeed,windspeed_100m,windspeed_100mExtrapolated,horizon 2019-11-28 14:45:00+00:00,-16.17,,False,True,False,11,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-0.900968867902419,0.43388373911755823,-0.2847783939631754,,0.0,,,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,0.8660254037844384,-0.5000000000000004,,,,,,0.8408305333122887,-0.5412984521036173,,,,,,,,,,,,,-0.7518398074789777,-0.6593458151000685,,,,,,,,0.25 2019-11-28 15:00:00+00:00,-12.986666666666666,47.7,False,True,False,11,4,,,,,,,,,,,,,,-16.17,,,,,,,,,,,,,,,,,,,,,,,,,,,1.1053045611739607,-5.595474243164063,9.330299377441406,100.0,-0.900968867902419,0.43388373911755823,-0.37538383477921167,8.62815733471107,0.0,7.517884457614255,0.9209308624267578,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,0.8660254037844384,-0.5000000000000004,470.9308471679688,99348.0,5006.3125,0.48,12.168672929456537,0.8408305333122887,-0.5412984521036173,3.101e-05,3.238e-05,3.25e-05,3.584e-05,3.673e-05,5.097e-05,4.572e-05,4.572e-05,3.118e-05,0.0,0.0,9.849761962890623,-0.7071067811865477,-0.7071067811865475,11.20650645551355,0.17488419370941155,76.83540344238281,0.44876028633199644,4.125,7.760239601135254,5.733554603755082,0.25 2019-11-28 15:15:00+00:00,-11.153333333333334,47.7,False,True,False,11,4,,,,,,,,,,,,,,-12.986666666666666,,,,,,-16.17,,,,,,,,,,,,,,,,,,,,,1.1062570921140946,-5.878936767578125,8.157358407974243,100.0,-0.900968867902419,0.43388373911755823,-0.46065954378253987,8.433669711208791,0.0,2.4575772586080267,0.9186419546604156,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,0.8660254037844384,-0.5000000000000004,459.3556060791016,99377.56640625,3764.171875,0.505,12.039163178537217,0.8408305333122887,-0.5412984521036173,3.223e-05,3.379e-05,3.402e-05,3.707e-05,3.809e-05,4.919e-05,4.565e-05,4.565e-05,3.136e-05,0.0,0.0,9.690399169921877,-0.6593458151000694,-0.7518398074789769,11.059680394807131,0.1659161937158718,70.78819465637207,0.4758033809928022,4.05625,7.924123287200928,5.637995360359165,0.25 diff --git a/test/unit/data/input_data_train.csv b/test/unit/data/input_data_train.csv index 17d99d4d6..2f4ea31e3 100644 --- a/test/unit/data/input_data_train.csv +++ b/test/unit/data/input_data_train.csv @@ -1,4 +1,4 @@ -index,load,APX,RH,clearSky_dlf,clearSky_ulf,cloud,clouds,created,humidity,mxlD,pressure,radiation,rain,snowDepth,source_run,ssrunoff,temp,winddeg,windspeed,sjv_E1A,sjv_E1B,sjv_E1C,sjv_E2A,sjv_E2B,sjv_E3A,sjv_E3B,sjv_E3C,sjv_E3D,sjv_E4A,T-15min,T-30min,T-45min,T-60min,T-120min,T-180min,T-240min,T-300min,T-360min,T-420min,T-480min,T-540min,T-600min,T-660min,T-720min,T-780min,T-840min,T-900min,T-960min,T-1020min,T-1080min,T-1140min,T-1200min,T-1260min,T-1320min,T-1380min,T-1d,T-2d,T-3d,T-4d,T-5d,T-6d,T-7d,T-8d,T-9d,T-10d,T-11d,T-12d,T-13d,T-14d,IsWeekendDay,IsWeekDay,IsMonday,IsTuesday,IsWednesday,IsThursday,IsFriday,IsSaturday,IsSunday,Month,Quarter,IsChristmas,Is00Hour,Is01Hour,Is02Hour,Is03Hour,Is04Hour,Is05Hour,Is06Hour,Is07Hour,Is08Hour,Is09Hour,Is10Hour,Is11Hour,Is12Hour,Is13Hour,Is14Hour,Is15Hour,Is16Hour,Is17Hour,Is18Hour,Is19Hour,Is20Hour,Is21Hour,Is22Hour,Is23Hour,windspeed_100mExtrapolated,windPowerFit,Horizon +index,load,day_ahead_electricity_price,RH,clearSky_dlf,clearSky_ulf,cloud,clouds,created,humidity,mxlD,pressure,radiation,rain,snowDepth,source_run,ssrunoff,temp,winddeg,windspeed,sjv_E1A,sjv_E1B,sjv_E1C,sjv_E2A,sjv_E2B,sjv_E3A,sjv_E3B,sjv_E3C,sjv_E3D,sjv_E4A,T-15min,T-30min,T-45min,T-60min,T-120min,T-180min,T-240min,T-300min,T-360min,T-420min,T-480min,T-540min,T-600min,T-660min,T-720min,T-780min,T-840min,T-900min,T-960min,T-1020min,T-1080min,T-1140min,T-1200min,T-1260min,T-1320min,T-1380min,T-1d,T-2d,T-3d,T-4d,T-5d,T-6d,T-7d,T-8d,T-9d,T-10d,T-11d,T-12d,T-13d,T-14d,IsWeekendDay,IsWeekDay,IsMonday,IsTuesday,IsWednesday,IsThursday,IsFriday,IsSaturday,IsSunday,Month,Quarter,IsChristmas,Is00Hour,Is01Hour,Is02Hour,Is03Hour,Is04Hour,Is05Hour,Is06Hour,Is07Hour,Is08Hour,Is09Hour,Is10Hour,Is11Hour,Is12Hour,Is13Hour,Is14Hour,Is15Hour,Is16Hour,Is17Hour,Is18Hour,Is19Hour,Is20Hour,Is21Hour,Is22Hour,Is23Hour,windspeed_100mExtrapolated,windPowerFit,Horizon 2019-05-10 07:15:00+00:00,12.736666666666666,50.41,,,,,,,,,,,,,,,,,,3.027e-05,3.088e-05,3.188e-05,3.018e-05,3.073e-05,2.437e-05,2.425e-05,2.425e-05,3.077e-05,0.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,5.023333333333333,10.096666666666666,8.56,18.74,16.346666666666668,17.426666666666666,14.943333333333333,11.246666666666668,16.32,15.073333333333332,13.050000000000002,15.770000000000001,14.81,False,True,False,False,False,False,True,False,False,5,2,False,False,False,False,False,False,False,False,True,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,,,47.0 2019-05-10 07:15:00+00:00,12.736666666666666,50.41,,,,,,,,,,,,,,,,,,3.027e-05,3.088e-05,3.188e-05,3.018e-05,3.073e-05,2.437e-05,2.425e-05,2.425e-05,3.077e-05,0.0,13.26,10.723333333333334,11.003333333333332,11.956666666666669,4.323333333333333,0.75,-1.7,-1.7,-2.49,-2.89,-2.7133333333333334,-3.7000000000000006,-4.5,-1.2933333333333332,-0.89,1.0733333333333333,10.43,8.136666666666667,5.753333333333334,7.863333333333333,6.736666666666667,4.406666666666666,5.833333333333333,10.693333333333333,5.873333333333334,6.273333333333333,8.256666666666666,5.023333333333333,10.096666666666666,8.56,18.74,16.346666666666668,17.426666666666666,14.943333333333333,11.246666666666668,16.32,15.073333333333332,13.050000000000002,15.770000000000001,14.81,False,True,False,False,False,False,True,False,False,5,2,False,False,False,False,False,False,False,False,True,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,,,0.25 2019-05-10 07:30:00+00:00,12.93,50.41,,,,,,,,,,,,,,,,,,3.129e-05,3.169e-05,3.266e-05,3.041e-05,3.076e-05,2.502e-05,2.483e-05,2.483e-05,3.081e-05,0.0,12.736666666666666,13.26,10.723333333333334,11.003333333333332,7.609999999999999,0.8866666666666667,-2.296666666666667,-1.7,-2.49,-2.89,-2.2266666666666666,-3.41,-4.366666666666666,-1.8633333333333333,-0.89,-0.49,10.213333333333333,8.356666666666667,6.413333333333334,8.716666666666667,8.813333333333333,6.506666666666667,5.753333333333333,11.133333333333335,6.78,6.43,7.1000000000000005,6.343333333333334,8.636666666666667,8.273333333333333,18.01,16.343333333333334,14.413333333333332,14.443333333333333,11.156666666666666,16.206666666666667,16.25,15.01,16.11,14.81,False,True,False,False,False,False,True,False,False,5,2,False,False,False,False,False,False,False,False,True,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,,,0.25 diff --git a/test/unit/data/input_data_with_features.csv b/test/unit/data/input_data_with_features.csv index cb17cd142..dfa88ed31 100644 --- a/test/unit/data/input_data_with_features.csv +++ b/test/unit/data/input_data_with_features.csv @@ -1,4 +1,4 @@ -index,load,APX,clearSky_dlf,clearSky_ulf,clouds,humidity,mxlD,pressure,radiation,rain,snowDepth,temp,winddeg,windspeed,windspeed_100m,sjv_E1A,sjv_E1B,sjv_E1C,sjv_E2A,sjv_E2B,sjv_E3A,sjv_E3B,sjv_E3C,sjv_E3D,sjv_E4A,T-1d,T-2d,T-3d,T-4d,T-5d,T-6d,T-7d,T-8d,T-9d,T-10d,T-11d,T-12d,T-13d,T-14d,IsWeekendDay,IsWeekDay,IsSunday,Month,Quarter,is_national_holiday,is_nieuwjaarsdag,is_goede_vrijdag,is_eerste_paasdag,is_tweede_paasdag,is_koningsdag,is_bevrijdingsdag,is_hemelvaart,is_eerste_pinksterdag,is_tweede_pinksterdag,is_eerste_kerstdag,is_tweede_kerstdag,is_bridgeday,is_schoolholiday,is_zomervakantiezuid,is_bouwvaknoord,is_herfstvakantienoord,is_meivakantie,is_zomervakantiemidden,is_bouwvakzuid,is_herfstvakantiezuid,is_voorjaarsvakantiezuid,is_bouwvakmidden,is_zomervakantienoord,is_kerstvakantie,is_voorjaarsvakantiemidden,is_herfstvakantiemidden,is_voorjaarsvakantienoord,windspeed_100mExtrapolated,windPowerFit_extrapolated,windpowerFit_harm_arome,saturation_pressure,vapour_pressure,dewpoint,air_density,dni,gti,season_sine,season_cosine,day0fweek_sine,day0fweek_cosine,month_sine,month_cosine,time0fday_sine,time0fday_cosine,daylight_continuous +index,load,day_ahead_electricity_price,clearSky_dlf,clearSky_ulf,clouds,humidity,mxlD,pressure,radiation,rain,snowDepth,temp,winddeg,windspeed,windspeed_100m,sjv_E1A,sjv_E1B,sjv_E1C,sjv_E2A,sjv_E2B,sjv_E3A,sjv_E3B,sjv_E3C,sjv_E3D,sjv_E4A,T-1d,T-2d,T-3d,T-4d,T-5d,T-6d,T-7d,T-8d,T-9d,T-10d,T-11d,T-12d,T-13d,T-14d,IsWeekendDay,IsWeekDay,IsSunday,Month,Quarter,is_national_holiday,is_nieuwjaarsdag,is_goede_vrijdag,is_eerste_paasdag,is_tweede_paasdag,is_koningsdag,is_bevrijdingsdag,is_hemelvaart,is_eerste_pinksterdag,is_tweede_pinksterdag,is_eerste_kerstdag,is_tweede_kerstdag,is_bridgeday,is_schoolholiday,is_zomervakantiezuid,is_bouwvaknoord,is_herfstvakantienoord,is_meivakantie,is_zomervakantiemidden,is_bouwvakzuid,is_herfstvakantiezuid,is_voorjaarsvakantiezuid,is_bouwvakmidden,is_zomervakantienoord,is_kerstvakantie,is_voorjaarsvakantiemidden,is_herfstvakantiemidden,is_voorjaarsvakantienoord,windspeed_100mExtrapolated,windPowerFit_extrapolated,windpowerFit_harm_arome,saturation_pressure,vapour_pressure,dewpoint,air_density,dni,gti,season_sine,season_cosine,day0fweek_sine,day0fweek_cosine,month_sine,month_cosine,time0fday_sine,time0fday_cosine,daylight_continuous 2019-11-28 14:45:00+00:00,-16.17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,False,True,False,11,4,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,,,,,,,,0.0,,-0.5412984521036173,0.8408305333122887,0.43388373911755823,-0.900968867902419,-0.5000000000000004,0.8660254037844384,-0.6593458151000685,-0.7518398074789777,-0.2847783939631754 2019-11-28 15:00:00+00:00,-12.986666666666666,47.7,-5.595474243164063,9.330299377441406,100.0,0.9209308624267578,470.9308471679688,99348.0,5006.3125,0.48,0.0,9.849761962890623,76.83540344238281,4.125,7.760239601135254,3.101e-05,3.238e-05,3.25e-05,3.584e-05,3.673e-05,5.097e-05,4.572e-05,4.572e-05,3.118e-05,0.0,,,,,,,,,,,,,,,False,True,False,11,4,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,5.733554603755082,0.17488419370941155,0.44876028633199644,12.168672929456537,11.20650645551355,8.62815733471107,1.1053045611739607,0.0,7.517884457614255,-0.5412984521036173,0.8408305333122887,0.43388373911755823,-0.900968867902419,-0.5000000000000004,0.8660254037844384,-0.7071067811865475,-0.7071067811865477,-0.37538383477921167 2019-11-28 15:15:00+00:00,-11.153333333333334,47.7,-5.878936767578125,8.157358407974243,100.0,0.9186419546604156,459.3556060791016,99377.56640625,3764.171875,0.505,0.0,9.690399169921877,70.78819465637207,4.05625,7.924123287200928,3.223e-05,3.379e-05,3.402e-05,3.707e-05,3.809e-05,4.919e-05,4.565e-05,4.565e-05,3.136e-05,0.0,,,,,,,,,,,,,,,False,True,False,11,4,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,5.637995360359165,0.1659161937158718,0.4758033809928022,12.039163178537217,11.059680394807131,8.433669711208791,1.1062570921140946,0.0,2.4575772586080267,-0.5412984521036173,0.8408305333122887,0.43388373911755823,-0.900968867902419,-0.5000000000000004,0.8660254037844384,-0.7518398074789769,-0.6593458151000694,-0.46065954378253987 diff --git a/test/unit/data/reference_sets/307-test-data.csv b/test/unit/data/reference_sets/307-test-data.csv index 6c2893b41..7940d2d10 100644 --- a/test/unit/data/reference_sets/307-test-data.csv +++ b/test/unit/data/reference_sets/307-test-data.csv @@ -1,4 +1,4 @@ -,load,APX,clouds,radiation,temp,winddeg,windspeed,windspeed_100m,pressure,humidity,rain,mxlD,snowDepth,clearSky_ulf,clearSky_dlf,sjv_E1A,sjv_E1B,sjv_E1C,sjv_E2A,sjv_E2B,sjv_E3A,sjv_E3B,sjv_E3C,sjv_E3D,sjv_E4A +,load,day_ahead_electricity_price,clouds,radiation,temp,winddeg,windspeed,windspeed_100m,pressure,humidity,rain,mxlD,snowDepth,clearSky_ulf,clearSky_dlf,sjv_E1A,sjv_E1B,sjv_E1C,sjv_E2A,sjv_E2B,sjv_E3A,sjv_E3B,sjv_E3C,sjv_E3D,sjv_E4A 2020-10-31 00:45:00+00:00,-3.986666667,31.5,99.99008179,4.95E-11,13.10449219,253.166378,2.814583333,10.00098062,102182.334,0.902304962,0.055,669.7191772,0,4.789171219,5.209542036,2.09E-05,2.21E-05,2.22E-05,2.39E-05,2.48E-05,1.75E-05,1.89E-05,1.89E-05,2.54E-05,6.02E-05 2020-10-31 01:00:00+00:00,-4.376666667,29.8,99.98779297,4.95E-11,13.07714844,254.4995575,2.802777778,9.745148659,102186.0156,0.901912093,0.05,603.3598022,0,4.722950935,5.217845917,1.98E-05,2.10E-05,2.09E-05,2.34E-05,2.43E-05,1.71E-05,1.89E-05,1.89E-05,2.55E-05,6.02E-05 2020-10-31 01:15:00+00:00,-0.886666667,29.8,82.94525146,4.95E-11,12.96161652,259.2348213,2.8,9.718639851,102182.0059,0.904162839,0.0375,588.6341553,0,4.454215765,5.117064238,1.94E-05,2.07E-05,2.02E-05,2.32E-05,2.41E-05,1.72E-05,1.88E-05,1.88E-05,2.55E-05,6.02E-05 diff --git a/test/unit/data/reference_sets/307-train-data.csv b/test/unit/data/reference_sets/307-train-data.csv index a6c165a09..21617c335 100644 --- a/test/unit/data/reference_sets/307-train-data.csv +++ b/test/unit/data/reference_sets/307-train-data.csv @@ -1,4 +1,4 @@ -,load,APX,clouds,radiation,temp,winddeg,windspeed,windspeed_100m,pressure,humidity,rain,mxlD,snowDepth,clearSky_ulf,clearSky_dlf,sjv_E1A,sjv_E1B,sjv_E1C,sjv_E2A,sjv_E2B,sjv_E3A,sjv_E3B,sjv_E3C,sjv_E3D,sjv_E4A +,load,day_ahead_electricity_price,clouds,radiation,temp,winddeg,windspeed,windspeed_100m,pressure,humidity,rain,mxlD,snowDepth,clearSky_ulf,clearSky_dlf,sjv_E1A,sjv_E1B,sjv_E1C,sjv_E2A,sjv_E2B,sjv_E3A,sjv_E3B,sjv_E3C,sjv_E3D,sjv_E4A 2020-08-15 00:00:00+00:00,7.126666667,31.77,98.87084961,4.95E-11,18.79547119,168.2152405,1.033333333,3.913109303,101417.7891,0.969513774,0,89.63739777,0,1.721135139,1.373418808,1.88E-05,1.98E-05,2.03E-05,2.01E-05,2.09E-05,1.63E-05,1.89E-05,1.89E-05,2.56E-05,6.02E-05 2020-08-15 00:15:00+00:00,6.886666667,31.77,98.78921509,4.95E-11,18.73562622,172.39888,1.005555556,4.156745434,101408.3359,0.967427284,0,95.01239777,0,1.966004372,1.562273979,1.79E-05,1.88E-05,1.94E-05,1.99E-05,2.06E-05,1.62E-05,1.88E-05,1.88E-05,2.55E-05,6.02E-05 2020-08-15 00:30:00+00:00,6.833333333,31.77,98.70758057,4.95E-11,18.67578125,176.5825195,0.977777778,4.400381565,101398.8828,0.965340793,0,100.3873978,0,2.210873604,1.75112915,1.72E-05,1.82E-05,1.86E-05,1.97E-05,2.04E-05,1.61E-05,1.88E-05,1.88E-05,2.56E-05,6.02E-05 diff --git a/test/unit/feature_engineering/test_apply_features.py b/test/unit/feature_engineering/test_apply_features.py index 5a8c2c56c..662a8e85c 100644 --- a/test/unit/feature_engineering/test_apply_features.py +++ b/test/unit/feature_engineering/test_apply_features.py @@ -146,7 +146,7 @@ def test_train_feature_applicator_with_latency(self): ).tz_localize("UTC"), data={ "load": [10, 15, 20, 15], - "APX": [1, 2, 3, 4], + "day_ahead_electricity_price": [1, 2, 3, 4], }, ) horizons = [0.25, 47] @@ -159,14 +159,18 @@ def test_train_feature_applicator_with_latency(self): # Skip first row, since T-30min not available for first row self.assertTrue( - input_data_with_features.loc[horizon == 47, ["APX", "T-30min"]] + input_data_with_features.loc[ + horizon == 47, ["day_ahead_electricity_price", "T-30min"] + ] .iloc[1:,] .isna() .all() .all() ) self.assertFalse( - input_data_with_features.loc[horizon == 0.25, ["APX", "T-30min"]] + input_data_with_features.loc[ + horizon == 0.25, ["day_ahead_electricity_price", "T-30min"] + ] .iloc[1:,] .isna() .any() diff --git a/test/unit/feature_engineering/test_data_preparation.py b/test/unit/feature_engineering/test_data_preparation.py index 3881b3559..1d1dfa94c 100644 --- a/test/unit/feature_engineering/test_data_preparation.py +++ b/test/unit/feature_engineering/test_data_preparation.py @@ -20,7 +20,7 @@ def setUp(self, _get_model_uri_mock) -> None: self.input_data.iloc[-5:, 0] = np.nan self.model = MagicMock() - self.model.feature_names = ["apx"] + self.model.feature_names = ["day_ahead_electricity_price"] def test_legacy_prepare_forecast_no_model(self): # Test the error if no model is provided for forecast diff --git a/test/unit/feature_engineering/test_general_extract_minute_features.py b/test/unit/feature_engineering/test_general_extract_minute_features.py index 531877411..bcd8e8c51 100644 --- a/test/unit/feature_engineering/test_general_extract_minute_features.py +++ b/test/unit/feature_engineering/test_general_extract_minute_features.py @@ -11,7 +11,7 @@ class TestGeneralExtractMinuteFeatures(BaseTestCase): def setUp(self): super().setUp() self.feature_names = [ - "APX", + "day_ahead_electricity_price", "clouds", "radiation", "temp", diff --git a/test/unit/model/regressors/test_linear_quantile.py b/test/unit/model/regressors/test_linear_quantile.py index 1283f4c8e..6f7fe0df5 100644 --- a/test/unit/model/regressors/test_linear_quantile.py +++ b/test/unit/model/regressors/test_linear_quantile.py @@ -180,13 +180,21 @@ def test_feature_clipper(self): { "A": [1.0, 2.0, 3.0, 4.0, 5.0], "B": [10.0, 20.0, 30.0, 40.0, 50.0], - "APX": [-10.0, 0.0, 50.0, 100.0, 200.0], # Feature to be clipped + "day_ahead_electricity_price": [ + -10.0, + 0.0, + 50.0, + 100.0, + 200.0, + ], # Feature to be clipped } ) y = pd.Series([1, 2, 3, 4, 5]) - # Initialize the model with clipping for 'APX' feature - model = LinearQuantileOpenstfRegressor(clipped_features=["APX"]) + # Initialize the model with clipping for 'day_ahead_electricity_price' feature + model = LinearQuantileOpenstfRegressor( + clipped_features=["day_ahead_electricity_price"] + ) # Fit the model model.fit(X, y) @@ -196,14 +204,17 @@ def test_feature_clipper(self): { "A": [2.5, 3.5], "B": [25.0, 35.0], - "APX": [-20.0, 250.0], # Values outside the training range + "day_ahead_electricity_price": [ + -20.0, + 250.0, + ], # Values outside the training range } ) - # Check if the 'APX' feature was clipped during prediction + # Check if the 'day_ahead_electricity_price' feature was clipped during prediction clipped_X = model.feature_clipper_.transform(X_test) - self.assertTrue(clipped_X["APX"].min() >= -10.0) - self.assertTrue(clipped_X["APX"].max() <= 200.0) + self.assertTrue(clipped_X["day_ahead_electricity_price"].min() >= -10.0) + self.assertTrue(clipped_X["day_ahead_electricity_price"].max() <= 200.0) # Make predictions y_pred = model.predict(X_test) diff --git a/test/unit/tasks/test_create_forecast.py b/test/unit/tasks/test_create_forecast.py index f1683c5b4..6fa4ea859 100644 --- a/test/unit/tasks/test_create_forecast.py +++ b/test/unit/tasks/test_create_forecast.py @@ -54,8 +54,8 @@ def test_create_forecast_task_happy_flow_1(self): create_forecast_task(self.pj, context) # Assert - self.assertEqual(context.mock_calls[1][0], "database.write_forecast") - self.assertEqual(context.mock_calls[1].args[0], FORECAST_MOCK) + self.assertEqual(context.mock_calls[3][0], "database.write_forecast") + self.assertEqual(context.mock_calls[3].args[0], FORECAST_MOCK) @patch( "openstef.tasks.create_forecast.create_forecast_pipeline", @@ -74,8 +74,8 @@ def test_create_forecast_task_happy_flow(self): self.assertNotEqual( self.pj.id, context.config.externally_posted_forecasts_pids[0] ) - self.assertEqual(context.mock_calls[1][0], "database.write_forecast") - self.assertEqual(context.mock_calls[1].args[0], FORECAST_MOCK) + self.assertEqual(context.mock_calls[3][0], "database.write_forecast") + self.assertEqual(context.mock_calls[3].args[0], FORECAST_MOCK) def test_create_forecast_task_skip_external(self): """Test that making a forecast is skipped for externally posted pids.""" @@ -110,7 +110,7 @@ def test_create_forecast_known_zero_flatliner(self): # Assert self.assertEqual(self.pj.id, context.config.known_zero_flatliners[0]) self.assertEqual( - context.mock_calls[1].args[0], + context.mock_calls[3].args[0], "No forecasts were made for this known zero flatliner prediction job. No forecasts need to be made either, since the fallback forecasts are sufficient.", ) assert ( @@ -134,7 +134,7 @@ def test_create_forecast_known_zero_flatliner_no_model(self): # Assert self.assertEqual(self.pj.id, context.config.known_zero_flatliners[0]) self.assertEqual( - context.mock_calls[1].args[0], + context.mock_calls[3].args[0], "No forecasts were made for this known zero flatliner prediction job. No forecasts need to be made either, since the fallback forecasts are sufficient.", ) assert ( @@ -229,7 +229,7 @@ def test_create_forecast_task_forecast_only(self, create_forecast_pipeline_mock) # Assert self.assertEqual(create_forecast_pipeline_mock.call_count, 1) - self.assertEqual(context.mock_calls[3].args[0], FORECAST_MOCK) + self.assertEqual(context.mock_calls[5].args[0], FORECAST_MOCK) @patch("mlflow.sklearn.load_model") @patch("openstef.model.serializer.MLflowSerializer") diff --git a/test/unit/trained_models/mlruns/893156335105023143/2ca1d126e8724852b303b256e64a6c4f/artifacts/figures/weight_plot.html b/test/unit/trained_models/mlruns/893156335105023143/2ca1d126e8724852b303b256e64a6c4f/artifacts/figures/weight_plot.html index 99b04680d..e698bd62f 100644 --- a/test/unit/trained_models/mlruns/893156335105023143/2ca1d126e8724852b303b256e64a6c4f/artifacts/figures/weight_plot.html +++ b/test/unit/trained_models/mlruns/893156335105023143/2ca1d126e8724852b303b256e64a6c4f/artifacts/figures/weight_plot.html @@ -2,6 +2,6 @@
-
+
\ No newline at end of file diff --git a/test/unit/trained_models/mlruns/893156335105023143/2ca1d126e8724852b303b256e64a6c4f/artifacts/model/MLmodel b/test/unit/trained_models/mlruns/893156335105023143/2ca1d126e8724852b303b256e64a6c4f/artifacts/model/MLmodel index 4dfd4fd80..7be073872 100644 --- a/test/unit/trained_models/mlruns/893156335105023143/2ca1d126e8724852b303b256e64a6c4f/artifacts/model/MLmodel +++ b/test/unit/trained_models/mlruns/893156335105023143/2ca1d126e8724852b303b256e64a6c4f/artifacts/model/MLmodel @@ -17,7 +17,7 @@ mlflow_version: 2.3.0 model_uuid: 07228c27f4df4878aabb24931faf321e run_id: 2ca1d126e8724852b303b256e64a6c4f signature: - inputs: '[{"name": "APX", "type": "double"}, {"name": "IsSunday", "type": "boolean"}, + inputs: '[{"name": "day_ahead_electricity_price", "type": "double"}, {"name": "IsSunday", "type": "boolean"}, {"name": "IsWeekDay", "type": "boolean"}, {"name": "IsWeekendDay", "type": "boolean"}, {"name": "Month", "type": "integer"}, {"name": "Quarter", "type": "integer"}, {"name": "T-1020min", "type": "double"}, {"name": "T-1080min", "type": "double"}, diff --git a/test/unit/trained_models/mlruns/893156335105023143/2ca1d126e8724852b303b256e64a6c4f/tags/feature_names b/test/unit/trained_models/mlruns/893156335105023143/2ca1d126e8724852b303b256e64a6c4f/tags/feature_names index 5c5820e83..0cb8dc768 100644 --- a/test/unit/trained_models/mlruns/893156335105023143/2ca1d126e8724852b303b256e64a6c4f/tags/feature_names +++ b/test/unit/trained_models/mlruns/893156335105023143/2ca1d126e8724852b303b256e64a6c4f/tags/feature_names @@ -1 +1 @@ -['APX', 'IsSunday', 'IsWeekDay', 'IsWeekendDay', 'Month', 'Quarter', 'T-1020min', 'T-1080min', 'T-10d', 'T-1140min', 'T-11d', 'T-1200min', 'T-120min', 'T-1260min', 'T-12d', 'T-1320min', 'T-1380min', 'T-13d', 'T-14d', 'T-15min', 'T-180min', 'T-1d', 'T-240min', 'T-2d', 'T-300min', 'T-30min', 'T-360min', 'T-3d', 'T-420min', 'T-45min', 'T-480min', 'T-4d', 'T-540min', 'T-5d', 'T-600min', 'T-60min', 'T-660min', 'T-6d', 'T-720min', 'T-780min', 'T-7d', 'T-840min', 'T-8d', 'T-900min', 'T-960min', 'T-9d', 'air_density', 'clearSky_dlf', 'clearSky_ulf', 'clouds', 'dewpoint', 'dni', 'gti', 'humidity', 'is_bouwvakmidden', 'is_bouwvaknoord', 'is_bouwvakzuid', 'is_bridgeday', 'is_bridgedayhemelvaart', 'is_bridgedaykoningsdag', 'is_eerste_kerstdag', 'is_eerste_paasdag', 'is_eerste_pinksterdag', 'is_goede_vrijdag', 'is_hemelvaart', 'is_herfstvakantiemidden', 'is_herfstvakantienoord', 'is_herfstvakantiezuid', 'is_kerstvakantie', 'is_koningsdag', 'is_meivakantie', 'is_national_holiday', 'is_nieuwjaarsdag', 'is_schoolholiday', 'is_tweede_kerstdag', 'is_tweede_paasdag', 'is_tweede_pinksterdag', 'is_voorjaarsvakantiemidden', 'is_voorjaarsvakantienoord', 'is_voorjaarsvakantiezuid', 'is_zomervakantiemidden', 'is_zomervakantienoord', 'is_zomervakantiezuid', 'mxlD', 'pressure', 'radiation', 'rain', 'saturation_pressure', 'sjv_E1A', 'sjv_E1B', 'sjv_E1C', 'sjv_E2A', 'sjv_E2B', 'sjv_E3A', 'sjv_E3B', 'sjv_E3C', 'sjv_E3D', 'sjv_E4A', 'snowDepth', 'temp', 'vapour_pressure', 'windPowerFit_extrapolated', 'winddeg', 'windpowerFit_harm_arome', 'windspeed', 'windspeed_100m', 'windspeed_100mExtrapolated', 'horizon'] \ No newline at end of file +['day_ahead_electricity_price', 'IsSunday', 'IsWeekDay', 'IsWeekendDay', 'Month', 'Quarter', 'T-1020min', 'T-1080min', 'T-10d', 'T-1140min', 'T-11d', 'T-1200min', 'T-120min', 'T-1260min', 'T-12d', 'T-1320min', 'T-1380min', 'T-13d', 'T-14d', 'T-15min', 'T-180min', 'T-1d', 'T-240min', 'T-2d', 'T-300min', 'T-30min', 'T-360min', 'T-3d', 'T-420min', 'T-45min', 'T-480min', 'T-4d', 'T-540min', 'T-5d', 'T-600min', 'T-60min', 'T-660min', 'T-6d', 'T-720min', 'T-780min', 'T-7d', 'T-840min', 'T-8d', 'T-900min', 'T-960min', 'T-9d', 'air_density', 'clearSky_dlf', 'clearSky_ulf', 'clouds', 'dewpoint', 'dni', 'gti', 'humidity', 'is_bouwvakmidden', 'is_bouwvaknoord', 'is_bouwvakzuid', 'is_bridgeday', 'is_bridgedayhemelvaart', 'is_bridgedaykoningsdag', 'is_eerste_kerstdag', 'is_eerste_paasdag', 'is_eerste_pinksterdag', 'is_goede_vrijdag', 'is_hemelvaart', 'is_herfstvakantiemidden', 'is_herfstvakantienoord', 'is_herfstvakantiezuid', 'is_kerstvakantie', 'is_koningsdag', 'is_meivakantie', 'is_national_holiday', 'is_nieuwjaarsdag', 'is_schoolholiday', 'is_tweede_kerstdag', 'is_tweede_paasdag', 'is_tweede_pinksterdag', 'is_voorjaarsvakantiemidden', 'is_voorjaarsvakantienoord', 'is_voorjaarsvakantiezuid', 'is_zomervakantiemidden', 'is_zomervakantienoord', 'is_zomervakantiezuid', 'mxlD', 'pressure', 'radiation', 'rain', 'saturation_pressure', 'sjv_E1A', 'sjv_E1B', 'sjv_E1C', 'sjv_E2A', 'sjv_E2B', 'sjv_E3A', 'sjv_E3B', 'sjv_E3C', 'sjv_E3D', 'sjv_E4A', 'snowDepth', 'temp', 'vapour_pressure', 'windPowerFit_extrapolated', 'winddeg', 'windpowerFit_harm_arome', 'windspeed', 'windspeed_100m', 'windspeed_100mExtrapolated', 'horizon'] \ No newline at end of file diff --git a/test/unit/trained_models/mlruns/893156335105023143/2ca1d126e8724852b303b256e64a6c4f/tags/mlflow.log-model.history b/test/unit/trained_models/mlruns/893156335105023143/2ca1d126e8724852b303b256e64a6c4f/tags/mlflow.log-model.history index ceb781925..f6b2cf327 100644 --- a/test/unit/trained_models/mlruns/893156335105023143/2ca1d126e8724852b303b256e64a6c4f/tags/mlflow.log-model.history +++ b/test/unit/trained_models/mlruns/893156335105023143/2ca1d126e8724852b303b256e64a6c4f/tags/mlflow.log-model.history @@ -1 +1 @@ -[{"run_id": "2ca1d126e8724852b303b256e64a6c4f", "artifact_path": "model", "utc_time_created": "2023-04-25 15:52:50.398312", "flavors": {"python_function": {"model_path": "model.pkl", "predict_fn": "predict", "loader_module": "mlflow.sklearn", "python_version": "3.10.10", "env": {"conda": "conda.yaml", "virtualenv": "python_env.yaml"}}, "sklearn": {"pickled_model": "model.pkl", "sklearn_version": "1.2.2", "serialization_format": "cloudpickle", "code": null}}, "model_uuid": "07228c27f4df4878aabb24931faf321e", "mlflow_version": "2.3.0", "signature": {"inputs": "[{\"name\": \"APX\", \"type\": \"double\"}, {\"name\": \"IsSunday\", \"type\": \"boolean\"}, {\"name\": \"IsWeekDay\", \"type\": \"boolean\"}, {\"name\": \"IsWeekendDay\", \"type\": \"boolean\"}, {\"name\": \"Month\", \"type\": \"integer\"}, {\"name\": \"Quarter\", \"type\": \"integer\"}, {\"name\": \"T-1020min\", \"type\": \"double\"}, {\"name\": \"T-1080min\", \"type\": \"double\"}, {\"name\": \"T-10d\", \"type\": \"double\"}, {\"name\": \"T-1140min\", \"type\": \"double\"}, {\"name\": \"T-11d\", \"type\": \"double\"}, {\"name\": \"T-1200min\", \"type\": \"double\"}, {\"name\": \"T-120min\", \"type\": \"double\"}, {\"name\": \"T-1260min\", \"type\": \"double\"}, {\"name\": \"T-12d\", \"type\": \"double\"}, {\"name\": \"T-1320min\", \"type\": \"double\"}, {\"name\": \"T-1380min\", \"type\": \"double\"}, {\"name\": \"T-13d\", \"type\": \"double\"}, {\"name\": \"T-14d\", \"type\": \"double\"}, {\"name\": \"T-15min\", \"type\": \"double\"}, {\"name\": \"T-180min\", \"type\": \"double\"}, {\"name\": \"T-1d\", \"type\": \"double\"}, {\"name\": \"T-240min\", \"type\": \"double\"}, {\"name\": \"T-2d\", \"type\": \"double\"}, {\"name\": \"T-300min\", \"type\": \"double\"}, {\"name\": \"T-30min\", \"type\": \"double\"}, {\"name\": \"T-360min\", \"type\": \"double\"}, {\"name\": \"T-3d\", \"type\": \"double\"}, {\"name\": \"T-420min\", \"type\": \"double\"}, {\"name\": \"T-45min\", \"type\": \"double\"}, {\"name\": \"T-480min\", \"type\": \"double\"}, {\"name\": \"T-4d\", \"type\": \"double\"}, {\"name\": \"T-540min\", \"type\": \"double\"}, {\"name\": \"T-5d\", \"type\": \"double\"}, {\"name\": \"T-600min\", \"type\": \"double\"}, {\"name\": \"T-60min\", \"type\": \"double\"}, {\"name\": \"T-660min\", \"type\": \"double\"}, {\"name\": \"T-6d\", \"type\": \"double\"}, {\"name\": \"T-720min\", \"type\": \"double\"}, {\"name\": \"T-780min\", \"type\": \"double\"}, {\"name\": \"T-7d\", \"type\": \"double\"}, {\"name\": \"T-840min\", \"type\": \"double\"}, {\"name\": \"T-8d\", \"type\": \"double\"}, {\"name\": \"T-900min\", \"type\": \"double\"}, {\"name\": \"T-960min\", \"type\": \"double\"}, {\"name\": \"T-9d\", \"type\": \"double\"}, {\"name\": \"air_density\", \"type\": \"double\"}, {\"name\": \"clearSky_dlf\", \"type\": \"double\"}, {\"name\": \"clearSky_ulf\", \"type\": \"double\"}, {\"name\": \"clouds\", \"type\": \"double\"}, {\"name\": \"dewpoint\", \"type\": \"double\"}, {\"name\": \"dni\", \"type\": \"double\"}, {\"name\": \"gti\", \"type\": \"double\"}, {\"name\": \"humidity\", \"type\": \"double\"}, {\"name\": \"is_bouwvakmidden\", \"type\": \"boolean\"}, {\"name\": \"is_bouwvaknoord\", \"type\": \"boolean\"}, {\"name\": \"is_bouwvakzuid\", \"type\": \"boolean\"}, {\"name\": \"is_bridgeday\", \"type\": \"boolean\"}, {\"name\": \"is_bridgedayhemelvaart\", \"type\": \"boolean\"}, {\"name\": \"is_bridgedaykoningsdag\", \"type\": \"boolean\"}, {\"name\": \"is_eerste_kerstdag\", \"type\": \"boolean\"}, {\"name\": \"is_eerste_paasdag\", \"type\": \"boolean\"}, {\"name\": \"is_eerste_pinksterdag\", \"type\": \"boolean\"}, {\"name\": \"is_goede_vrijdag\", \"type\": \"boolean\"}, {\"name\": \"is_hemelvaart\", \"type\": \"boolean\"}, {\"name\": \"is_herfstvakantiemidden\", \"type\": \"boolean\"}, {\"name\": \"is_herfstvakantienoord\", \"type\": \"boolean\"}, {\"name\": \"is_herfstvakantiezuid\", \"type\": \"boolean\"}, {\"name\": \"is_kerstvakantie\", \"type\": \"boolean\"}, {\"name\": \"is_koningsdag\", \"type\": \"boolean\"}, {\"name\": \"is_meivakantie\", \"type\": \"boolean\"}, {\"name\": \"is_national_holiday\", \"type\": \"boolean\"}, {\"name\": \"is_nieuwjaarsdag\", \"type\": \"boolean\"}, {\"name\": \"is_schoolholiday\", \"type\": \"boolean\"}, {\"name\": \"is_tweede_kerstdag\", \"type\": \"boolean\"}, {\"name\": \"is_tweede_paasdag\", \"type\": \"boolean\"}, {\"name\": \"is_tweede_pinksterdag\", \"type\": \"boolean\"}, {\"name\": \"is_voorjaarsvakantiemidden\", \"type\": \"boolean\"}, {\"name\": \"is_voorjaarsvakantienoord\", \"type\": \"boolean\"}, {\"name\": \"is_voorjaarsvakantiezuid\", \"type\": \"boolean\"}, {\"name\": \"is_zomervakantiemidden\", \"type\": \"boolean\"}, {\"name\": \"is_zomervakantienoord\", \"type\": \"boolean\"}, {\"name\": \"is_zomervakantiezuid\", \"type\": \"boolean\"}, {\"name\": \"mxlD\", \"type\": \"double\"}, {\"name\": \"pressure\", \"type\": \"double\"}, {\"name\": \"radiation\", \"type\": \"double\"}, {\"name\": \"rain\", \"type\": \"double\"}, {\"name\": \"saturation_pressure\", \"type\": \"double\"}, {\"name\": \"sjv_E1A\", \"type\": \"double\"}, {\"name\": \"sjv_E1B\", \"type\": \"double\"}, {\"name\": \"sjv_E1C\", \"type\": \"double\"}, {\"name\": \"sjv_E2A\", \"type\": \"double\"}, {\"name\": \"sjv_E2B\", \"type\": \"double\"}, {\"name\": \"sjv_E3A\", \"type\": \"double\"}, {\"name\": \"sjv_E3B\", \"type\": \"double\"}, {\"name\": \"sjv_E3C\", \"type\": \"double\"}, {\"name\": \"sjv_E3D\", \"type\": \"double\"}, {\"name\": \"sjv_E4A\", \"type\": \"double\"}, {\"name\": \"snowDepth\", \"type\": \"long\"}, {\"name\": \"temp\", \"type\": \"double\"}, {\"name\": \"vapour_pressure\", \"type\": \"double\"}, {\"name\": \"windPowerFit_extrapolated\", \"type\": \"double\"}, {\"name\": \"winddeg\", \"type\": \"double\"}, {\"name\": \"windpowerFit_harm_arome\", \"type\": \"double\"}, {\"name\": \"windspeed\", \"type\": \"double\"}, {\"name\": \"windspeed_100m\", \"type\": \"double\"}, {\"name\": \"windspeed_100mExtrapolated\", \"type\": \"double\"}]", "outputs": "[{\"name\": \"load\", \"type\": \"double\"}]"}}] \ No newline at end of file +[{"run_id": "2ca1d126e8724852b303b256e64a6c4f", "artifact_path": "model", "utc_time_created": "2023-04-25 15:52:50.398312", "flavors": {"python_function": {"model_path": "model.pkl", "predict_fn": "predict", "loader_module": "mlflow.sklearn", "python_version": "3.10.10", "env": {"conda": "conda.yaml", "virtualenv": "python_env.yaml"}}, "sklearn": {"pickled_model": "model.pkl", "sklearn_version": "1.2.2", "serialization_format": "cloudpickle", "code": null}}, "model_uuid": "07228c27f4df4878aabb24931faf321e", "mlflow_version": "2.3.0", "signature": {"inputs": "[{\"name\": \"day_ahead_electricity_price\", \"type\": \"double\"}, {\"name\": \"IsSunday\", \"type\": \"boolean\"}, {\"name\": \"IsWeekDay\", \"type\": \"boolean\"}, {\"name\": \"IsWeekendDay\", \"type\": \"boolean\"}, {\"name\": \"Month\", \"type\": \"integer\"}, {\"name\": \"Quarter\", \"type\": \"integer\"}, {\"name\": \"T-1020min\", \"type\": \"double\"}, {\"name\": \"T-1080min\", \"type\": \"double\"}, {\"name\": \"T-10d\", \"type\": \"double\"}, {\"name\": \"T-1140min\", \"type\": \"double\"}, {\"name\": \"T-11d\", \"type\": \"double\"}, {\"name\": \"T-1200min\", \"type\": \"double\"}, {\"name\": \"T-120min\", \"type\": \"double\"}, {\"name\": \"T-1260min\", \"type\": \"double\"}, {\"name\": \"T-12d\", \"type\": \"double\"}, {\"name\": \"T-1320min\", \"type\": \"double\"}, {\"name\": \"T-1380min\", \"type\": \"double\"}, {\"name\": \"T-13d\", \"type\": \"double\"}, {\"name\": \"T-14d\", \"type\": \"double\"}, {\"name\": \"T-15min\", \"type\": \"double\"}, {\"name\": \"T-180min\", \"type\": \"double\"}, {\"name\": \"T-1d\", \"type\": \"double\"}, {\"name\": \"T-240min\", \"type\": \"double\"}, {\"name\": \"T-2d\", \"type\": \"double\"}, {\"name\": \"T-300min\", \"type\": \"double\"}, {\"name\": \"T-30min\", \"type\": \"double\"}, {\"name\": \"T-360min\", \"type\": \"double\"}, {\"name\": \"T-3d\", \"type\": \"double\"}, {\"name\": \"T-420min\", \"type\": \"double\"}, {\"name\": \"T-45min\", \"type\": \"double\"}, {\"name\": \"T-480min\", \"type\": \"double\"}, {\"name\": \"T-4d\", \"type\": \"double\"}, {\"name\": \"T-540min\", \"type\": \"double\"}, {\"name\": \"T-5d\", \"type\": \"double\"}, {\"name\": \"T-600min\", \"type\": \"double\"}, {\"name\": \"T-60min\", \"type\": \"double\"}, {\"name\": \"T-660min\", \"type\": \"double\"}, {\"name\": \"T-6d\", \"type\": \"double\"}, {\"name\": \"T-720min\", \"type\": \"double\"}, {\"name\": \"T-780min\", \"type\": \"double\"}, {\"name\": \"T-7d\", \"type\": \"double\"}, {\"name\": \"T-840min\", \"type\": \"double\"}, {\"name\": \"T-8d\", \"type\": \"double\"}, {\"name\": \"T-900min\", \"type\": \"double\"}, {\"name\": \"T-960min\", \"type\": \"double\"}, {\"name\": \"T-9d\", \"type\": \"double\"}, {\"name\": \"air_density\", \"type\": \"double\"}, {\"name\": \"clearSky_dlf\", \"type\": \"double\"}, {\"name\": \"clearSky_ulf\", \"type\": \"double\"}, {\"name\": \"clouds\", \"type\": \"double\"}, {\"name\": \"dewpoint\", \"type\": \"double\"}, {\"name\": \"dni\", \"type\": \"double\"}, {\"name\": \"gti\", \"type\": \"double\"}, {\"name\": \"humidity\", \"type\": \"double\"}, {\"name\": \"is_bouwvakmidden\", \"type\": \"boolean\"}, {\"name\": \"is_bouwvaknoord\", \"type\": \"boolean\"}, {\"name\": \"is_bouwvakzuid\", \"type\": \"boolean\"}, {\"name\": \"is_bridgeday\", \"type\": \"boolean\"}, {\"name\": \"is_bridgedayhemelvaart\", \"type\": \"boolean\"}, {\"name\": \"is_bridgedaykoningsdag\", \"type\": \"boolean\"}, {\"name\": \"is_eerste_kerstdag\", \"type\": \"boolean\"}, {\"name\": \"is_eerste_paasdag\", \"type\": \"boolean\"}, {\"name\": \"is_eerste_pinksterdag\", \"type\": \"boolean\"}, {\"name\": \"is_goede_vrijdag\", \"type\": \"boolean\"}, {\"name\": \"is_hemelvaart\", \"type\": \"boolean\"}, {\"name\": \"is_herfstvakantiemidden\", \"type\": \"boolean\"}, {\"name\": \"is_herfstvakantienoord\", \"type\": \"boolean\"}, {\"name\": \"is_herfstvakantiezuid\", \"type\": \"boolean\"}, {\"name\": \"is_kerstvakantie\", \"type\": \"boolean\"}, {\"name\": \"is_koningsdag\", \"type\": \"boolean\"}, {\"name\": \"is_meivakantie\", \"type\": \"boolean\"}, {\"name\": \"is_national_holiday\", \"type\": \"boolean\"}, {\"name\": \"is_nieuwjaarsdag\", \"type\": \"boolean\"}, {\"name\": \"is_schoolholiday\", \"type\": \"boolean\"}, {\"name\": \"is_tweede_kerstdag\", \"type\": \"boolean\"}, {\"name\": \"is_tweede_paasdag\", \"type\": \"boolean\"}, {\"name\": \"is_tweede_pinksterdag\", \"type\": \"boolean\"}, {\"name\": \"is_voorjaarsvakantiemidden\", \"type\": \"boolean\"}, {\"name\": \"is_voorjaarsvakantienoord\", \"type\": \"boolean\"}, {\"name\": \"is_voorjaarsvakantiezuid\", \"type\": \"boolean\"}, {\"name\": \"is_zomervakantiemidden\", \"type\": \"boolean\"}, {\"name\": \"is_zomervakantienoord\", \"type\": \"boolean\"}, {\"name\": \"is_zomervakantiezuid\", \"type\": \"boolean\"}, {\"name\": \"mxlD\", \"type\": \"double\"}, {\"name\": \"pressure\", \"type\": \"double\"}, {\"name\": \"radiation\", \"type\": \"double\"}, {\"name\": \"rain\", \"type\": \"double\"}, {\"name\": \"saturation_pressure\", \"type\": \"double\"}, {\"name\": \"sjv_E1A\", \"type\": \"double\"}, {\"name\": \"sjv_E1B\", \"type\": \"double\"}, {\"name\": \"sjv_E1C\", \"type\": \"double\"}, {\"name\": \"sjv_E2A\", \"type\": \"double\"}, {\"name\": \"sjv_E2B\", \"type\": \"double\"}, {\"name\": \"sjv_E3A\", \"type\": \"double\"}, {\"name\": \"sjv_E3B\", \"type\": \"double\"}, {\"name\": \"sjv_E3C\", \"type\": \"double\"}, {\"name\": \"sjv_E3D\", \"type\": \"double\"}, {\"name\": \"sjv_E4A\", \"type\": \"double\"}, {\"name\": \"snowDepth\", \"type\": \"long\"}, {\"name\": \"temp\", \"type\": \"double\"}, {\"name\": \"vapour_pressure\", \"type\": \"double\"}, {\"name\": \"windPowerFit_extrapolated\", \"type\": \"double\"}, {\"name\": \"winddeg\", \"type\": \"double\"}, {\"name\": \"windpowerFit_harm_arome\", \"type\": \"double\"}, {\"name\": \"windspeed\", \"type\": \"double\"}, {\"name\": \"windspeed_100m\", \"type\": \"double\"}, {\"name\": \"windspeed_100mExtrapolated\", \"type\": \"double\"}]", "outputs": "[{\"name\": \"load\", \"type\": \"double\"}]"}}] \ No newline at end of file diff --git a/test/unit/validation/test_validation_calc_completeness.py b/test/unit/validation/test_validation_calc_completeness.py index a0559c021..e09a9eff4 100644 --- a/test/unit/validation/test_validation_calc_completeness.py +++ b/test/unit/validation/test_validation_calc_completeness.py @@ -31,9 +31,13 @@ def test_complete_dataframe(self): self.assertEqual(completeness, 1.0) - def test_APX_missing(self): - df = pd.DataFrame(index=range(2 * 96), data={"APX": [np.nan] * 2 * 96}) - weights = pd.DataFrame(index=["APX"], data={"gain": 1, "weight": 1}) + def test_day_ahead_electricity_price_missing(self): + df = pd.DataFrame( + index=range(2 * 96), data={"day_ahead_electricity_price": [np.nan] * 2 * 96} + ) + weights = pd.DataFrame( + index=["day_ahead_electricity_price"], data={"gain": 1, "weight": 1} + ) completeness = calc_completeness_features(df, weights, time_delayed=True) self.assertEqual(completeness, 1 / 2)