code: def fourier_series_multi_fcn(
      col_names, periods=None, orders=None, seas_names=None
  ):
      """Generates a func which adds multiple fourier series with multiple periods.
  
      Parameters
      ----------
      col_names : `list` [`str`]
          the column names which are to be used to generate Fourier series.
          Each column can have its own period and order.
      periods:  `list` [`float`] or None
          the periods corresponding to each column given in col_names
      orders : `list` [`int`] or None
          the orders for each of the Fourier series
      seas_names : `list` [`str`] or None
          Appended to the Fourier series name.
          If not provided (None) col_names will be used directly.
      """
  
      k = len(col_names)
      if periods is None:
          periods = [1.0] * k
      if orders is None:
          orders = [1] * k
  
      if len(periods) != len(orders):
          raise ValueError(
              "periods and orders must have the same length."
          )
  
      def fs_multi_func(df):
          out_df = None
          out_cols = []
  
          for i in range(k):
              col_name = col_names[i]
              period = periods[i]
              order = orders[i]
              seas_name = None
              if seas_names is not None:
                  seas_name = seas_names[i]
  
              func0 = fourier_series_fcn(
                  col_name=col_name,
                  period=period,
                  order=order,
                  seas_name=seas_name,
              )
  
              res = func0(df)
              fs_df = res["df"]
              fs_cols = res["cols"]
              out_df = pd.concat([out_df, fs_df], axis=1)
              out_cols = out_cols + fs_cols
  
          return {"df": out_df, "cols": out_cols}
  
      return fs_multi_func
  
imports: import math
  from datetime import datetime
  from datetime import timedelta
  import numpy
  import pandas
  import pytz
  from holidays_ext import get_holidays
  from pandas.tseries.frequencies import to_offset
  from scipy.special import expit
  from greykite.common import constants
  from greykite.common.python_utils import split_offset_str
label_desc: Use image node_id 28 for calling a global function with example usage: fourier_series_multi_fcn(col_names, periods, orders, seas_names) and returns: fs_multi_func, dict