class_docstr: Formal representation of a smooth seasonal effect model.
  
  The smooth seasonal model uses a set of trigonometric terms in order to
  capture a recurring pattern whereby adjacent (in time) effects are
  similar. The model uses `frequencies` calculated via:
  
  ```python
  frequencies[j] = 2. * pi * frequency_multipliers[j] / period
  ```
  
  and then posits two latent states for each `frequency`. The two latent states
  associated with frequency `j` drift over time via:
  
  ```python
  effect[t] = (effect[t - 1] * cos(frequencies[j]) +
               auxiliary[t - 1] * sin(frequencies[j]) +
               Normal(0., drift_scale))
  
  auxiliary[t] = (-effect[t - 1] * sin(frequencies[j]) +
                  auxiliary[t - 1] * cos(frequencies[j]) +
                  Normal(0., drift_scale))
  ```
  
  where `effect` is the smooth seasonal effect and `auxiliary` only appears as a
  matter of construction. The interpretation of `auxiliary` is thus not
  particularly important.
  
  #### Examples
  
  A smooth seasonal effect model representing smooth weekly seasonality on daily
  data:
  
  ```python
  component = SmoothSeasonal(
      period=7,
      frequency_multipliers=[1, 2, 3],
      initial_state_prior=tfd.MultivariateNormalDiag(scale_diag=tf.ones([6])),
  )
  ```
class_docstr_tok: ["Formal","representation","of","a","smooth","seasonal","effect","model",".","The","smooth","seasonal","model","uses","a","set","of","trigonometric","terms","in","order","to","capture","a","recurring","pattern","whereby","adjacent","(","in","time",")","effects","are","similar",".","The","model","uses","`","frequencies","`","calculated","via",":","``","`","python","frequencies","[","j","]","=","2",".","*","pi","*","frequency_multipliers","[","j","]","\/","period","``","`","and","then","posits","two","latent","states","for","each","`","frequency","`",".","The","two","latent","states","associated","with","frequency","`","j","`","drift","over","time","via",":","``","`","python","effect","[","t","]","=","(","effect","[","t","-","1","]","*","cos","(","frequencies","[","j","]",")","+","auxiliary","[","t","-","1","]","*","sin","(","frequencies","[","j","]",")","+","Normal","(","0.",",","drift_scale",")",")","auxiliary","[","t","]","=","(","-effect","[","t","-","1","]","*","sin","(","frequencies","[","j","]",")","+","auxiliary","[","t","-","1","]","*","cos","(","frequencies","[","j","]",")","+","Normal","(","0.",",","drift_scale",")",")","``","`","where","`","effect","`","is","the","smooth","seasonal","effect","and","`","auxiliary","`","only","appears","as","a","matter","of","construction",".","The","interpretation","of","`","auxiliary","`","is","thus","not","particularly","important",".","#","#","#","#","Examples","A","smooth","seasonal","effect","model","representing","smooth","weekly","seasonality","on","daily","data",":","``","`","python","component","=","SmoothSeasonal","(","period=7",",","frequency_multipliers=","[","1",",","2",",","3","]",",","initial_state_prior=tfd.MultivariateNormalDiag","(","scale_diag=tf.ones","(","[","6","]",")",")",",",")","``","`"]
code: def _make_state_space_model(
      self,
      num_timesteps,
      param_map,
      initial_state_prior=None,
      **linear_gaussian_ssm_kwargs,
  ):
      if initial_state_prior is None:
          initial_state_prior = self.initial_state_prior
  
      if not self.allow_drift:
          param_map["drift_scale"] = 0.0
      linear_gaussian_ssm_kwargs.update(param_map)
      return SmoothSeasonalStateSpaceModel(
          num_timesteps=num_timesteps,
          period=self.period,
          frequency_multipliers=self.frequency_multipliers,
          initial_state_prior=initial_state_prior,
          **linear_gaussian_ssm_kwargs,
      )
  
imports: import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import chain
  from tensorflow_probability.python.bijectors import scale
  from tensorflow_probability.python.bijectors import softplus
  from tensorflow_probability.python.distributions import linear_gaussian_ssm
  from tensorflow_probability.python.distributions import lognormal
  from tensorflow_probability.python.distributions import mvn_diag
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.sts.internal import util
  from tensorflow_probability.python.sts.structural_time_series import Parameter
  from tensorflow_probability.python.sts.structural_time_series import StructuralTimeSeries
label_desc: Use image node_id 6 for calling the SmoothSeasonal obj's underlying member method code with example usage: obj._make_state_space_model(num_timesteps, param_map, initial_state_prior) and returns: SmoothSeasonalStateSpaceModel