Home / Software

Software

Open-source code from the lab. Every package is documented in a SoftwareX paper and lives on GitHub.

4Packages
4SoftwareX papers
10Ensemble methods in TEDA
1.5-layer quasi-geostrophic model: potential vorticity and streamfunction
1.5-layer quasi-geostrophic model on a 193 × 193 grid, one of the benchmark models: potential vorticity (left) and streamfunction (right).
Benchmarking platform · FastAPI · 2026

PyTEDA-web

Nino-Ruiz, E. D. · SoftwareX 34, 102738 · 2026

A web platform for interactive data assimilation benchmarking. Experiments run on the server and stream their output to the browser in real time, and every run is stored so it can be compared later. It builds on the TEDA code base and adds larger test models such as the quasi-geostrophic model shown here.

About PyTEDA-web   GitHub   Paper

TEDA

A lightweight, object-oriented Python toolbox for teaching ensemble-based data assimilation. Students pick a method, a toy model and an observation setup, run the simulation and look at how background and analysis errors evolve.

How easy is it to use?

from analysis.analysis_enkf_modified_cholesky \
    import AnalysisEnKFModifiedCholesky

model = Lorenz96()
background = Background(model, ensemble_size=20)
analysis = AnalysisEnKFModifiedCholesky(model, r=2)
observation = Observation(m=32, std_obs=0.01)

params = {'obs_freq': 0.1,
          'obs_times': 10,
          'inf_fact': 1.04}
simulation = Simulation(model, background,
                        analysis, observation,
                        params=params)
simulation.run()

# background and analysis errors per step
errb, erra = simulation.get_errors()

Toy models included: the Duffing equation (2 variables), Lorenz-63 (3 variables) and Lorenz-96 (40 variables), all chaotic under the right parameters. New models and methods plug in through the same abstract classes.

GitHub   Paper, SoftwareX 2025   ICCS 2022

Supported methods

ClassMethodReference
AnalysisEnKFEnKF with the full covariance matrixEvensen (2009)
AnalysisEnKFNaiveEnKF via an iterative Sherman-Morrison formulaNino-Ruiz, Sandu, Anderson (2015)
AnalysisEnKFCholeskyEnKF via Cholesky decompositionMandel (2006)
AnalysisEnKFModifiedCholeskyEnKF via modified Cholesky decompositionNino-Ruiz, Sandu, Deng (2018)
AnalysisEnKFShrinkagePrecisionEnKF with shrinkage precision matrixNino-Ruiz, Sandu (2015)
AnalysisEnKFBLocEnKF with B-localizationGreybush et al. (2011)
AnalysisEnSRFEnsemble square root filterTippett et al. (2003)
AnalysisETKFEnsemble transform Kalman filterBishop, Etherton, Majumdar (2001)
AnalysisLETKFLocal ensemble transform Kalman filterHunt, Kostelich, Szunyogh (2007)
AnalysisLEnKFLocal ensemble Kalman filterOtt et al. (2004)

Research packages

Code we use in our own experiments, packaged for reuse.

Research package · Python · SoftwareX 2023

AMLCS-DA

Data assimilation for atmospheric general circulation models. This is the package the lab uses for experiments with the SPEEDY model at near-operational resolutions, including ensemble-based methods for its leapfrog integration scheme.

Statistical package · SoftwareX 2025

Precision matrices via modified Cholesky decomposition

The aml_pred_assim package estimates precision (inverse covariance) matrices from small samples in high dimensions via a modified Cholesky decomposition. It downloads climate fields from the Copernicus Climate Data Store, builds the predecessor structure of each grid point and fits the sparse factors with ridge regression, saving everything to NetCDF.