or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

data-manipulation.mderror-handling.mdhigh-level-interface.mdindex.mdindexing-search.mdkey-value-access.mdmessage-operations.md

high-level-interface.mddocs/

0

# High-Level Interface

1

2

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

3

4

## Capabilities

5

6

### Message Classes

7

8

Object-oriented message interface with dictionary-like access.

9

10

```python { .api }

11

class Message:

12

"""

13

High-level message interface with automatic memory management.

14

"""

15

16

def __getitem__(self, key):

17

"""Get message key value."""

18

19

def __setitem__(self, key, value):

20

"""Set message key value."""

21

22

def keys(self):

23

"""Get all available keys."""

24

25

@property

26

def data(self):

27

"""Get data values as numpy array."""

28

29

@property

30

def shape(self):

31

"""Get data shape."""

32

33

class GRIBMessage(Message):

34

"""GRIB-specific message interface."""

35

36

class BUFRMessage(Message):

37

"""BUFR-specific message interface."""

38

```

39

40

### Reader Classes

41

42

Iterator classes for reading messages from files and streams.

43

44

```python { .api }

45

class FileReader:

46

"""

47

Iterator for reading messages from files.

48

49

Parameters:

50

- filename (str): Path to GRIB/BUFR file

51

- product_kind (int, optional): Message type filter

52

"""

53

54

def __init__(self, filename, product_kind=None):

55

pass

56

57

def __iter__(self):

58

"""Return iterator."""

59

60

def __next__(self):

61

"""Get next message."""

62

63

class StreamReader:

64

"""

65

Iterator for reading messages from streams.

66

67

Parameters:

68

- stream: File-like object

69

- product_kind (int, optional): Message type filter

70

"""

71

72

def __init__(self, stream, product_kind=None):

73

pass

74

75

class MemoryReader:

76

"""

77

Iterator for reading messages from memory buffers.

78

79

Parameters:

80

- data (bytes): Binary message data

81

"""

82

83

def __init__(self, data):

84

pass

85

```

86

87

## Usage Examples

88

89

### Using FileReader for Simple Data Access

90

91

```python

92

from eccodes.highlevel import FileReader

93

import numpy as np

94

95

# Read all messages from file

96

for msg in FileReader('forecast.grib'):

97

# Access metadata like dictionary

98

param = msg['paramId']

99

level = msg['level']

100

date = msg['dataDate']

101

102

# Get data as numpy array

103

data = msg.data

104

105

print(f"Parameter {param}, Level {level}")

106

print(f"Data shape: {data.shape}")

107

print(f"Data range: {data.min():.2f} to {data.max():.2f}")

108

109

# Automatic memory management - no need to call codes_release

110

```

111

112

### Working with Message Objects

113

114

```python

115

from eccodes.highlevel import FileReader

116

117

with FileReader('analysis.grib') as reader:

118

for msg in reader:

119

# Dictionary-like access

120

if msg['paramId'] == 130: # Temperature

121

# Modify message

122

msg['level'] = 925 # Change level

123

124

# Access grid information

125

grid_shape = msg.shape

126

ni, nj = msg['Ni'], msg['Nj']

127

128

print(f"Grid: {ni}x{nj}, Shape: {grid_shape}")

129

130

# Get available keys

131

available_keys = list(msg.keys())

132

print(f"Available keys: {len(available_keys)}")

133

```