code: def test_saver_UKF():
      def fx(x, dt):
          F = np.array(
              [
                  [1, dt, 0, 0],
                  [0, 1, 0, 0],
                  [0, 0, 1, dt],
                  [0, 0, 0, 1],
              ],
              dtype=float,
          )
  
          return np.dot(F, x)
  
      def hx(x):
          return np.array([x[0], x[2]])
  
      dt = 0.1
      points = MerweScaledSigmaPoints(4, 0.1, 2.0, -1)
      kf = UnscentedKalmanFilter(
          dim_x=4, dim_z=2, dt=dt, fx=fx, hx=hx, points=points
      )
  
      z_std = 0.1
      kf.R = np.diag([z_std**2, z_std**2])  # 1 standard
      kf.x = np.array([-1.0, 1.0, -1.0, 1])
      kf.P *= 1.0
  
      zs = [[i, i] for i in range(40)]
      s = Saver(
          kf, skip_private=False, skip_callable=False, ignore=["z_mean"]
      )
      for z in zs:
          kf.predict()
          kf.update(z)
          # print(kf.x, kf.log_likelihood, kf.P.diagonal())
          s.save()
      s.to_array()
  
file_path: filterpy/filterpy/common/tests/test_helpers.py
imports: from filterpy.common import kinematic_kf, Saver, inv_diagonal, outer_product_sum
  import numpy
  from filterpy.kalman import MerweScaledSigmaPoints, UnscentedKalmanFilter, ExtendedKalmanFilter
label_desc: Use image node_id 2 for calling a global function with example usage: test_saver_UKF() and returns: np, np