OCADSAccess DataMatlab Toolbox for secondary Quality Control (2nd QC) on Hydrographic Data

Toolbox for Secondary Quality Control (2nd QC) on ocean chemistry and hydrographic data

data2nd_QC_Tool Files

2nd QC Tool Publication


Siv K. Lauvset
NORCE Norwegian Research Centre, Bjerknes Centre for Climate Research,
Bergen, Norway

Toste Tanhua
Leibniz Institute of Marine Sciences (IFM-GEOMAR)
Marine Biogeochemistry - Chemical Oceanography
Kiel, Germany

Prepared by
Alex Kozyr


High quality, reference measurements of chemical and physical properties of seawater are of great importance for a wide research community, including the need to validate models and attempts to quantify spatial and temporal variability. Whereas data precision has been improved by technological advances, the data accuracy has improved mainly by the use of certified reference materials (CRMs). However, since CRMs are not available for all variables, and use of CRMs does not guarantee bias-free data, we here present a recently developed Matlab toolbox for performing so-called secondary quality control on oceanographic data by the use of crossover analysis. This method and how it has been implemented in this toolbox is described in detail. This toolbox is developed mainly for use by sea-going scientists as a tool for quickly assessing possible bias in the measurements that can—hopefully—be remedied during the expedition, but also for possible post-cruise adjustment of data to be consistent with previous measurements in the region.

If you use this tool, please cite as:

Lauvset, S. K., and T. Tanhua (2015), A toolbox for secondary quality control on ocean chemistry and hydrographic data, Limnol. Oceanogr. Meth., 13(11), 601-608, doi:10.1002/lom3.10050.

Crossover Analysis

The result of a crossover analysis is an offset. Offsets are defined as the difference between two cruises, A and B, derived from the analysis. Here we refer the cruise being analyzed as cruise A and the cruise from the reference data set as cruise B. If the offset for cruise A (relative to cruise B) is less than zero (or unity, for multiplicative parameters), then cruise A data would have to be increased to be consistent with cruise B (or vice versa). The offsets are quantified as multiplicative factors for nutrients, oxygen, and CFCs, and as additive constants for salinity, DIC, alkalinity, and pH. There are several reasons for the division between additive and multiplicative offsets. Firstly, multiplicative offsets eliminate the problem of potentially negative values for any variable with measured concentration close to zero, i.e., in the surface water for nutrients, or oxygen concentrations in low oxygen areas. Also, for nutrients and oxygen analysis, problems in standardization are the most likely source of error, hence a multiplicative offset is deemed appropriate. For DIC, alkalinity, pH, and salinity, an additive adjustment is more appropriate, due to, for instance, biases in the reference material used. Similarly, since pH is a logarithmic unit, only additive offsets can be considered. Since the upper water column is more sensitive to variability on various time-scales than the deep ocean, normally only the deep part of the water column is considered for the analysis. This minimum depth must be defined for crossover analysis - 1500 m is a standard set-point but not necessarily the best choice. The crossover analysis in this tool-box is performed on density (i.e., sigma-4) surfaces to account for vertical shifts of properties (i.e., internal waves, etc.).

The first step in a crossover analysis is to interpolate the profiles of the parameter in question for all stations with a Piecewise Cubic Hermite Interpolating scheme. An important feature of this algorithm is that interpolated values almost never exceed the range spanned by the data points and that large vertical gaps in the data are not interpolated; the definition of “large” is depth-dependent so that larger “gaps” are allowed in the deeper part of the profile. The software looks for stations that are in the same area as the one being analyzed. The definition of “same area” is a variable and has to be set (normally to 2 degrees of latitude, i.e., ~222 km) but can be changed based on knowledge of horizontal gradients in the area. The software compares the interpolated profile from each station in cruise A to each interpolated profile from cruise B within the maximum distance for a valid crossover, and a difference profile is calculated for each such pair. This process is repeated for each station in cruise A and the crossover offset and its standard deviation are calculated as the weighted mean and standard deviation of the difference profiles of each crossover pair (i.e., cruises A and B). In this way, the parts of the profiles with low variability have more weight in the calculation. The software performs this process for all cruises in the reference data set and displays the offsets in one figure per cruise pair (Fig. 1), and one overview for all crossovers vs. a reference data set, (Fig. 2).


Fig. 1. Offset found between two cruises for oxygen.


Fig. 2. Summary of all biases found for one cruise vs. all cruise in the GLODAPv2 reference data product.

This package allows data to be compared to data from the most recent version of the Global Ocean Data Analysis Project (currently GLODAPv2.2019, Olsen et al., 2019) using crossover analysis.

This package contains a few m-files and the reference data in Matlab format. In addition, you will need m-map (preferably a recent version) to draw maps. There is an excellent documentation in the file "map.html".

Please, send feedback to Siv Lauvset: siv.lauvset@norceresearch.no.

Content of the 2nd QC toolbox

  • define_domain.m
  • excread.m
  • load_global_refdata.m
  • run_2QC_toolbox_with_GUI.m
  • run_2QC_toolbox_without_GUI.m
  • sec_QC.m
  • toolbox_2QC.m
  • xover_2ndQC.m
  • Xover_subplot.m
  • xticklabel_rotate.m
  • intprofile.m
  • posfig.m
  • matching.m
  • meanprofile.m

The reference data are in a directory called "reference_data", and consists of the GLODAPv2.2019 data formatted for Matlab. There is also a folder with example files for testing, and a readme-file explaining how to use the toolbox.

Last modified: 2021-03-17T18:30:16Z