CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-eccodes

Python interface to the ecCodes GRIB and BUFR decoder/encoder library for meteorological data processing

Pending
Overview
Eval results
Files

high-level-interface.mddocs/

High-Level Interface

Object-oriented interface providing Pythonic access to GRIB/BUFR data with automatic memory management, numpy integration, and iterator patterns for efficient data processing.

Capabilities

Message Classes

Object-oriented message interface with dictionary-like access.

class Message:
    """
    High-level message interface with automatic memory management.
    """
    
    def __getitem__(self, key):
        """Get message key value."""
    
    def __setitem__(self, key, value):
        """Set message key value."""
    
    def keys(self):
        """Get all available keys."""
    
    @property
    def data(self):
        """Get data values as numpy array."""
    
    @property
    def shape(self):
        """Get data shape."""

class GRIBMessage(Message):
    """GRIB-specific message interface."""

class BUFRMessage(Message):
    """BUFR-specific message interface."""

Reader Classes

Iterator classes for reading messages from files and streams.

class FileReader:
    """
    Iterator for reading messages from files.
    
    Parameters:
    - filename (str): Path to GRIB/BUFR file
    - product_kind (int, optional): Message type filter
    """
    
    def __init__(self, filename, product_kind=None):
        pass
    
    def __iter__(self):
        """Return iterator."""
    
    def __next__(self):
        """Get next message."""

class StreamReader:
    """
    Iterator for reading messages from streams.
    
    Parameters:
    - stream: File-like object
    - product_kind (int, optional): Message type filter
    """
    
    def __init__(self, stream, product_kind=None):
        pass

class MemoryReader:
    """
    Iterator for reading messages from memory buffers.
    
    Parameters:
    - data (bytes): Binary message data
    """
    
    def __init__(self, data):
        pass

Usage Examples

Using FileReader for Simple Data Access

from eccodes.highlevel import FileReader
import numpy as np

# Read all messages from file
for msg in FileReader('forecast.grib'):
    # Access metadata like dictionary
    param = msg['paramId']
    level = msg['level']
    date = msg['dataDate']
    
    # Get data as numpy array
    data = msg.data
    
    print(f"Parameter {param}, Level {level}")
    print(f"Data shape: {data.shape}")
    print(f"Data range: {data.min():.2f} to {data.max():.2f}")
    
    # Automatic memory management - no need to call codes_release

Working with Message Objects

from eccodes.highlevel import FileReader

with FileReader('analysis.grib') as reader:
    for msg in reader:
        # Dictionary-like access
        if msg['paramId'] == 130:  # Temperature
            # Modify message
            msg['level'] = 925  # Change level
            
            # Access grid information
            grid_shape = msg.shape
            ni, nj = msg['Ni'], msg['Nj']
            
            print(f"Grid: {ni}x{nj}, Shape: {grid_shape}")
            
            # Get available keys
            available_keys = list(msg.keys())
            print(f"Available keys: {len(available_keys)}")

Install with Tessl CLI

npx tessl i tessl/pypi-eccodes

docs

data-manipulation.md

error-handling.md

high-level-interface.md

index.md

indexing-search.md

key-value-access.md

message-operations.md

tile.json