def test_basic_hourly(input_df, mock_isd_weather_source):
    m = HourlyLoadProfileModel(fit_cdd=True)
    assert str(m).startswith("HourlyLoadProfileModel")
    assert m.n is None
    assert m.params is None
    assert m.r2 is None
    assert m.rmse is None
    assert m.y is None

    output = m.fit(input_df)

    assert "r2" in output
    assert "rmse" in output
    assert "cvrmse" in output
    assert "model_params" in output
    assert "n" in output

    assert 'formula' in m.params
    assert 'X_design_info' in m.params

    index = pd.date_range('2011-01-01',
                          freq='H',
                          periods=365 * 24,
                          tz=pytz.UTC)
    formatter = ModelDataFormatter("H")
    formatted_predict_data = formatter.create_demand_fixture(
        index, mock_isd_weather_source)

    outputs, variance = m.predict(formatted_predict_data, summed=False)
    assert outputs.shape == (365 * 24, )
    assert all(variance > 0)

    outputs, variance = m.predict(formatted_predict_data, summed=True)
    assert outputs > 0
    assert variance > 0
def test_hourly_demand_fixture(hourly_trace, monkeypatch_temperature_data,
                               mock_isd_weather_source):
    mdf = ModelDataFormatter("H")

    df = mdf.create_demand_fixture(hourly_trace.data.index,
                                   mock_isd_weather_source)
    assert all(df.columns == ["tempF"])
    assert df.index[0] == datetime(2000, 1, 1, 0, tzinfo=pytz.UTC)
    assert df.index[2] == datetime(2000, 1, 1, 2, tzinfo=pytz.UTC)
    assert df.index.freq == 'H'
    assert_allclose(df.tempF, [35.617314, 35.607664, 35.598025])
def test_daily_demand_fixture(daily_trace, mock_isd_weather_source):
    mdf = ModelDataFormatter("D")

    df = mdf.create_demand_fixture(daily_trace.data.index,
                                   mock_isd_weather_source)

    assert all(df.columns == ["tempF"])
    assert df.index[0] == datetime(2000, 1, 1, 0, tzinfo=pytz.UTC)
    assert df.index[2] == datetime(2000, 1, 3, tzinfo=pytz.UTC)
    assert df.index.freq == 'D'
    assert_allclose(df.tempF, [35.507344, 35.282373, 35.064391])
def test_hourly_demand_fixture(hourly_trace, mock_isd_weather_source):
    mdf = ModelDataFormatter("H")

    df = mdf.create_demand_fixture(hourly_trace.data.index,
                                   mock_isd_weather_source)

    assert all(df.columns == ["tempF"])
    assert df.index[0] == datetime(2000, 1, 1, 0, tzinfo=pytz.UTC)
    assert df.index[2] == datetime(2000, 1, 1, 2, tzinfo=pytz.UTC)
    assert df.index.freq == 'H'
    assert_allclose(df.tempF, [32., 32., 32.])