Skip to main content

A Python library for pre-processing FLEXPART inputs

Project description

preFLEXPART

PyPI version Licence

WARNING:

This project is in BETA and under active development. Interfaces and functionality are subject to change.

preFLEXPART 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

# poetry
poetry add preflexpart

# or pip
pip install preflexpart

At a glance

  1. Retrieve IFS forecasts

  2. Preprocess for FLEXPART V10

    • De-accumulates precipitation, radiation, and fluxes
    • Converts etadotomega (Pa s⁻¹)
  3. Write GRIB2

    • Preserves/overrides GRIB metadata as needed
    • Ensures all fields are written as GRIB2

Example usage

Run the full preFLEXPART preprocessing pipeline end-to-end using the example scripts in the examples/ directory. Each script demonstrates a complete workflow: loading IFS data, preprocessing it, and writing FLEXPART-ready GRIB2 files.

Data Source Example Command
🧪 Bundled test data python -s examples/run_pipeline_local.py tests/data/test_sources_raw_ifs.tar.gz
💾 Local GRIB files python -s examples/run_pipeline_local.py /path/to/grib_dir
☁️ ECMWF MARS archive python -s examples/run_pipeline_mars.py --date 2025-09-29 --time 12 --step "1/to/2/by/1" --max-level 137
🌍 ECMWF Polytope API python -s examples/run_pipeline_polytope.py --date 2025-07-29 --time 1200 --step "1/to/2/by/1" --max-level 137

Documentation

See the docs/ folder for detailed information:

Changelog

See CHANGELOG.md for version history.

Running Tests

To run the full test suite:

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 preFLEXPART Package

This guide explains how to test the preFLEXPART 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

You can either install it from PyPI (recommended for testers) or from source (for contributors).

Option A — From PyPI

pip install preflexpart==0.1.3-rc1

💡 After installation, you can run the example scripts using plain python
no need for Poetry when installed via pip.

Option B — From source (development setup)

git clone https://gitlab.phaidra.org/flexpart/preflexpart.git
cd preflexpart
poetry install

2️. Run an example pipeline

Each example runs the preFLEXPART 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)

🧠 If you installed with Poetry instead of pip, prefix each command with:

poetry run python ...

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).

Notes for Testers

  • You can start testing immediately using the included dataset:
    python examples/run_pipeline_local.py tests/data/test_sources_raw_ifs.tar.gz
    
  • MARS and Polytope examples require ECMWF access tokens or credentials.
  • All examples write FLEXPART-ready GRIB2 files suitable for dispersion simulations.

Found a bug or have feedback? Please open an issue or contact nina.burgdorfer@meteoswiss.ch

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

preflexpart-0.1.3rc1.tar.gz (28.2 kB view details)

Uploaded Source

Built Distribution

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

preflexpart-0.1.3rc1-py3-none-any.whl (21.5 kB view details)

Uploaded Python 3

File details

Details for the file preflexpart-0.1.3rc1.tar.gz.

File metadata

  • Download URL: preflexpart-0.1.3rc1.tar.gz
  • Upload date:
  • Size: 28.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.1 CPython/3.11.7 Linux/6.8.0-84-generic

File hashes

Hashes for preflexpart-0.1.3rc1.tar.gz
Algorithm Hash digest
SHA256 27fdfaee13ff490e9e6eebf17684e2ebf136decd732cd1f970abf8ddfe6d73ab
MD5 06c80816d079c9c8f0d0b2d446dcfc29
BLAKE2b-256 b64a3cb93e571ae783cabb29694807bbb8e8daf110d5907fd2c3d39138b4c78a

See more details on using hashes here.

File details

Details for the file preflexpart-0.1.3rc1-py3-none-any.whl.

File metadata

  • Download URL: preflexpart-0.1.3rc1-py3-none-any.whl
  • Upload date:
  • Size: 21.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.1 CPython/3.11.7 Linux/6.8.0-84-generic

File hashes

Hashes for preflexpart-0.1.3rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 5a848b66af6d22b13145d57f2ea3e10f732eae8a2bb2eedef097ad2c6289cb7f
MD5 f97fde76d439b54ff0038640534aa5bf
BLAKE2b-256 0c45dfc781826228369089e6fca55bf4c54036c12b82b48d1ed577fd9aa75bcb

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