code: def predict(self, u=None):
          
  
          # compute mixed initial conditions
          xs, Ps = [], []
          for i, (f, w) in enumerate(zip(self.filters, self.omega.T)):
              x = zeros(self.x.shape)
              for kf, wj in zip(self.filters, w):
                  x += kf.x * wj
              xs.append(x)
  
              P = zeros(self.P.shape)
              for kf, wj in zip(self.filters, w):
                  y = kf.x - x
                  P += wj * (outer(y, y) + kf.P)
              Ps.append(P)
  
          #  compute each filter's prior using the mixed initial conditions
          for i, f in enumerate(self.filters):
              # propagate using the mixed state estimate and covariance
              f.x = xs[i].copy()
              f.P = Ps[i].copy()
              f.predict(u)
  
          # compute mixed IMM state and covariance and save posterior estimate
          self._compute_state_estimate()
          self.x_prior = self.x.copy()
          self.P_prior = self.P.copy()
docs: Predict next state (prior) using the IMM state propagation
          equations.
  
          Parameters
          ----------
  
          u : np.array, optional
              Control vector. If not `None`, it is multiplied by B
              to create the control input into the system.