docstr: Removes interaction terms that include fourier series terms removed in
  `~greykite.algo.forecast.silverkite.SilverkiteForecast.__remove_fourier_col_with_collinearity`.
  This function is intended to be used when fitting algorithm is OLS.
  
  Parameters
  ----------
  extra_pred_cols : `list` [`str`]
      A list of features that include extra interaction terms in
      `~greykite.algo.forecast.silverkite.SilverkiteForecast.forecast`.
  fs_cols : `list` [`str`]
      A list of Fourier series column names to keep from
      `~greykite.algo.forecast.silverkite.SilverkiteForecast.__remove_fourier_col_with_collinearity`.
  
  Returns
  -------
  extra_pred_cols : `list` [`str`]
      The ``extra_pred_cols`` with interaction terms including fourier series not in ``fs_col`` removed.
code: def __remove_fourier_col_with_collinearity_and_interaction(
      self, extra_pred_cols, fs_cols
  ):
      """Removes interaction terms that include fourier series terms removed in
      `~greykite.algo.forecast.silverkite.SilverkiteForecast.__remove_fourier_col_with_collinearity`.
      This function is intended to be used when fitting algorithm is OLS.
  
      Parameters
      ----------
      extra_pred_cols : `list` [`str`]
          A list of features that include extra interaction terms in
          `~greykite.algo.forecast.silverkite.SilverkiteForecast.forecast`.
      fs_cols : `list` [`str`]
          A list of Fourier series column names to keep from
          `~greykite.algo.forecast.silverkite.SilverkiteForecast.__remove_fourier_col_with_collinearity`.
  
      Returns
      -------
      extra_pred_cols : `list` [`str`]
          The ``extra_pred_cols`` with interaction terms including fourier series not in ``fs_col`` removed.
      """
      seas_cols = get_pattern_cols(extra_pred_cols, SEASONALITY_REGEX)
      seas_cols = get_pattern_cols(seas_cols, ":")
      removed_cols = []
      for term in seas_cols:
          if any(
              [
                  (x not in fs_cols)
                  and (re.search(SEASONALITY_REGEX, x))
                  for x in term.split(":")
              ]
          ):
              removed_cols.append(term)
      extra_pred_cols = [
          x for x in extra_pred_cols if x not in removed_cols
      ]
      if len(removed_cols) > 0:
          warnings.warn(
              f"The following interaction terms are removed:\n{removed_cols}\n"
              f"due to the removal of the corresponding Fourier series terms."
          )
      return extra_pred_cols
  
imports: import re
  import warnings
  from typing import Type
  import numpy
  import pandas
  from pandas.plotting import register_matplotlib_converters
  from pandas.tseries.frequencies import to_offset
  from greykite.algo.changepoint.adalasso.changepoint_detector import get_changepoints_dict
  from greykite.algo.changepoint.adalasso.changepoint_detector import get_seasonality_changepoints
  from greykite.algo.changepoint.adalasso.changepoints_utils import build_seasonality_feature_df_from_detection_result
  from greykite.algo.changepoint.adalasso.changepoints_utils import get_seasonality_changepoint_df_cols
  from greykite.algo.common.ml_models import fit_ml_model_with_evaluation
  from greykite.algo.common.ml_models import predict_ml
  from greykite.algo.common.ml_models import predict_ml_with_uncertainty
  from greykite.algo.forecast.silverkite.constants.silverkite_constant import default_silverkite_constant
  from greykite.algo.forecast.silverkite.constants.silverkite_seasonality import SilverkiteSeasonalityEnum
  from greykite.algo.forecast.silverkite.constants.silverkite_seasonality import SilverkiteSeasonalityEnumMixin
  from greykite.algo.forecast.silverkite.forecast_silverkite_helper import get_fourier_feature_col_names
  from greykite.algo.forecast.silverkite.forecast_silverkite_helper import get_similar_lag
  from greykite.common.constants import CHANGEPOINT_COL_PREFIX
  from greykite.common.constants import ERR_STD_COL
  from greykite.common.constants import QUANTILE_SUMMARY_COL
  from greykite.common.constants import SEASONALITY_REGEX
  from greykite.common.constants import TimeFeaturesEnum
  from greykite.common.enums import TimeEnum
  from greykite.common.features.timeseries_features import add_daily_events
  from greykite.common.features.timeseries_features import add_time_features_df
  from greykite.common.features.timeseries_features import fourier_series_multi_fcn
  from greykite.common.features.timeseries_features import get_changepoint_dates_from_changepoints_dict
  from greykite.common.features.timeseries_features import get_changepoint_features
  from greykite.common.features.timeseries_features import get_changepoint_features_and_values_from_config
  from greykite.common.features.timeseries_features import get_default_origin_for_time_vars
  from greykite.common.features.timeseries_lags import build_autoreg_df
  from greykite.common.features.timeseries_lags import build_autoreg_df_multi
  from greykite.common.logging import LoggingLevelEnum
  from greykite.common.logging import log_message
  from greykite.common.python_utils import get_pattern_cols
  from greykite.common.python_utils import unique_elements_in_list
  from greykite.common.time_properties import describe_timeseries
  from greykite.common.time_properties import fill_missing_dates
  from greykite.common.time_properties import min_gap_in_seconds
  from greykite.common.time_properties_forecast import get_default_horizon_from_period
label_desc: Use image node_id 20 for calling the SilverkiteForecast obj's underlying member method code with example usage: obj.__remove_fourier_col_with_collinearity_and_interaction(extra_pred_cols, fs_cols) and returns: extra_pred_cols