class_docstr: The main class of the dynamic linear model.
  
  
  This is the main class of the Bayeisan dynamic linear model.
  It provides the modeling, filtering, forecasting and smoothing
  function of a dlm.
  The dlm use the @builder to construct the @baseModel based on user supplied
  @components and then run @kalmanFilter to filter the result.
  
  Example 1:
      >>> # randomly generate fake data on 1000 days
      >>> import numpy as np
      >>> data = np.random.random((1, 1000))
      >>> # construct the dlm of a linear trend and a 7-day seasonality
      >>> myDlm = dlm(data) + trend(degree = 2, 0.98) + seasonality(period = 7, 0.98)
      >>> # filter the result
      >>> myDlm.fitForwardFilter()
      >>> # extract the filtered result
      >>> myDlm.getFilteredObs()
  
  Example 2 (fit a linear regression):
      >>> from pydlm import dynamic
      >>> data = np.random.random((1, 100))
      >>> mydlm = dlm(data) + trend(degree=1, 0.98, name='a') +
                      dynamic(features=[[i] for i in range(100)], 1, name='b')
      >>> mydlm.fit()
      >>> coef_a = mydlm.getLatentState('a')
      >>> coef_b = mydlm.getLatentState('b')
  
  Attributes:
     data: a list of doubles of the raw time series data.
           It could be either the python's built-in list of
           doubles or numpy 1d array.
docstr: Pop out the data for a given date
  
  Args:
      date: the index indicates which date to be popped out.
docstr_tok: ["Pop","out","the","data","for","a","given","date","Args",":","date",":","the","index","indicates","which","date","to","be","popped","out","."]
code: def popout(self, date):
      """Pop out the data for a given date
  
      Args:
          date: the index indicates which date to be popped out.
  
      """
      if date < 0 or date > self.n - 1:
          raise NameError(
              "The date should be between 0 and " + str(self.n - 1)
          )
  
      # initialize the model to ease the modification
      if not self.initialized:
          self._initialize()
  
      # pop out the data at date
      self.data.pop(date)
      self.n -= 1
  
      # pop out the feature at date
      for name in self.builder.dynamicComponents:
          comp = self.builder.dynamicComponents[name]
          comp.popout(date)
  
      # pop out the results at date
      self.result._popout(date)
  
      # update the filtered and the smoothed steps
      self.result.filteredSteps[1] = date - 1
      self.result.smoothedSteps[1] = date - 1
  
      if self.result.filteredSteps[0] > self.result.filteredSteps[1]:
          self.result.filteredSteps = [0, -1]
          self.result.smoothedSteps = [0, -1]
  
      elif self.result.smoothedSteps[0] > self.result.smoothedSteps[1]:
          self.result.smoothedSteps = [0, -1]
  
imports: from copy import deepcopy
  from numpy import matrix
  from pydlm.predict.dlmPredictMod import dlmPredictModule
  from pydlm.access.dlmAccessMod import dlmAccessModule
  from pydlm.tuner.dlmTuneMod import dlmTuneModule
  from pydlm.plot.dlmPlotMod import dlmPlotModule
label_desc: Use image node_id 12 for calling the dlm obj's underlying member method code with example usage: obj.popout(date) without return types