Skip to main content

A Python library for pre-processing FLEXPART inputs

Project description

flexprep

PyPI version Licence

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

  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

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

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

flexprep-0.2.1.tar.gz (16.4 kB view details)

Uploaded Source

Built Distribution

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

flexprep-0.2.1-py3-none-any.whl (21.6 kB view details)

Uploaded Python 3

File details

Details for the file flexprep-0.2.1.tar.gz.

File metadata

  • Download URL: flexprep-0.2.1.tar.gz
  • Upload date:
  • Size: 16.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.10.12 Linux/6.8.0-101-generic

File hashes

Hashes for flexprep-0.2.1.tar.gz
Algorithm Hash digest
SHA256 dee673b1623e1b328a5fc612ad17b3e5a23e02e78968e0c8a09c0ba7dbdaed1e
MD5 bd2a77b8256c51e9b6fa1e701ec5da80
BLAKE2b-256 1eec9c6b6f49a8c1b6acaa8ca2e2803109788f3e8c24015218f5930720479acc

See more details on using hashes here.

File details

Details for the file flexprep-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: flexprep-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 21.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.10.12 Linux/6.8.0-101-generic

File hashes

Hashes for flexprep-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fe4588c48eacf68b88bdd358955b2a288f6166ff2e9edd61fbca3b751c9724e2
MD5 5457a31607a4932e248b420b6728656d
BLAKE2b-256 7e7e2a73a4675f69bc7ebc58683230f3be0c0426a0ef6b3a6104098ee3fa1112

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