Skip to main content

A python version of DART_LAB: interactive ensemble data assimilation teaching tools

Project description

Binder

pyDARTLAB

pyDARTLAB is a Python version of DART_LAB, the interactive ensemble data assimilation tutorial distributed with NCAR's DART (Data Assimilation Research Testbed). The DART_LAB MATLAB tools and slide decks become a Python package plus a set of Jupyter notebooks, so the whole tutorial can be done in a notebook.

Example twod

Documentation is online at https://ncar.github.io/pyDARTLAB

You can try the notebooks online with Binder: pyDARTLABbinder

Disclaimer: This is a project to explore using Claude - the AI tool.

Installation

pip install -e ".[tutorial]"

The tutorial

jupyter lab notebooks/

Start with 00_getting_started.ipynb. The six numbered notebooks replace the six DART_LAB slide sections:

  1. Ensemble data assimilation concepts in 1D
  2. Multivariate assimilation
  3. Inflation and localization
  4. Non-Gaussian and bounded filters (QCEFF)
  5. Adaptive inflation
  6. Using the real DART system

The package

Three layers, mirroring the design of the MATLAB DART_LAB:

  • pydartlab — GUI-free algorithms ported from DART/guide/DART_LAB/matlab/private: EAKF/EnKF/RHF observation increments, gamma and bounded-RHF filters, the QCEFF/probit (PPI) transforms, fixed and adaptive inflation (Gaussian and inverse-gamma), Gaspari-Cohn localization, increment regression, and the Lorenz 63/96 models.
  • pydartlab.experiments — scriptable cycling DA experiments (OneDExperiment, KalmanCycle, Lorenz63Experiment, Lorenz96Experiment).
  • pydartlab.apps — the interactive tools, one per MATLAB app (gaussian_product, oned_ensemble, oned_cycle, oned_model, oned_model_inf, twod_ensemble, twod_ppi_ensemble, bounded_oned_ensemble, run_lorenz_63, run_lorenz_96, run_lorenz_96_inf). Use %matplotlib widget in the notebook; every click-driven app also has a set_ensemble() method for environments without mouse support.

Colors follow the DART_LAB convention (green = prior, red = observation, blue = posterior) and are settable — pydartlab.style.use_colorblind_palette() switches to an Okabe-Ito palette.

Development

pip install -e ".[dev]"
python -m pytest
ruff check src tests

Notebook outputs are kept out of version control with nbstripout. After cloning, enable the filter once:

pip install nbstripout
nbstripout --install --attributes .gitattributes
git config filter.nbstripout.extrakeys metadata.language_info

Running the tutorial notebooks then never shows up as a change in git.

The test suite includes golden-file comparisons against the MATLAB DART_LAB private functions. To (re)generate the reference data, run tests/matlab_reference/generate_reference.m in MATLAB once; the resulting CSVs are read by tests/test_matlab_golden.py (tests skip when the CSVs are absent).

Contributing

Contributions are welcome! If you have a feature request, bug report, or a suggestion, please open an issue on our GitHub repository.

License

pyDARTLAB is released under the Apache License 2.0. For more details, see the LICENSE file in the root directory of this source tree or visit Apache License 2.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydartlab-0.1.0.dev0.tar.gz (415.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydartlab-0.1.0.dev0-py3-none-any.whl (65.3 kB view details)

Uploaded Python 3

File details

Details for the file pydartlab-0.1.0.dev0.tar.gz.

File metadata

  • Download URL: pydartlab-0.1.0.dev0.tar.gz
  • Upload date:
  • Size: 415.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for pydartlab-0.1.0.dev0.tar.gz
Algorithm Hash digest
SHA256 2e6c286091e3b2a001a7ff6e88df4123338272ae3a53b38e613e861904abfadc
MD5 73a6602b390c7e75c8d5f9f367e739c4
BLAKE2b-256 406561224701fee3f23ed39971a877a5cb49236bb7dbbb2acb908220fd137442

See more details on using hashes here.

File details

Details for the file pydartlab-0.1.0.dev0-py3-none-any.whl.

File metadata

  • Download URL: pydartlab-0.1.0.dev0-py3-none-any.whl
  • Upload date:
  • Size: 65.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for pydartlab-0.1.0.dev0-py3-none-any.whl
Algorithm Hash digest
SHA256 e4d59f960cafb486db8953147f24a1bee0f05523d7c07f9833f3d91bb0cd9f09
MD5 f4c062a8a9867e8621a9c40456b92e46
BLAKE2b-256 e9d47b33aa0927391bab795090a4100f955c26fc8264b72eb25274e36e20d7f5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page