kalman
======

.. py:module:: smolgp.solvers.parallel.kalman


Functions
---------

.. autoapisummary::

   smolgp.solvers.parallel.kalman.ParallelKalmanFilter
   smolgp.solvers.parallel.kalman.make_associative_params
   smolgp.solvers.parallel.kalman._combine_per_pair
   smolgp.solvers.parallel.kalman.parallel_kalman_filter
   smolgp.solvers.parallel.kalman.postprocess


Module Contents
---------------

.. py:function:: ParallelKalmanFilter(kernel, X, y, R, return_v_S=False)

   Wrapper for the parallel Kalman filter.

   :param kernel: StateSpaceModel kernel
   :param X: data coordinates, e.g. time or (time, texp, instid)
   :param y: observations, shape (N, D)
   :param R: observation noise covariance, shape (N, D, D)

   :returns: b: filtered means
             C: filtered covariances
             eta:
             J:
   :rtype: A


.. py:function:: make_associative_params(Phi, H, Q, R, t, y, m0, P0)

   Generate the associative parameters needed for parallel Kalman

   See Eqns. 10, 11, 12 from Sarkka & Garcia-Fernandez (2020)



.. py:function:: _combine_per_pair(left, right)

   See Eqn. 13 & 14 of Sarkka & Garcia-Fernandez (2020) for
   a the algorithm and notation.



.. py:function:: parallel_kalman_filter(asso_params)

   Jax implementation of the parallel Kalman filter algorithm

   See Section 4A of Sarkka & Garcia-Fernandez (2020) for
   a detailed description of the algorithm and notation.

   Total runtime (span) complexity is ~O(logN) where N is the number
   of time steps.


.. py:function:: postprocess(Phi, H, Q, R, X, t, y, b, C, m0, P0)

