Recent researches in data assimilation lead to the introduction of the parametric Kalman filter (PKF): an implementation of the Kalman filter, where the covariance matrices are approximated by a parameterized covariance model. In the PKF, the dynamics of the covariance during the forecast step relies on the prediction of the covariance parameters. Hence, the design of the parameter dynamics is crucial while it can be tedious to do this by hand. This contribution introduces a python package, SymPKF, able to compute PKF dynamics for univariate statistics and when the covariance model is parameterized from the variance and the local anisotropy of the correlations. The ability of SymPKF to produce the PKF dynamics is shown on a non-linear diffusive advection (Burgers equation) over a 1D domain and the linear advection over a 2D domain. The computation of the PKF dynamics is performed at a symbolic level using sympy (Meurer2017), but an automatic code generator is also introduced to perform numerical simulations. A final multivariate example illustrates the potential of SymPKF to go beyond the univariate case.
To illustrate SymPKF, we first consider the Burgers' equation. The dynamics is defined thanks to sympy Meurer2017
Definition of the dynamics by using sympy
The definition of the Burgers dynamics relies on the definition of a coordinate system PDESystem
of SymPKF, as shown in the following illustration.
Computation of the PKF dynamics using SymPKF
Then, the computation of the PKF dynamics is performed in SymPKF by using the
class SymPKF
as follows
It appears that the dynamics is not closed since the expression can not be computed from the known quantities
This shows that, in general, the PKF dynamics is not closed. To go further, a closure is needed, either from an analytical expression or from a data-driven strategy as proposed in PDE-NetGen
Automatic code generation for numerical simulations
To illustrate the potential of using SymPKF, we introduce the closure proposed by Pannekoucke2018, and from which a numerical code can be rendered as follows
Here, closed_kf_burgers
is an instance of the class ClosedPKFBurgers
which has been generated at runtime. This class inherit from an abstract class Model
useful methods. It can perform a forecast
as well as an ensemble_forecast
as shown in the following UML diagram
An example of numerical simulation performed from the runtime code is given here:
The notebook corresponding to the Burgers' dynamics can be found in the ./example/
directory PKF on Burgers (see pdf file ).
While SymPKF applies in 1D, it also applies in 2D and 3D domains. As shown in the following two pictures which detail the case of the advection equation.
see the corresponding notebooks PKF for 2D advection (pdf output. An ensemble validation is also provided as an example, but it relies on a side package pydap
not published PKF 2D with ensemble validation (see pdf output )
The present implementation of SymPKF can also be used to study the dynamic of multivariate situation as shown below.
See the corresponding notebooks PKF for 1D harmonic oscillator ( see pdf output ) and PKF for 2D harmonic oscillator (see pdf output)
Note that this example shows that SymPKF can handle a system of partial differential equation.
A simple way to install sympkf
is to use pip as follows
pip install sympkf
- Clone the repository
git clone https://github.com/opannekoucke/sympkf.git
- Install the package
make install
(orpython setup.py install
) - Examples are given as jupyter notebooks (see ./example/)
@Article{Pannekoucke2021GMD,
author = {Olivier Pannekoucke and Philippe Arbogast},
journal = {Geoscientific Model Development},
title = {{SymPKF} (v1.0): a symbolic and computational toolbox for the design of parametric Kalman filter dynamics},
year = {2021},
month = {oct},
number = {10},
pages = {5957--5976},
volume = {14},
doi = {10.5194/gmd-14-5957-2021},
publisher = {Copernicus {GmbH}},
}