class_docstr: Parameters
  ----------
  regressor_col : list
      Names of regressor columns, if any
  regressor_sign :  list
      list with values { '+', '-', '=' } such that
      '+' indicates regressor coefficient estimates are constrained to [0, inf).
      '-' indicates regressor coefficient estimates are constrained to (-inf, 0].
      '=' indicates regressor coefficient estimates can be any value between (-inf, inf).
      The length of `regressor_sign` must be the same length as `regressor_col`. If None,
      all elements of list will be set to '='.
  regressor_beta_prior : list
      list of prior float values for regressor coefficient betas. The length of `regressor_beta_prior`
      must be the same length as `regressor_col`. If None, use non-informative priors.
  regressor_sigma_prior : list
      list of prior float values for regressor coefficient sigmas. The length of `regressor_sigma_prior`
      must be the same length as `regressor_col`. If None, use non-informative priors.
  regression_penalty : { 'fixed_ridge', 'lasso', 'auto_ridge' }
      regression penalty method
  lasso_scale : float
      float value between [0, 1], applicable only if `regression_penalty` == 'lasso'
  auto_ridge_scale : float
      float value between [0, 1], applicable only if `regression_penalty` == 'auto_ridge'
  slope_sm_input : float
      float value between [0, 1]. A larger value puts more weight on the current slope.
      If None, the model will estimate this value.
docstr: Set required input based on input DataFrame, rather than at object instantiation.  It also set
  additional required attributes for LGT
code: def set_dynamic_attributes(self, df, training_meta):
      """Set required input based on input DataFrame, rather than at object instantiation.  It also set
      additional required attributes for LGT"""
      super().set_dynamic_attributes(df, training_meta)
      # scalar value is suggested by the author of Rlgt
      self.cauchy_sd = (
          max(training_meta[TrainingMetaKeys.RESPONSE.value]) / 30.0
      )
      if any(
          training_meta[TrainingMetaKeys.RESPONSE.value][
              self.is_valid_response
          ]
          < 0
      ):
          raise DataInputException(
              "LGT model does not allow negative response values.."
          )
  
      # extra validation and settings for regression
      self._validate_training_df_with_regression(df)
      # depends on num_of_observations
      self._set_regressor_matrix(
          df, training_meta[TrainingMetaKeys.NUM_OF_OBS.value]
      )
  
imports: import numpy
  import pandas
  from scipy.stats import nct
  from copy import deepcopy
  import torch
  from enum import Enum
  import warnings
  from ..constants.constants import DEFAULT_REGRESSOR_SIGN, DEFAULT_REGRESSOR_BETA, DEFAULT_REGRESSOR_SIGMA, COEFFICIENT_DF_COLS, PredictMethod, PredictionKeys, TrainingMetaKeys, PredictionMetaKeys
  from ..exceptions import IllegalArgument, ModelException, DataInputException
  from .ets import ETSModel
  from ..estimators.stan_estimator import StanEstimatorMCMC, StanEstimatorMAP
  from ..estimators.pyro_estimator import PyroEstimatorSVI
label_desc: Use image node_id 11 for calling the LGTModel obj's underlying member method code with example usage: obj.set_dynamic_attributes(df, training_meta) without return types