code: def test_convert_simple_silverkite_params_hourly(hourly_data):
      """Tests ``convert_simple_silverkite_params`` on hourly data.
      A supplementary test to the parameter-specific tests above.
      """
      silverkite = SimpleSilverkiteForecast()
      parameters = silverkite.convert_params(
          df=hourly_data, time_col=cst.TIME_COL, value_col=cst.VALUE_COL
      )
      extra_pred_cols = parameters.pop("extra_pred_cols")
  
      # expected parameters
      origin_for_time_vars = 2018.495890410959
      expected_event = silverkite._SimpleSilverkiteForecast__get_silverkite_holidays(
          holiday_lookup_countries="auto",
          holidays_to_model_separately="auto",
          start_year=2018,
          end_year=2019,  # 500 days of hourly, and short forecast horizon
          pre_num=2,
          post_num=2,
      )
      expected_fs = silverkite._SimpleSilverkiteForecast__get_silverkite_seasonality(
          simple_freq=SimpleTimeFrequencyEnum.HOUR.name,
          num_days=500,
          seasonality={
              "yearly_seasonality": "auto",
              "quarterly_seasonality": "auto",
              "monthly_seasonality": "auto",
              "weekly_seasonality": "auto",
              "daily_seasonality": "auto",
          },
      )
      expected = dict(
          df=hourly_data,
          time_col=cst.TIME_COL,
          value_col=cst.VALUE_COL,
          origin_for_time_vars=origin_for_time_vars,
          # extra_pred_cols=extra_pred_cols,  # checked separately
          drop_pred_cols=None,
          explicit_pred_cols=None,
          train_test_thresh=None,
          training_fraction=0.9,
          fit_algorithm="ridge",
          fit_algorithm_params=None,
          daily_event_df_dict=expected_event,
          daily_event_neighbor_impact=None,
          daily_event_shifted_effect=None,
          changepoints_dict=None,
          fs_components_df=expected_fs,
          autoreg_dict=None,
          past_df=None,
          lagged_regressor_dict=None,
          seasonality_changepoints_dict=None,
          min_admissible_value=None,
          max_admissible_value=None,
          uncertainty_dict=None,
          normalize_method=None,
          changepoint_detector=None,
          regression_weight_col=None,
          # ``forecast_horizon`` not given, but automatically populated from
          # ``time_properties``, which is the default 24 for hourly data.
          forecast_horizon=24,
          simulation_based=False,
          simulation_num=10,
          fast_simulation=False,
          remove_intercept=False,
      )
      assert_equal(parameters, expected)
  
      assert len(parameters["daily_event_df_dict"].keys()) == 55
      assert len(extra_pred_cols) == 452
      assert {
          "ct1",
          "C(Q('events_Chinese New Year'), levels=['', 'event'])",
          "C(Q('events_Chinese New Year_minus_1'), levels=['', 'event'])",
          "C(Q('str_dow'), levels=['1-Mon', '2-Tue', '3-Wed', '4-Thu', '5-Fri', '6-Sat', '7-Sun'])",
          "C(Q('events_Christmas Day'), levels=['', 'event']):sin4_tod_daily",
          "ct1:cos4_tow_weekly",
      }.issubset(set(extra_pred_cols))
  
imports: import datetime
  import math
  import sys
  import warnings
  from datetime import timedelta
  import pandas
  import pytest
  from testfixtures import LogCapture
  import greykite.common.constants
  from greykite.algo.changepoint.adalasso.changepoint_detector import ChangepointDetector
  from greykite.algo.forecast.silverkite.constants.silverkite_column import SilverkiteColumn
  from greykite.algo.forecast.silverkite.constants.silverkite_holiday import SilverkiteHoliday
  from greykite.algo.forecast.silverkite.constants.silverkite_seasonality import SilverkiteSeasonality
  from greykite.algo.forecast.silverkite.constants.silverkite_seasonality import SilverkiteSeasonalityEnum
  from greykite.algo.forecast.silverkite.forecast_simple_silverkite import SimpleSilverkiteForecast
  from greykite.algo.forecast.silverkite.forecast_simple_silverkite_helper import generate_holiday_events
  from greykite.common.constants import CHANGEPOINT_COL_PREFIX
  from greykite.common.constants import EVENT_DF_DATE_COL
  from greykite.common.constants import EVENT_DF_LABEL_COL
  from greykite.common.constants import LOGGER_NAME
  from greykite.common.constants import TIME_COL
  from greykite.common.constants import VALUE_COL
  from greykite.common.data_loader import DataLoader
  from greykite.common.enums import SimpleTimeFrequencyEnum
  from greykite.common.enums import TimeEnum
  from greykite.common.features.timeseries_features import get_available_holidays_across_countries
  from greykite.common.features.timeseries_features import get_holidays
  from greykite.common.python_utils import assert_equal
  from greykite.common.python_utils import update_dictionary
  from greykite.common.testing_utils import generate_df_for_tests
  from greykite.common.testing_utils import generate_df_with_reg_for_tests
label_desc: Use image node_id 9 for calling a global function with example usage: test_convert_simple_silverkite_params_hourly(hourly_data) without return types