The algorithm is based on the expectation-maximization (EM) algorithm developed by Shumway and Stoffer (1982) and Ghahramani and Hinton (1996). The E-Step consists of Kalman smoothing, the M-Step is solved exactly. This implementation is based on code by Zoubin Ghahramani. Details of this algorithm can be found in the appendix of Cheng and Sabes (2006).