Intro to data assimilation (DA) and the EnKF
October 17, 2025 ยท View on GitHub
An interactive (Jupyter notebook) tutorial. Jump right in (no installation!) by clicking the button of one of these cloud computing providers:
Prerequisites: basics of calculus, matrices (e.g. inverses), random variables, Python (numpy).

Instructions for working locally
If you prefer, you can also run these notebooks on your own (Linux/Windows/Mac) computer. This is a bit snappier than running them online.
-
Prerequisite: Python 3.12.
If you're an expert, setup a python environment however you like. Otherwise: Install Anaconda, then open the Anaconda terminal and run the following commands:conda create --yes --name my-env python=3.12 conda activate my-env python --versionEnsure the printed version is 3.12.
Keep using the same terminal for the commands below. -
Install:
- Download and unzip (or
git clone) this repository (see the green button up top) - Move the resulting folder wherever you like
cdinto the folder- Install requirements:
pip install -r path/to/requirements.txt
- Download and unzip (or
-
Launch the Jupyter notebooks:
- Launch the "notebook server" by executing:
jupyter-notebook
This will open up a page in your web browser that is a file navigator. - Enter the folder
DA-tutorials/notebooks, and click on a tutorial (T1... .ipynb).
- Launch the "notebook server" by executing:
Developer notes
Please don't hesitate to submit issues or pull requests!
Why nb_mirrors/ dir?
- Easier to read git diffs
- Enable importing from notebook (script mirrors)
Target audience
Students in their 3rd year or above in university.
Prerequisites: some experience with of numpy (Python) as well as 1st-year, university-level statistics and linear algebra.
Citing
Please cite as
@phdthesis{raanes2016thesis,
author = {Raanes, Patrick N.},
title = {Improvements to Ensemble Methods for Data Assimilation in the Geosciences},
school = {University of Oxford},
year = {2016},
month = {January}
}