code: def save(self):
          
  
          kf = self._kf
  
          # force all attributes to be computed. this is only necessary
          # if the class uses properties that compute data only when
          # accessed
          for prop in self.properties:
              self._DL[prop[0]].append(getattr(kf, prop[0]))
  
          v = copy.deepcopy(kf.__dict__)
  
          if self._skip_private:
              for key in list(v.keys()):
                  if key.startswith('_'):
                      print('deleting', key)
                      del v[key]
  
          if self._skip_callable:
              for key in list(v.keys()):
                  if callable(v[key]):
                      del v[key]
  
          for ig in self._ignore:
              if ig in v:
                  del v[ig]
  
          for key in list(v.keys()):
              self._DL[key].append(v[key])
  
          self.__dict__.update(self._DL)
          self._len += 1
docs: save the current state of the Kalman filter