Opened 4 years ago

Last modified 4 years ago

#251 new

Bufr Spot (utility to quickly analyse BUFR content)

Reported by: Fabrizio Baordo Owned by: Fabrizio Baordo
Priority: major Component: User Interfaces
Keywords: bufr spot; pybufr-ecmwf Cc: Jin Lee, Yi Xiao, Peter Steinle, Susan Rennie, Tan Le, Robin Bowen, Fabrizio Baordo


Attachments (1)

bufr_spot_outputs.tar.gz (2.4 MB) - added by Fabrizio Baordo 4 years ago.
Example of outputs from bufr spot

Change History (7)

Changed 4 years ago by Fabrizio Baordo

Attachment: bufr_spot_outputs.tar.gz added

Example of outputs from bufr spot

comment:1 Changed 4 years ago by Fabrizio Baordo

comment:2 Changed 4 years ago by Fabrizio Baordo

bufr_spot was developed using the pybufr-ecmwf-0.80 library.
The module associated with this library is not available yet and this is reported by

However, it is still possible to use bufr_spot simply installing the pybufr-ecmwf-0.80 yourself. This can be done following steps below:

1) check out utils trunk

svn co

2)Move into the pybufr-ecmwf-0.80 dir

cd pybufr_ecmwf/pybufr-ecmwf-0.80/

3) Execute the 2 lines below

module load python
python build

4) Finally create your own library:
python install --user

Point 4 will create your library at:


Now you can use bufr_spot

comment:3 Changed 4 years ago by Fabrizio Baordo

To test/modify/keep developing bufr_plot

You might want to create your own branch first:

fcm branch-create --branch-of-branch “name” “branchURL”

where “name” is a string which identifies the name of your branch and “branchURL” is the URL of the branch which contains bufr​_spot, e.g.:

branchURL =

"fcm branch-create" creates your branch in “dev/" so your branch URL is as follows: ​<user>/rXXX_name

comment:4 Changed 4 years ago by Fabrizio Baordo

Cc: Jin Lee Yi Xiao Peter Steinle Susan Rennie Tan Le Robin Bowen Fabrizio Baordo added

comment:5 Changed 4 years ago by Susan Rennie

We're not sure the right bufr tables are being used to decode the bufr files.
The function to add bufr tables to a bufr file object:

bfr.setup_tables(table_b_to_use=os.path.join(strBfrTablesPath,strBfrTableB), table_c_to_use=None,table_d_to_use=os.path.join(strBfrTablesPath,strBfrTableD), tables_dir=strBfrTablesPath)

comment:6 Changed 4 years ago by Fabrizio Baordo

Use of BUFR tables fix:

BUFR tables are correctly loaded from the path specified in configuration.

BUFR TABLES need to be set up before reading messages in the BUFR, e.g.

bfr = BUFRReader(input_bufr_file, warn_about_bufr_size=False)

bfr.table_b_to_use = strBfrTableB
bfr.table_d_to_use = strBfrTableD
bfr.tables_dir = strBfrTablesPath

while True:


# load message

BUFR_SPOT has been tested (works successfully) for all the following observations:

as as_300 amv34 amv160 amv254 amv254msg amdar acars ascat airs atovs ATMS CrIS gpsro iasi iasi4 PScsr ss windsat

Note: See TracTickets for help on using tickets.