Ejemplo n.º 1
0
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,
        )
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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