code: def setParams(
      self,
      iInputDS,
      iTime,
      iSignal,
      iHorizon,
      iTransformation,
      iExogenousData=None,
  ):
      assert iInputDS.shape[0] > 0
      assert iInputDS.shape[1] > 0
      assert iTime in iInputDS.columns
      assert iSignal in iInputDS.columns
  
      # print("setParams , head", iInputDS.head());
      # print("setParams , tail", iInputDS.tail());
      # print("setParams , columns", iInputDS.columns);
  
      self.mTime = iTime
      self.mOriginalSignal = iSignal
  
      self.mTransformation = iTransformation
      self.mTransformation.mOriginalSignal = iSignal
  
      lMissingImputer = tsmiss.cMissingDataImputer()
      lMissingImputer.mOptions = self.mOptions
      lSignal = lMissingImputer.interpolate_signal_if_needed(
          iInputDS, iSignal
      )
      lTime = lMissingImputer.interpolate_time_if_needed(
          iInputDS, iTime
      )
  
      self.mTransformation.fit(lSignal)
  
      self.mSignal = iTransformation.get_name(iSignal)
      self.mHorizon = iHorizon
      self.mSignalFrame = pd.DataFrame()
      self.mSignalFrame[self.mTime] = lTime
      self.mSignalFrame[self.mOriginalSignal] = lSignal
      self.mSignalFrame[self.mSignal] = self.mTransformation.apply(
          lSignal
      )
      self.mSignalFrame["row_number"] = np.arange(0, iInputDS.shape[0])
      # self.mSignalFrame.dropna(inplace = True);
      assert self.mSignalFrame.shape[0] > 0
  
      # print("SIGNAL_INFO " , self.mSignalFrame.info());
      # print(self.mSignalFrame.head())
  
      self.mSplit = tscut.cCuttingInfo()
      self.mSplit.mTime = self.mTime
      self.mSplit.mSignal = self.mSignal
      self.mSplit.mOriginalSignal = self.mOriginalSignal
      self.mSplit.mHorizon = self.mHorizon
      self.mSplit.mSignalFrame = self.mSignalFrame
      self.mSplit.mOptions = self.mOptions
  
      self.mTimeInfo = tsti.cTimeInfo()
      self.mTimeInfo.mTime = self.mTime
      self.mTimeInfo.mSignal = self.mSignal
      self.mTimeInfo.mOriginalSignal = self.mOriginalSignal
      self.mTimeInfo.mHorizon = self.mHorizon
      self.mTimeInfo.mSignalFrame = self.mSignalFrame
      self.mTimeInfo.mOptions = self.mOptions
      self.mTimeInfo.mSplit = self.mSplit
  
      self.mExogenousInfo = None
      if iExogenousData is not None:
          self.mExogenousInfo = tsexog.cExogenousInfo()
          self.mExogenousInfo.mExogenousData = iExogenousData
          self.mExogenousInfo.mTimeInfo = self.mTimeInfo
          self.mExogenousInfo.mOptions = self.mOptions
  
imports: import pandas
  import numpy
  import traceback
  import dill
  from pathos.multiprocessing import ProcessingPool
  import time
  import threading
  from .None import Time
  from .None import Exogenous
  from .None import MissingData
  from .None import Signal_Transformation
  from .None import Perf
  from .None import SignalDecomposition_Trend
  from .None import SignalDecomposition_Cycle
  from .None import SignalDecomposition_AR
  from .None import Options
  from .None import TimeSeriesModel
  from .None import TimeSeries_Cutting
  from .None import Utils
  import copy
label_desc: Use image node_id 3 for calling the cSignalDecompositionOneTransform obj's underlying member method code with example usage: obj.setParams(iInputDS, iTime, iSignal, iHorizon, iTransformation, iExogenousData) without return types