BODC's Underway Data Processing System (BUDS)
The following is a summary of BUDS. It assumes some knowledge of Object-Orientated programming techniques.
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.
Processes undertaken in BUDS include the following
- Loading data from specified formats with, for some, data reduction through averaging
- Checking navigation for improbable speeds and interpolating where necessary
- Working out speed over the ground and distance run
- Working out absolute wind speeds
- Application of calibration data held on the Oracle database
- Comparing values with data collected via other means (e.g. CTD)
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.
BUDS software operations
BUDS is built around an inner core, namely the @buds MATLAB class. Operations include
- Opening and closing the file
- Adding and deleting channels
- Listing the data cycles
- Cropping the beginning and end of the file
- Connecting to Oracle
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.