Skip to main content

Python interface to the NCEP G2C Library for reading/writing GRIB2 files.

Project description

grib2io

License: MIT

Python 3.8 Python 3.9 Python 3.10 Python 3.11 Python 3.12 Python 3.13 Python 3.14

Build Linux Build macOS

PyPI PyPI - Downloads

Anaconda-Server Badge Anaconda-Server Badge Anaconda-Server Badge

Binder

Introduction

grib2io provides a Python interface to the NCEP GRIB2 C library for reading and writing GRIB2 files. The World Meteorological Organization (WMO) GRIdded Binary, Edition 2 (GRIB2) is a table-driven, binary data format designed for transmitting large volumes of gridded meteorological and atmospheric data.

grib2io is the successor to ncepgrib2 which was a module within pygrib. As of pygrib v2.1, development of ncepgrib2 was dropped in favor of continued development of the pygrib module which provides an interface to the ECMWF ecCodes library. grib2io aims to provide a fast, efficient, and easy-to-use interface to the NCEP g2c library. One way to accomplish this is to leverage the NCEP GRIB2 Tables which are included in grib2io. With these tables included and functions interact with them, grib2io provides a translation of GRIB2's integer coded metadata to human-readable language.

Optionally (but recommended), grib2io supports spatial interpolation via its internal Cython extension module, iplib, which provides an interface to the Fortran-based NCEPLIBS-ip. Grid to grid and grid to station points are supported with OpenMP threading, provided that NCEPLIBS-ip was built with OpenMP support.

[!IMPORTANT] Beginning with grib2io v2.4.0, grib2io-interp component package is no longer supported. Interpolation support is available in grib2io via Cython interface to NCEPLIBS-ip.

Documentation

Required Software

  • Python 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.14
  • NCEPLIBS-g2c 1.7.0+
  • setuptools 34.0+
  • Cython 3.0+
  • NumPy 1.22+
  • pyproj 1.9.6+
  • C compiler: GNU, Intel, and Apple Clang have been tested.

Required External Libraries

NCEPLIBS-g2c

The NCEPLIBS-g2c library is required for grib2io. You will have to build and install this yourself, but this is not difficult. For macOS users, NCEPLIBS-g2c can be installed via this Homebrew Tap. If you use the *conda ecosystems, then you can install via conda install -c conda-forge nceplibs-g2c.

Optional External Libraries

NCEPLIBS-ip (v5.1.0 or newer)

The NCEPLIBS-ip Fortran library provides interpolation support. You will have to build and install this yourself, but this is not difficult. For macOS users, NCEPLIBS-ip can be installed via this Homebrew Tap. If you use the *conda ecosystems, then you can install via conda install -c conda-forge nceplibs-ip.

Install

Once again, this assumes that NCEPLIBS-g2c has been installed. If NCEPLIBS-g2c has been installed into a "common" installation path, then it will be found, otherwise define environment variable G2C_DIR with the installation path.

  • From PyPI via pip:
pip install grib2io
conda install -c conda-forge grib2io
  • From source:
pip install .

[!NOTE]

Building with static libraries

It is recommended to not build with static libraries, but in NOAA HPC production environments, this is preferred. Beginning with grib2io v2.4.0, the process to build with static libs as changed. The environment variable, USE_STATIC_LIBS has been removed and replaced with library-specific env vars, G2C_STATIC and IP_STATIC with acceptable values of True or False. The default value is False (i.e. build with shared libs). If statically linking to NCEPLIBS-ip, then provide the path to of the BLAS/LAPACK library via env var BLA_DIR.

export G2C_STATIC=True
export IP_STATIC=True
export G2C_DIR=<path to g2c> # Optional
export IP_DIR=<path to ip> # Optional
export BLA_DIR=<path to BLAS/LAPACK used for ip> # Needed if IP_STATIC=True
pip install .

Development

grib2io is the de facto Python interface to the NCEPLIBS-g2c library. Therefore, its development and evolution will primarily focus on serving that purpose and supporting its core users—mainly meteorologists, physical scientists, and software developers working within NOAA’s National Weather Service (NWS), the National Centers for Environmental Prediction (NCEP), and other NOAA and U.S. Government organizations.

Disclaimer

This repository is a scientific product and is not official communication of the National Oceanic and Atmospheric Administration, or the United States Department of Commerce. All NOAA GitHub project code is provided on an 'as is' basis and the user assumes responsibility for its use. Any claims against the Department of Commerce or Department of Commerce bureaus stemming from the use of this GitHub project will be governed by all applicable Federal law. Any reference to specific commercial products, processes, or services by service mark, trademark, manufacturer, or otherwise, does not constitute or imply their endorsement, recommendation or favoring by the Department of Commerce. The Department of Commerce seal and logo, or the seal and logo of a DOC bureau, shall not be used in any manner to imply endorsement of any commercial product or activity by DOC or the United States Government.

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

grib2io-2.7.0.tar.gz (1.2 MB view details)

Uploaded Source

File details

Details for the file grib2io-2.7.0.tar.gz.

File metadata

  • Download URL: grib2io-2.7.0.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for grib2io-2.7.0.tar.gz
Algorithm Hash digest
SHA256 eda64382d589c50e421f414534490ae46e3600d27c4ea78929248276b8bb47fc
MD5 a0da4b7ec5424a074be9b9805d3538b9
BLAKE2b-256 6566dfbd9e58ecdd30fe2aaf77ed969e45e27a4a96b68efe406172b2f8037898

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