Software engineering

BODC Underway Data Processing System (BUDS)

The following is a summary of BUDS. It assumes some knowledge of Object-Orientated programming techniques.


  1. Introduction
  2. BUDS processes
  3. BUDS software operations


1. Introduction

BODC is responsible for processing data recorded by underway instruments. Underway instruments take continuous measurements of sea surface data (e.g. salinity, temperature, attenuance, chlorophyll and nutrients), meteorology, navigation and bathymetry. They usually sample a continuously pumped surface sea water supply available on most research vessels.

Between 1989 and 2003, processing underway data was performed using our Fortran-based Binary/Merge system. In 2003 this was superseded by BUDS, a system coded in MATLAB.

2. BUDS processes

Processes undertaken in BUDS include the following

Initially, a file is created containing date and time set to a rigid sampling interval. Typically this is a minute or 30 seconds together with a set of null data channels (a channel is a set of measurements for a parameter). Date is stored as the number of days elapsed since 01 January 1760 and time as a day fraction. The channel names are standardised using BODC's parameter dictionary.

The raw data from one or more source files are then merged into this file, matching time to identify which null values to replace. One or more of these raw data channels may then be processed to create additional data channels, driven by information stored in the Oracle database. These new channels may either be calibrated versions of the raw channels, or hold new parameters. For example, a density channel may be created from temperature and salinity channels.

The details of storage are encapsulated by the BUDS interface, a MATLAB class dedicated to the manipulation of the BUDS object. The main body of data is stored in our QXF format supplemented by a '.bud file'. The '.bud file' holds the small amount of data (such as Oracle identifier and file signature) that cannot be accommodated using the BODC series model.

3. BUDS software operations

BUDS is built around an inner core, namely the @buds MATLAB class. Operations include

To prevent non-standard manipulation of the file (e.g. using the netCDF toolbox) a digital signature is computed and embedded in the file on closure and checked on re-opening. Thus all operations that can be performed on a QXF file can also be performed on the QXF portion of the BUDS object, provided they do not modify it. If the file is modified in an unauthorised manner, it cannot then be used in the BUDS system.

Visualisation and flagging of suspect data is done using BODC's visualisation program, Edserplo. The signature calculation is implemented using Java. MATLAB allows the direct embedding of Java so the same code can be used in both Edserplo and MATLAB.

Related BODC pages

Software engineering at BODC      The BODC Transfer system
Edserplo — BODC's visualisation and tidal processing tool      The BODC series model
Former BODC visualisation programs      The BODC Explorer software package
Edteva — our former tidal processing program      Underway Data Processing
Visualisation history — Java prototype       

Related external links

NetCDF at Unidata