def test_modeled_savings_cdd_hdd_daily_reporting_model_no_params( baseline_model_daily, reporting_model_daily, reporting_meter_data_daily, reporting_temperature_data, ): reporting_model_daily.model.model_params = None with pytest.raises(MissingModelParameterError): modeled_savings( baseline_model_daily, reporting_model_daily, reporting_meter_data_daily.index, reporting_temperature_data, )
def test_modeled_savings_cdd_hdd_daily_with_disaggregated( baseline_model_daily, reporting_model_daily, reporting_meter_data_daily, reporting_temperature_data, ): # using reporting data for convenience, but intention is to use normal data results, error_bands = modeled_savings( baseline_model_daily, reporting_model_daily, reporting_meter_data_daily.index, reporting_temperature_data, with_disaggregated=True, ) assert list(sorted(results.columns)) == [ "modeled_base_load_savings", "modeled_baseline_base_load", "modeled_baseline_cooling_load", "modeled_baseline_heating_load", "modeled_baseline_usage", "modeled_cooling_load_savings", "modeled_heating_load_savings", "modeled_reporting_base_load", "modeled_reporting_cooling_load", "modeled_reporting_heating_load", "modeled_reporting_usage", "modeled_savings", ] assert round(error_bands["FSU Error Band: Baseline"], 2) == 601.52 assert round(error_bands["FSU Error Band: Reporting"], 2) == 534.78 assert round(error_bands["FSU Error Band"], 2) == 804.87
def test_modeled_savings_daily_empty_temperature_data(baseline_model_daily, reporting_model_daily): index = pd.DatetimeIndex([], tz="UTC", name="dt", freq="H") temperature_data = pd.Series([], index=index) meter_data_index = temperature_data.resample("D").sum().index # using reporting data for convenience, but intention is to use normal data results, error_bands = modeled_savings(baseline_model_daily, reporting_model_daily, meter_data_index, temperature_data) assert results.shape == (0, 3) assert list(results.columns) == [ "modeled_baseline_usage", "modeled_reporting_usage", "modeled_savings", ] assert error_bands is None
def test_modeled_savings_cdd_hdd_hourly( baseline_model_hourly, reporting_model_hourly, reporting_meter_data_hourly, reporting_temperature_data, ): # using reporting data for convenience, but intention is to use normal data results, error_bands = modeled_savings( baseline_model_hourly, reporting_model_hourly, reporting_meter_data_hourly.index, reporting_temperature_data, ) assert list(results.columns) == [ "modeled_baseline_usage", "modeled_reporting_usage", "modeled_savings", ] assert round(results.modeled_savings.sum(), 2) == 55.3 assert error_bands is None
def test_modeled_savings_cdd_hdd_billing(baseline_model_billing, reporting_model_billing, normal_year_temperature_data): results, error_bands = modeled_savings( baseline_model_billing, reporting_model_billing, pd.date_range("2015-01-01", freq="D", periods=365, tz="UTC"), normal_year_temperature_data, ) assert list(results.columns) == [ "modeled_baseline_usage", "modeled_reporting_usage", "modeled_savings", ] assert round(results.modeled_savings.sum(), 2) == 587.44 assert sorted(error_bands.keys()) == [ "FSU Error Band", "FSU Error Band: Baseline", "FSU Error Band: Reporting", ] assert round(error_bands["FSU Error Band"], 2) == 156.89
def test_modeled_savings_cdd_hdd_daily( baseline_model_daily, reporting_model_daily, reporting_meter_data_daily, reporting_temperature_data, ): # using reporting data for convenience, but intention is to use normal data results, error_bands = modeled_savings( baseline_model_daily, reporting_model_daily, reporting_meter_data_daily.index, reporting_temperature_data, ) assert list(results.columns) == [ "modeled_baseline_usage", "modeled_reporting_usage", "modeled_savings", ] assert round(results.modeled_savings.sum(), 2) == 168.58 assert round(error_bands["FSU Error Band: Baseline"], 2) == 601.52 assert round(error_bands["FSU Error Band: Reporting"], 2) == 534.78 assert round(error_bands["FSU Error Band"], 2) == 804.87