flexprep
WARNING:
This project is in BETA and under active development. Interfaces and functionality are subject to change.
flexprep is a Python toolkit to retrieve and preprocess ECMWF IFS fields for the Lagrangian particle dispersion model FLEXPART.
It uses ECMWF’s earthkit-data library to load meteorological GRIB data into familiar xarray/numpy arrays for computation, preserves GRIB metadata, and can write the results back to GRIB2.
Compatibility
Target model: FLEXPART V10
Install the latest release from PyPI
# pip
pip install flexprep
# or poetry
poetry add flexprep
At a glance
-
Retrieve IFS forecasts
-
Preprocess for FLEXPART V10
- De-accumulates precipitation, radiation, and fluxes
- Converts
etadot→omega(Pa s⁻¹)
-
Write GRIB2
- Preserves/overrides GRIB metadata as needed
- Ensures all fields are written as GRIB2
Documentation
See the docs/ folder for detailed information:
Changelog
See CHANGELOG.md for version history.
Running Tests
To run the full test suite:
git clone https://gitlab.phaidra.org/flexpart/flexprep.git
cd flexprep
poetry install --with dev
poetry run pytest
Feedback
Found a bug or have feedback? Please open an issue.
Roadmap / TODO
- Publish a hosted documentation site (e.g., Read the Docs or GitHub Pages)
- Add Copernicus Data Store (CDS) as a data source
- Find suitable package name (flexprep?)
Testing the flexprep Package
This guide explains how to test the flexprep pipeline using example scripts included in the repository. Each example demonstrates a full workflow: loading, preprocessing, and writing FLEXPART-ready GRIB2 files.
1️. Install the package
Option A — From PyPI
pip install flexprep==0.1.3
2️. Get the example scripts
Clone the repository to access the example workflows.
git clone https://gitlab.phaidra.org/flexpart/flexprep.git
cd flexprep
3. Run an example pipeline
Each example runs the flexprep pipeline end-to-end.
| Data source | Command | Notes |
|---|---|---|
| 🧪 Bundled test data | python examples/run_pipeline_local.py tests/data/test_sources_raw_ifs.tar.gz |
Works offline using a small bundled dataset |
| 💾 Local GRIB files | python examples/run_pipeline_local.py /path/to/grib_dir |
Use your own GRIB directory |
| ☁️ ECMWF MARS archive | python examples/run_pipeline_mars.py --date 2025-09-29 --time 12 --step "1/to/2/by/1" --max-level 137 |
Requires ECMWF MARS credentials (.ecmwfapirc) |
3️. Check the outputs
After running a pipeline, the processed GRIB2 files are written to ./out_grib2/.
Each file corresponds to one forecast step (e.g. dispf2025072912).
Found a bug or have feedback? Please open an issue or contact nina.burgdorfer@meteoswiss.ch
Metadata
Release files for flexprep 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| flexprep-0.2.2.tar.gz | 16.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| flexprep-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 38.0 kB
Release files / flexprep-0.2.2.tar.gz
| Download URL | flexprep-0.2.2.tar.gz |
|---|---|
| Size | 16.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d2f2cc6efa655acc7667bbdb05e03d95cd973a6ff661ecf605956abcf19cf74e
|
|
BLAKE2b-256 checksum How to use checksums |
35a6e8b23af4e9a3dd5dd0b0d23f1f25275d70a260328c75c2f14434b60abad4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.4 CPython/3.11.9 Linux/5.14.21-150500.55.97_13.0.78-cray_shasta_c
|
Release files / flexprep-0.2.2-py3-none-any.whl
| Download URL | flexprep-0.2.2-py3-none-any.whl |
|---|---|
| Size | 21.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
024f9a5895286b42ab2239e1acdc2e3909be307e95f7203f81e77183f3abb3e5
|
|
BLAKE2b-256 checksum How to use checksums |
690f1644ef5293b4f3bcf7f926c8c518eb1120f58aca9c16d43c2e27977ac2e5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.4 CPython/3.11.9 Linux/5.14.21-150500.55.97_13.0.78-cray_shasta_c
|