pydpac contains variational and ensemble-based data assimiliation (DA) algorithms and simple models written in pure Python.
Try Demo.ipynb
for an example with L96.
main.py
describes the experimental parameters and provides modules for conducting an observation system simulation experiment (OSSE) along with exp_func.py
.
run.sh
provides the procedures to compare several DA algorithms.
See analysis/README.md
if you would like to use Fortran-based numerical optimization algorithms (CG+ by G. Liu, J. Nocedal, and R. Waltz, and LBFGS by J. Nocedal).
- Deterministic DA
- Kalman filter (Kalman 1960)
- Three-dimensional, Four-dimensional variational method (3DVar, 4DVar; Talagrand and Courtier 1987)
- (For nesting system) Three-dimensional variational blending assimilation (Guidard and Fischer 2008)
- Ensemble DA
- Ensemble Kalman Filter (Evensen 1994)
- Ensemble transform Kalman filter (ETKF; Bishop et al. 2001)
- Perturbed observation method (PO; Burgers et al. 1998, Houtekamer et al.2005)
- Serial ensemble square root filter (EnSRF; Whitaker and Hamill 2002)
- Ensemble adjustment Kalman filter (EAKF, local least-square formulation; Anderson 2003)
- Local ensemble transform Kalman filter (LETKF; Hunt et al. 2007)
- Maximum likelihood ensemble filter (MLEF; Zupanski 2005, Zupanski et al. 2008)
- Ensemble variational method (EnVar; Liu et al. 2008)
- (For nesting system) ensemble variational blending assimilation (Nakashita and Enomoto 2025)
- Ensemble Kalman Filter (Evensen 1994)
-
lorenz.py
: A spatially one-dimensional chaotic model (Lorenz 1995;Lorenz and Emanuel 1998) -
lorenz2.py
: A spatially one-dimensional chaotic model with large-scale dynamics (type II model in Lorenz 2005) -
lorenz3.py
: A spatially one-dimensional chaotic model with scale interaction (type III model in Lorenz 2005) -
burgers.py
: A spatially one-dimensional advection and diffusion model (Burgers 1948;Zupanski et al. 2008) -
kdvb.py
: A one-dimensional Korteweg–de Vries–Burgers (KdVB) model (Marchant and Smyth 2002;Zupanski 2005;Enomoto and Nakashita 2024)
To try the ensemble variational blending DA in the nested Lorenz system (Nakashita and Enomoto 2025, Tellus A), checkout v1.0.0
and follow the steps below.
-
Run
model/lorenz3m.py
to create a nature run. -
Run Makefile in
analysis
directory to compile the Fortran-based numerical optimization libraries. -
Run
run_l05nest.sh
in the parent directory.
- NAKASHITA, Saori: programmer
- ENOMOTO, Takeshi: project lead