Seaglider Quality Control Manual

Copyright (c) 2011-2016 by University of Washington. All rights reserved.
Version 1.13 February 2016
Corresponding to Seaglider basestation version 2.09

Revision History

08/12/2011 Initial version.
10/20/2011 Change interpolation and suggestion policies; handle warm trapped water at apogee; document speed QC.
03/21/2012 Remove discussion of CTD data decimation.
04/19/2012 Update discussion of conductivity and salinity checks and bounds; removed stalled from directives lists.
06/05/2012 Broaden handling warm trapped water to dives; improve discussion of oxygen corrections.
10/06/2012 Improve description of oxygen corrections and QC.
07/29/2013 Clarify pressure to depth interpolation; SBE43 flow-related effects now corrected.
03/28/2014 Document bad_gps directives.
05/01/2014 Removed SBE43 flow-related effects; optode corrections now based on in-situ density.
09/03/2014 Handle GPS position errors in depth-average current calculations.
03/26/2015 Mark certain marginal depth-average current calculations QC_PROBABLY_BAD.
03/31/2015 Remove references to salinity spike calculations that are not performed.
07/06/2015 Introduce optode calibration drift correction of Johnson et al., forthcoming.
03/02/2016 Add copyright; update basestation version number


This document describes the data processing and quality-control procedures for profile data received from Seaglider (and Deepglider) deployments.

The overall data quality control process is patterned after the Argo data processing scheme (Schmid, et al, 2007 and Argo, 2010). In particular, an initial fully-automated quality control process, described in this manual, produces a NetCDF-format file for each profile sufficient for deposit to any national repository, such as the National Oceanographic Data Repository. This process corresponds to Argo's 'real-time' quality control procedure.

This is followed, at some date, by a manual review of each profile by one or more trained oceanographers, leading to possible adjustments to the automated results and hence resubmission. This process corresponds to the Argo 'delayed-mode' quality control procedure. A preliminary manual adjustment mechanism is presented in this document.

Additional information about oceanographic data quality control may be found in the references. The basic seawater property calculations used throughout rely upon formulas taken from Unesco's joint panel on oceanographic tables and standards, described in Unesco, 1981 and Fofonoff, et al, 1983.

An archive of this document may be found at NODC.

Known limitations

With few exceptions due to minor parameter renaming, glider data files written after May, 2006 (Seaglider code version 65.03) can be processed. Files written prior to this date must be converted to a more recent format; contact the Seaglider Fabrication Center at the University of Washington for software and assistance with this procedure.

The conversion and quality-control tests assume that the data was collected during a normal profile cycle comprising a dive, apogee, climb, and possible surface maneuver. So-called 'yo-yo' dives (a series of multiple apogee and perigee maneuvers before surfacing) are supported but depth-averaged current calculations are not performed. Dives under ice or using RAFOS navigation are not supported.

No quality control checks are performed between profiles on a deployment. For example, checks for possible sensor drift or conductivity anomalies occurring between adjacent profiles are not performed.

Files required and produced during data processing

During a deployment, the glider transmits a log file and one or more engineering data files for each profile; additional engineering data files may be produced by other instruments not part of the basic glider sensor package. (Separate Seaglider documents describe the onboard file formats, how the data is collected, and how it is transmitted by the vehicle.)

To control data conversion and checking during and after the deployment, the scientist supplies an sg_calib_constants.m file containing a set of calibration constants and other control parameter values that apply to all profiles in the deployment. A partial list of these control variables is given in Appendix B. In addition, the scientist may supply an sg_directives.txt file containing per-deployment or per-dive directives describing manual quality-control corrections and review notations. The form and processing of this file is described in the 'Manual Quality Control' Chapter belowWhile the basestation as a whole handles many different files, the dive profile processing code initially requires only a log and engineering file for each profile, and a sg_calib_constants.m file for the deployment. Other glider control files, such as the cmdfile, science or targets files, are ignored..

After processing the log and engineering files, all recorded data and any derived results, with associated quality control values, as well as the sg_calib_constants values are written to a NetCDF-format file (the so-called 'nc' file), one per profile. The nc file also records the level of quality control procedures, various control parameters, the review state, and a record of processing history, documenting how the results were obtained. A list of the main output variables in an nc file is given in Appendix C. Each profile nc file, regardless of review level, should be sufficient for national repositories. The nc files follow CF 1.6 Metadata Conventions and NODC guidelines for trajectory files.

As each nc file contains all the uncorrected data from the original data files, they are sufficient to support subsequent processing in the absence of those original files. The basestation inspects the time-stamps of the various files, if they are present, to determine if any further processing need occur. If any original file is found to be more recent than the nc file (for example, the scientist updates the sg_calib_constants.m or sg_directives.txt file or a transmission from the glider updates a data file), the calculations will be recomputed and the nc file will be updated. Indeed, it is typical to manually review and adjust the data in the nc file in the absence of any of the original files using the directives mechanism (or, in the future, via a GUI-based system)Reprocessing of any profile can be ensured by providing the --force option to the basestation script..

Automated Quality Control

This section describes the main data processing for a single dive/climb profile and the automated quality control checks currently implemented. As these checks and corrections are performed, their quality is assessed and reported in the nc file. In this document quality assessments are referred to symbolically, e.g., 'QC_GOOD' indicates the associated data or test is trustworthy, 'QC_BAD' indicates uncorrectable data or a problem with a calculation, etc. The equivalent numeric values recorded in the nc file are given in Appendix A.

Processing overview

Seaglider data observations are taken on a regular time interval that can be varied by vehicle depth. Typical sample rates range from 4-15 seconds (every 0.4 to 1.5 meters) near the surface and 15-60 seconds (every 1.5 to 6.0 meters) near the bottom of the dive. During each observation, different installed instruments may be sampled. The vehicle pressure sensor and compass heading and pitch are always recorded. Other instruments (including the unpumped CT) may be configured to record or not every nth vehicle observation. Historically data was recorded exclusively during these sampling intervals. However, newer instruments, including the pumped CTD, may sample data at different times and frequencies. These are described, as appropriate, below.

Overall the processing code is responsible for converting these raw measurements into common oceanographic units, validating and possibly adjusting their values for known vehicle and instrument issues, and then deriving other interesting quantities from this data. The primary computations performed involve determining accurate temperature and salinity of the water column, based on possibly corrected temperature and conductivity measures, deriving the vehicle buoyancy and flight speeds, directions and displacements, and finally inferring a depth-averaged current by comparing predicted surfacing location from the flight model with the actual surfacing positions reported by the GPS instrument. Each of these steps are described in the following sections.

Validating GPS locations and times

Proper calculation of vehicle depth, surface drift and depth-averaged currents requires three accurate GPS fixes, recorded in the log file: the position when initially surfaced (GPS1), the position just before leaving the surface on the dive (GPS2), and the position when surfaced subsequently (GPS, which is GPS1 of the next profile). GPS positions and times from the unit are assumed to be well-formed (valid dates and times) unless the unit timed out and was unable to acquire a fix. The GPS position error for a fix is taken as the reported horizontal prediction of error (HPE), if any, or the value of the variable GPS_position_error, which defaults to 100 meters. Unlike the Argo system, GPS positions are not tested whether they are on land.

To determine surface drift, the GPS2 time must be strictly greater than the GPS1 time. To determine depth-averaged current, the final GPS time must be strictly greater than the GPS2 time. If either (or both) of these tests fail, the associated quality control variable is marked as QC_BAD and the calculation is not performed.

Correcting depth and pressure

The vehicle measures pressure in dbar at every sample but converts it onboard (using a linear factor of 0.685 m/psi) to an estimated depth, which is reported in the engineering file. The basestation inverts this calculation to recover pressure. The seawater depth routine then determines accurate vehicle depth given measured pressure and the average latitude between the GPS2 and GPS fixes (or GPS1 and GPS2 if the GPS fix is bad). If required, the glider pressure readings are linearly interpolated to the CT sampling grid before the conversion to depth.

For an unpumped CT, the vehicle pressure and corrected depth, measured vehicle pitch, and known installation geometry of the CT instrument with respect to the pressure sensor are used to compute the depth and pressure at the thermistor of CT instrument. This 'CT depth' is used in the temperature and salinity corrections discussed below. A pumped CTD reports its own pressure, which is converted to depth as above and used directly as the 'CT depth'.

Warnings are emitted (and conductivity points are marked QC_BAD) for any depths where the CT is apparently out of the water (CT depth < 0 meters). This can occur during high sea state, when the vehicle breaches during surface maneuver, if the sensor drifts over a deployment, or if the pressure sensor was not zeroed properly before deployment. In the later case, it may be advisable to adjust the values by setting the depth_bias variable. No check is made whether the measured pressures are monotonically increasing on the dive or decreasing on the climb.

Computing initial vehicle velocity and glide angle

An initial estimate of vehicle velocity and glide angle is determined using the glide-slope model ('gsm'), a version of the glider's hydrodynamic flight equations discussed in Eriksen, et al, 2001. Speed and glide angle are determined from the measured vertical velocity (w, the rate of change of vehicle depth), compass-measured pitch and heading and an assumed in-situ seawater density (rho0). The gsm estimate does not account for vehicle buoyancy forcing; see the full hydrodynamic speed calculation ('hdm') discussion below.

Generally, the vehicle compass is calibrated prior to deployment such that heading and pitch measurements are accurate to within +/-1.2 degrees. Compass inaccuracies are typically due either to the installation of an incorrect calibration file or to a change to the vehicle hard or soft iron signature after the calibration; both of these conditions can be addressed by changing the calibration file during deployment, which should annotated using a manual directive. The compass calibrations have been tested at latitudes between 70 degrees North and 76 degrees South.

Computing temperature, conductivity and salinity

The computation of salinity from temperature and conductivity occurs first from uncorrected data and then from adjusted data. Corrections depend upon whether the CT sensor is pumped or unpumped.

Each vector of temperature, conductivity and salinity values, corrected or not, is accompanied by a separate, parallel vector of quality-control indicators. All sampled data points are initially considered QC_GOOD; unsampled points are marked QC_UNSAMPLED. As checks and computations are performed individual points are marked as QC_BAD (uncorrectable for various reasons) or, for corrected data, QC_INTERPOLATED if any interpolation occurs.

In the unpumped CT case, the measured temperature and conductivity frequencies are converted to uncorrected temperature and conductivity values using instrument-specific calibration constants. Temperature and conductivity frequency bounds, if provided by the scientist, are used to mark points exceeding these values as QC_BAD.

An uncorrected salinity (expressed in practical salinity units, PSU) is derived using the seawater routines based on the uncorrected temperature and conductivity values and the pressure at the CT. These salinity values are independent of any thermal-inertia effects.

As with Argo, the uncorrected temperature, conductivity, and salinity values are checked against global bounds. Temperature and conductivity are checked for individual spikes that suggest electrical noise in the CT sensor. Unlike Argo, there are no checks for excessive gradients.

Any value that exceeds the specified global bounds, regardless of CT depth, is marked QC_BAD.

A spike test value (|(v2 - (v3 + v1)/2| - |(v3 - v1)/2|) / (|(d3 - d1)|/2) is computed for a measurement value v2, where v1 and v3 are the data points before and after v2 respectively, and d1 and d3 are the CT depths associated with v1 and v3. The spike test value may not exceed the bounds given below, otherwise the point is marked QC_INTERPOLATED. These tests have a shallow and deep bound: If the CT depth corresponding to v2 is deeper than the specified depth, the test value must not exceed the deep bound, otherwise (the point is shallower) the test value must not exceed the shallow boundSchmid, et al, 2007 uses pressure (dbar); Carnes uses depth..

The default allowable bounds for each test are taken from Schmid, et al, 2007 (and IOC Manual and Guides #22) or Carnes, 2008. These bounds are not adjusted to reflect regional climatology. All depth and parameter bounds may be overridden by the scientist on a per-deployment basis.

Temperature bounds:
Temperature values must fall between -2.5 and 43 °CThese bounds correspond to Carnes, 2008 and are higher than Schmid, et al, 2007 (40 °C)..

Temperature spikes:
For temperature spike test values deeper than 500 meters, the (deep) bound is 0.01 °C/m, otherwise the (shallow) bound is 0.05 °C/mCompare with Schmid, et al, 2007 of 2.0/50 (0.04) °C/m deep and 6.0/50 (0.12) °C/m shallow, assuming a nominal Argo sampling interval of 25 meters..

Conductivity spikes:
For conductivity spike test values deeper than 500 meters, the (deep) bound is 0.001 mS/m/m, otherwise the (shallow) bound is 0.006 mS/m/mThese values are roughly 10 times smaller than the temperature spike values, as expected..

Salinity bounds:
Salinity values must fall between 19 and 45 PSUThe upper bound corresponds to Carnes, 2008 and is higher than Schmid, et al, 2007 (41 PSU). The lower bound is higher than Carnes or Schmid; Seagliders typically cannot operate in waters fresher than 19 PSU. However, the CT might sample a fresh surface cap from river runoff or intense rain events.. Salinity bound errors not explained by temperature issues are assumed to be conductivity issues.

If any temperature or conductivity value is marked QC_BAD, the corresponding salinity value is marked QC_BAD. Uncorrected CT data is never interpolated or changed, even if marked QC_BAD.

Adjusting temperature, conductivity, and salinity

The uncorrected CT data and their quality control indicates are reported to the nc file. Copies of temperature, conductivity, salinity and their associated quality control indicators are made and additional adjustments and corrections, described below, apply to these copies, which are then reported separately in the nc file.

Any adjusted temperature, conductivity, or salinity data value marked QC_BAD is replaced with NaN. Interpolated values are marked QC_INTERPOLATED. Interpolation is linear between two or more trustworthy 'anchor' points. For temperature and conductivity the anchors are always those points immediately adjacent to each contiguous set of QC_INTERPOLATED points, if they are not 'bad'Points are considered bad if they are marked QC_BAD, QC_PROBABLY_BAD, or QC_UNSAMPLED.. For salinity, the interpolation anchors are computed as described below and may be modified by the trust_salinity directive. If interpolation fails (due to insufficient anchor points), values are left unchanged and they are marked QC_PROBABLY_BAD.

Adjusting temperature

The temperature is adjusted for a first-order thermistor-response lag that depends on the thermal gradient encountered by the instrument.

Correcting trapped water temperature anomalies during apogee

On dives, the Seaglider forward fairing can trap and transport water from the upper part of the water column to depth, where it can be expelled when the glider pitches up because of a stall or to begin its climb. If the surrounding water is relatively still and the glider is trimmed heavy so the vehicle continues to sink during apogee, it is possible for the trapped warmer water to waft up to the thermistor on the CT sail. This temperature anomaly appears as a strong multi-point fresh spike on a typical temperature salinity diagram with a size proportional to the overlying thermal stratification.

To account for this effect, temperature points from the start of the second pump (and pitch up) until the glider is deemed flying (0.1 m/s) are marked QC_BAD unless the measured change of pressure indicates the glider is ascending by at least 0.04 m/s vertically. Vehicles employing an interstital compressee, such as the Deepglider, are not effected.

Detecting conductivity anomalies

All CTDs on gliders are subject to bubbles on the surface (either because of high sea state or breaching) and biofouling at depth. These conductivity anomalies, in which the sensor is not measuring seawater, are often transient and must be accounted for when correcting salinity. Anomalies typically extend over several data points and thus escape the simple bound and spike tests outlined above.

Most conductivity anomalies appear as sharp drops in measured conductivity compared to what is expected in seawater at that temperature based on the seawater conductivity routines. This fact is exploited to detect and track the growth and clearance of anomalies, including warning of unexpected anomalies (e.g., sudden unexpected increases in conductivity, possible but weak anomalies, etc.).

Bubbles near the surface are considered uncorrectable, and marked QC_BAD, from the start of dive to the deepest bubble clearance and, on climbs, from deepest bubble start to the end of climb. Deeper conductivity anomalies, when detected, trigger directive suggestions, which the scientist may elect to employ. A heuristic policy recommends interpolation for anomalies with vertical extents is less than 50 meters, otherwise they should be considered uncorrectable.

The detector is unable to handle anomalies that straddle two or more profiles, although it may detect their start and finish in the different profiles. Further, anomalies that begin or end in strong thermoclines are difficult to detect. These situations require manual intervention.

Correcting salinity for thermal-inertia effects

The conductivity measured in all CTDs depends on the temperature of the sampled water in the tube. This in turn depends on the thermal-inertia and thermal flux in the conductivity tube itself, which depends on the construction of the instrument and speed of the water through the tube. In the unpumped case, the vehicle propulsion provides the sensor fluid flow. The thermal-inertia effects change as the speed of the vehicle fluctuates and the sensor encounters thermoclines. See Eriksen, forthcoming, and Lueck, 1990 for detailed discussions of this effect.

Thermal-inertia effects are corrected for measurements taken by an unpumped Seabird CT41 as described in Eriksen, forthcoming. An effective water temperature inside the conductivity tube is computed based on the tube's thermal response to the changes in measured temperature outside the tube and the estimated flow through the tube, yielding a corrected salinity derived from the associated conductivity measurement. The corrections assume relatively steady flow through the conductivity tube. Measurements where the vehicle is rapidly accelerating (during flare, apogee, or surface maneuvers) are marked QC_BAD in conductivity. Measurements where the vehicle is stalled (low or no CT flow) are removed from these computations; the scientist may elect to interpolate these points against surrounding corrected points (see below).

In the unpumped CT case, determining the vehicle speed (and hence flow speed through the sensor tube) depends on knowing the buoyancy of the vehicle, which requires knowing the in-situ density, hence salinity of the seawater. An iterative scheme is employed to find a mutually-consistent solution of corrected salinity and vehicle speed, if possible. The speed and glide angle of the vehicle are determined using the full hydrodynamic equations in Eriksen, et al, 2001 and are based on the measured pitch and computed buoyancy of the vehicle. Vehicle buoyancy is based on the maximum volume of the vehicle, its measured mass, the state of the variable buoyancy device (VBD), thermal and pressure effects on the hull, interstitial seawater, and any compressee, and the in-situ corrected density of the water. The final, converged, speed and glide angle results are referred to as the hydrodynamic model results or 'hdm'. As with the gsm, speeds and glide angles during stalls are set to zero but marked QC_GOOD. Speeds and glide angles are marked QC_BAD and set to NaN (unknown) where bouyancy cannot be determined because salinity is QC_BAD.

In the case of restarting flow after stalls or during steep thermoclines that are insufficiently sampled, the thermal-inertia estimates may not completely correct the salinity values. A simple temperature-correction heuristic discovers these locations, which, along with vehicle stall points for unpumped CTs, may be interpolated. Another heuristic estimates where the salinity of the surrounding water masses is stable, hence trustworthy, to anchor these salinity interpolations. If any suspect points require interpolation between a pair of stable points, all points in that segment are recommented to be interpolated, since it is often unclear where the flow and thermal-inertia effects begin and end in these locations. Both heuristics can fail; the points to interpolate and the points to trust can be adjusted manually.

Correcting pumped CTD data

The pumped Seabird GPCTD instrument reports temperature and conductivity values directly, along with an associated pressure; no frequency data is reported. The CT pressure is used directly to determine the CT depth corrected for the latitude of the vehicle.

Thermal-inertia corrections assume a constant tube flow velocity (corresponding to the normal pump speed) and ignore the vehicle speed, including stalls. Thus, unlike the unpumped CT, points during the entire dive, apogee, climb, and surface phases of the profile are retained. Conductivity anomaly detection is performed. Since the thermal-inertia correction (and possible salinity interpolation) is independent of vehicle speed, the buoyancy and hydrodynamic speed results are computed once rather than iteratively.

Derived seawater properties

In the case of a pumped CTD or an unpumped CTD running on a separate science controller, the sampling rate and timing can differ from the glider sampling rate. In these cases the CTD data sampled during glider operation is employed to determine salinity, vehicle speeds, and quantities based on that data. Relevant glider data required for the salinity and speed corrections, such as vehicle pitch, VBD state, and depth are linearly interpolated to the CTD sample grid.

Assuming computations converge on a consistent speed and salinity, the final adjusted salinity values are evaluated again against the salinity bound test described above. The resultant QC_GOOD salinity values are accurate to 0.01 PSU, 0.03 PSU in regions of high thermocline. Adjusted temperatures are accurate to 0.001 °C. Vehicle speeds are accurate to 0.01 m/s. The CTD readings are considered overall trustworthy (CTD_qc) if more than 70% if the adjusted points are QC_GOOD, otherwise the data are considered QC_BAD.

Seawater potential temperature, potential density, and sound velocity are computed from the adjusted temperatures and salinities.

At present no attempt is made to detect deployment sensor drift, density inversions, turbulent mixing, etc.

For reference, Appendix C lists the results of these calculations and, where applicable, their corresponding Argo variable counterparts.

Computing depth-average and surface-drift current

Given a well-characterized vehicle (accurate hydrodynamic and vehicle control response parameters) the flight model can predict, in still water, the expected surfacing position of the glider by computing the vehicle's displacements at each data point based on the computed hydrodynamic speed and direction. Any vector deviation in actual (GPS) surfacing position from predicted implies a current encountered somewhere at depth while the vehicle was flying, stalled, or drifting (e.g., during apogee or surface maneuver). The depth-average current is assumed to apply uniformly over the entire profile. Rough latitude and longitude for each data point are computed using adjusted displacements reflecting any depth-average current. Points where the vehicle appears stuck on the bottom or the speed is unknown are removed from the current and displacement calculations.

A depth-average current and associated quantities is computed for both the gsm and the hdm velocity results unless the speed estimation was inconsistent. The depth-average current is computed and considered QC_GOOD only if the GPS2 and GPS fixes and times are trustworthy, if the vehicle reported data over the entire profile, and there was no apparent significant up- or down-welling. The later is detected by finding differences between the measured vertical velocity and predicted vertical velocity larger than 0.05 m/s. In the case of truncated dives or where significant up- or down-welling occurs, the depth-average current is computed but marked QC_PROBABLY_BAD.

The expected depth-average current error due to GPS positional errors is computed based on the individual position errors and the elapsed time of the time of the dive; if the expected error is greater than the computed hdm depth-average current, depth_avg_curr_qc is marked as QC_PROBABLY_BAD. The estimated depth-average current error due to GPS positional errors should be treated as a lower bound that assumes the flight model and the vehicle parameters are accurate; the actual error could be worse if, for example, the vehicle flight parameters are not estimated correctly.

Surface-drift current is computed using the differences in position and time between valid GPS1 and GPS2 fixes; an expected surface-drift current error due to GPS positional errors is computed. Note that after August, 2014 some GPS fixes may report the measured surface drift.

Correcting oxygen sensor data

There are three types of oxygen sensors available on a Seaglider: the Seabird 43, and the Aanderaa 3830 and 4330 optodes. Direct measurements from all instruments are reported. All sampled data points are assumed to be QC_GOOD; unsampled points are marked as QC_UNSAMPLED. Negative raw data values are marked as QC_BAD. Corrections and conversions, always to micromoles/kg, are performed for all instruments following both manufacturer's recommended procedure (and current Argo processing adjustments [Swift, personal commumucation]) using associated calibration constants with the following differences.

The Seabird 43 reports a frequency measurement that is converted to a dissolved oxygen value using supplied instrument calibration constants, the CT pressure, and an estimate of the expected oxygen saturation based on the corrected CT temperature and salinity.

The Aanderaa 3380 and 4330 O2 and dphase measurements are converted to a dissolved oxygen value using instrument calibration constants, CT depth, and the corrected CT temperature (to eliminate possible instrument self-heating), salinity, and in-situ density. If optode in-air values and sea-level pressure readings are available during self-tests before deployment, these are used to correct for optode calibration drift following the method of Johnson, et al, forthcoming.

The calculation of oxygen saturation for fresh water and seawater salinity correction used in these corrections follow Garcia and Gordon 1992 except the corrections employ the 'Benson and Krause 1984' coefficients in Table 1 rather than the 'Combined fit' values, per their recommendation.

Correcting Wetlab sensor data

All direct measurements from the instrument are reported; NaN indicates unsampled points. If dark counts and scale factor calibration values are available for specific channels, scaled measurements are also reported. No quality-control tests are applied to the data.

Manual Quality Control

To handle situations where automated checks and corrections are insufficient or incorrect, the scientist may provide directives in a simple language to direct whether and where various corrections should be applied or overridden. Profile-specific directives and comments are placed in an optional sg_directives.txt file associated with each deployment, which is interpreted for each profile. Comments follow Matlab convention: Blank lines and characters after '%' are ignored. Applicable directives with their associated comments are preserved in the nc file for future reference and use.

Directives have the following format:

profile_spec function [location]

where profile_spec is a profile number, e.g., '149', a range of profile numbers, e.g., '84:90', or '*' for all profiles in the deployment.

The functions currently available are:

skip_profile Do no processing for this profile. (False)
reviewed Mark the nc file as reviewed; comments should indicate reviewer and date. (False)
interp_gc_temperatures Interpolate temperatures during GC maneuversA consistent temperature increase during guidance-and-control (GC) maneuvers has been observed on one vehicle. Declaring this directive will interpolate temperature readings during GC with points just before and after each GC, unless the glider was in a sharp thermocline.. (False)
correct_thermal_inertia_effects Apply the thermal-inertia corrections. (True)
interp_suspect_thermal_inertia_salinities Interpolate points where thermal-inertia corrections are suspect. (False)
bad_gps1|2|3 The first (1), second (2) or final (3) GPS fix for the profile is not trustworthyA bad_gps3 directive on one profile should be paired with a bad_gps1 directive on the subsequent profile. A no_bad_gpsx directive forces the system to trust GPSx for the specified profile(s).. (False)

The functions above set booleans and direct processing; the default values of the booleans are enclosed in (). The prefix 'no_' may be added to the function to set the associated boolean to False, e.g., 'no_correct_thermal_inertia_effects' defeats the thermal-inertia corrections.

The following functions apply to the adjusted, not uncorrected, temperature, conductivity and salinity values. These directives change (add or remove) the marks in the quality-control variables; these marks then direct modification of the data. As mentioned above, any adjusted data value marked QC_BAD is replaced with NaN; any value marked QC_INTERPOLATED will be interpolated.

bad_temperature Mark as QC_BAD
interp_temperature Mark as QC_INTERPOLATED
bad_conductivity Mark as QC_BAD
interp_conductivity Mark as QC_INTERPOLATED
bad_salinity Mark as QC_BAD
interp_salinity Mark as QC_INTERPOLATED

As with the boolean functions, for the bad_ and interp_ functions the prefix 'no_' may be added to the function, e.g., no_bad_temperature or no_interp_salinity. Those points will be removed from the points automatically determined to be bad or interpolated respectively. This allows the scientist to override which points are marked uncorrectable or interpolated.

These functions may be followed by an optional , which can be a named list (e.g., depth, time, see below) or, more typically, a user-specified list of points in terms of actual data point number. Locations typically restrict the set of values desired. For example:

* bad_salinity depth below 10 % all salinities strictly less than 10 meters are considered QC_BAD

346 interp_salinity data_points at 120 121 122 % ensure these points are interpolated on dive 346 only

346 interp_salinity data_points between 120 122 % equivalent to the above

The modifier 'at' lists specific values that must match exactly. The modifiers 'below' and 'above' test that values are strictly less than or strictly greater than the given value, respectively. The synonyms 'less_than', 'before', 'greater_than' and 'after' are also recognized. The modifier 'between' is inclusive of the range. The modifier 'in_between' includes all points the range except the end points. If no location is specified, the function applies to all the available data points. At present boolean combinations of locations on a single directive are not supported.

If there are several directives for a function (or its negation) they are combined, first by forming a union of all the included points and then removing the union of any negated points. Thus negation trumps inclusion, which is often what is desired. The order of the directives does not matter.

Several lists of data point indices and values are computed and made available for directives. They are:

depthVehicle depth, in meters, over the entire profile
dive_depthVehicle depth, in meters, before start of apogee
climb_depthVehicle depths, in meters, after end of apogee
timeThe elapsed time, in seconds, of each glider data point
data_pointsThe index, starting at 1, of each CTD data point
glider_data_pointsThe index, starting at 1, of each vehicle data point

Application of directives

The skip_profile directive is honored after all the data is read but before any processing occurs. The reviewed directive is honored after all corrections are made.

The bad_temperature, interp_temperature, bad_conductivity, and interp_conductivity directives are honored once, just before the salinity corrections and hdm speed computations are performed. The bad_salinity directive is also honored once just before the (possibly iterative) speed computations are performed, to eliminate these points from participating in the buoyancy computations. Any interp_salinity directives are honored after each thermal-inertia correction is made and before the buoyancy and hdm speed computation is performed; for the iterative, unpumped CT case, these directives may be applied several times.

There are cases where thermal inertia corrections do not permit the speeds and salinities to converge to an acceptable solution (often the vehicle is on the verge of stalling in many places). Rather than completely abandoning the profile (by employing skip_profile), the scientist might try no_correct_thermal_inertia_effects. This will compute salinities and speeds but will not iterate. If the results are still unacceptable for whatever reason, employ skip_profile.


A. Quality control values

These are the available quality control names and their numeric equivalents. They are taken from Argo, 2010 with the addition of QC_UNSAMPLED. Not all values are currently used.

QC_NO_CHANGE 0 - No QC was performed
QC_GOOD 1 - Value is ok
QC_PROBABLY_GOOD 2 - Value is likely good
QC_PROBABLY_BAD 3 - Potentially correctable
QC_BAD 4 - Untrustworthy and uncorrectable
QC_CHANGED 5 - Explicit manual change
QC_UNSAMPLED 6 - Explicitly not sampled (vs. expected but QC_MISSING)
QC_INTERPOLATED 8 - Interpolated value
QC_MISSING 9 - Value missing; instrument timed out

B. Selected parameters controlling processing

The following is a partial list of the variables and parameters that the scientist can set set in the sg_calib_constants.m file to control the corrections and the quality-control processing. Instrument-specific calibration constants are not listed. All values should be scalars, either real numbers, integers, or strings. Matlab conventions apply: comments follow '%', ';' should terminate lines to silence output from Matlab. Setting a variable applies that value to all the profiles in a deployment.

Vehicle parameters: All but sg_configuration are required.

sg_configurationThe general configuration of the glider
  1. Seaglider with original SBE41 CT
  2. Seaglider with gun-style SBE41 CT
  3. Deepglider with gun-style SB41 CT
  4. Seaglider with pumped GPCTD
hd_aHydrodynamic lift factor for given hull shape [1/° of attack angle]
hd_bHydrodynamic drag factor for given hull shape [Pa-1/4]
hd_cHydrodynamic induced drag factor for given hull shape [1/radians2 of attack angle]
rho0Typical expected density of seawater for this deployment [kg/m3]
volmaxMaximum displaced volume of the glider [m3]
massMass of the glider [kg]

Instrument biases: All are optional; default bias values are 0.

pitchbiasPitch sensor bias [°]
depth_biasDepth bias of pressure sensor [m]
vbdbiasVBD bias [cc]
GPS_position_errorGPS position error if HPE is not reported [m]

General CTD parameters: All are optional. Default bias values are 0.

sbe_temp_freq_minSBE41 minimum permitted temperature frequency [Hz]
sbe_temp_freq_maxSBE41 maximum permitted temperature frequency [Hz]
sbe_temp_freq_offsetTemperature frequency offset [Hz]
temp_biasTemperature bias [°C]
sbe_cond_freq_minSBE41 minimum permitted conductivity frequency [Hz]
sbe_cond_freq_maxSBE41 maximum permitted conductivity frequency [Hz]
sbe_cond_freq_offsetConductivity frequency offset [Hz]
cond_biasConductivity bias [mS/cm]

Quality control test parameters: See above for default values.

QC_temp_minMinimum allowable temperature [°C]
QC_temp_maxMaximum allowable temperature [°C]
QC_temp_spike_depthDepth for deep temperature spike test [m]
QC_temp_spike_shallowAllowable temperature spike in shallow deep water [°C/m]
QC_temp_spike_deepAllowable temperature spike in deep water [°C/m]
QC_cond_spike_depthDepth for deep conductivity spike test [m]
QC_cond_spike_shallowAllowable conductivity spike in shallow deep water [mS/cm/m]
QC_cond_spike_deepAllowable conductivity spike in deep water [mS/cm/m]
QC_salin_minMinimum salinity value [PSU]
QC_salin_maxMaximum salinity value [PSU]
QC_overall_ctd_percentageMaximum fraction of CTD data that can be QC_BAD

C. Main output variables in an nc file

Within the nc file the original data variables and vectors are tagged with a prefix that indicates their origin:

sg_cal_ Variables from sg_calib_constants.m
log_ Parameters from the log file
log_gps_ Selected values from the $GPS lines in the log file
gc_ Selected values from the $GC lines in the log file
eng_ Original data vectors from the engineering (eng) file

String constants are written as string arrays with dimensions appropriate to their length; these dimensions are named 'string_n', where n is the length of the string. Other dimensions are as follows:

sg_data_point Number of vehicle data points
gc_event Number of $GC events in the log
gps_info Number of GPS readings (3)

Result variables are listed below. Units, if any, are enclosed in []. Quality control variables use the _qc suffix; values are listed in Appendix A. For reference, Argo-equivalent variable names, if appropriate, are enclosed in {}.

Information about the processing of the profile:

processing_history Collected processing output
reviewed Whether a scientist has reviewed and approved this profile
directives The control directives supplied by the scientist for this profile

Information about the location of the profileArgo reports the date and time (JULD), and position (LATITUDE and LONGITUDE) of float surfacing. Equivalent times and locations for Seaglider missions may be found in the log_gps_time, log_gps_lat and log_gps_lon arrays; Seaglider surfacing is recorded under index 3. Seaglider output variables time, latitude and longitude are estimated times and positions of each vehicle sample during a profile. :

magnetic_variation The magnetic variance from true north [°]
avg_latitude The average latitude of the dive [° North]
GPS1_qc Whether to trust the GPS1 information
GPS2_qc Whether to trust the GPS2 information
GPSE_qc Whether to trust the final GPS information

General information about the vehicle and event times:

time Time in GMT epoch format [seconds from 00:00Z 1 January 1970]
depth Depth below the surface, corrected for average latitude [m] {DEPTH}
start_of_climb_time Seconds after dive start when the second apogee pump starts [s]

Results based on CTD measurements:

ctd_time CTD sample time in GMT epoch format [seconds from 00:00Z 1 January 1970]
ctd_depth CTD thermistor depth corrected for average latitude [m]
ctd_pressure Pressure at CTD thermistor [dbar]
CTD_qc Whether to trust the corrected CTD values
temperature Termperature corrected for thermistor first-order lag [°C] {TEMP_ADJUSTED}
temperature_qc Whether to trust each temperature value {TEMP_ADJUSTED_QC}
conductivity Conductivity corrected for anomalies [mS/cm] {CNDC_ADJUSTED}
conductivity_qc Whether to trust each conductivity value {CNDC_ADJUSTED_QC}
salinity Salinity corrected for thermal-inertia effects [PSU] {PSAL_ADJUSTED}
salinity_qc Whether to trust each salinity value {PSAL_ADJUSTED_QC}
buoyancy Buoyancy of vehicle, corrected for compression effects [g]
density Potential density based temperature and salinity at 0 pressure [g/m3]
density_insitu Density based temperature, salinity and ctd_pressure [g/m3]
sigma_t Sigma based on density [g/m3]
theta Potential temperature based on measured pressure, temperature, and salinity [°C]
sigma_theta Potential density based on theta at 0 pressure [g/m3]
sound_velocity Sound velocity based on temperature and salinity [m/s]
temperature_raw Uncorrected temperature (in situ) [°C] {TEMP}
temperature_raw_qc Whether to trust each raw temperature value {TEMP_QC}
conductivity_raw Uncorrected conductivity [mS/cm] {CNDC}
conductivity_raw_qc Whether to trust each raw conductivity value {CNDC_QC}
salinity_raw Uncorrected salinity derived from temperature_raw and conductivity_raw [PSU] {PSAL}
salinity_raw_qc Whether to trust each raw salinity value {PSAL_QC}

Vehicle velocities and displacements:

hdm_qc Whether corrected temperatures, salinities, and hdm velocities converged
speed Vehicle speed based on hdm [cm/s]
speed_qc Whether to trust each vehicle speed based on hdm
glide_angle Glide angle based on hdm [°]
horz_speed Vehicle horizontal speed based on hdm [cm/s]
vert_speed Vehicle vertical speed based on hdm [cm/s]
flight_avg_speed_east Eastward component of flight average speed based on hdm [m/s]
flight_avg_speed_north Northward component of flight average speed based on hdm [m/s]
north_displacement Northward displacement from hdm [m]
east_displacement Eastward displacement from hdm [m]
speed_gsm Vehicle speed based on gsm [cm/s]
glide_angle_gsm Glide angle based on gsm [°]
horz_speed_gsm Vehicle horizontal speed based on gsm [cm/s]
vert_speed_gsm Vehicle vertical speed based on gsm [cm/s]
flight_avg_speed_east_gsm Eastward component of flight average speed based on gsm [m/s]
flight_avg_speed_north_gsm Northward component of flight average speed based on gsm [m/s]
north_displacement_gsm Northward displacement from gsm [m]
east_displacement_gsm Eastward displacement from gsm [m]

Positions based on displacements and computed depth-average current (DAC):

depth_avg_curr_qc Whether to trust the DAC values and displacements
depth_avg_curr_east Eastward component of DAC based on hdm [m/s]
depth_avg_curr_north Northward component of DAC based on hdm [m/s]
depth_avg_curr_error Expected error of depth-average current from GPS [m/s]
latitude Latitude based on hdm DAC [° North]
longitude Longitude based on hdm DAC [° East]
depth_avg_curr_east_gsm Eastward component of DAC based on gsm [m/s]
depth_avg_curr_north_gsm Northward component of DAC based on gsm [m/s]
latitude_gsm Latitude based on gsm DAC [° North]
longitude_gsm Longitude based on gsm DAC [° East]

Computed surface current:

surface_curr_qc Whether to trust the surface current values
surface_curr_east Eastward component of surface current [cm/s]
surface_curr_north Northward component of surface current [cm/s]
surface_curr_error Expected error of surface current from GPS [m/s]

Dissolved oxygen from various instruments, if present:

dissolved_oxygen_sat Dissolved oxygen saturation in based on salinity and temperature [micromoles/kg]
SBE43_qc Whether to trust the SBE43 results
sbe43_dissolved_oxygen Oxygen concentration corrected for salinity [micromoles/kg] {DOXY}
sbe43_dissolved_oxygen_qc Whether to trust each SBE43 dissolved oxygen value
aanderaa3830_qc Whether to trust the Aanderaa 3830 results
aanderaa3830_dissolved_oxygen Oxygen concentration calculated from optode dphase corrected for salinity [micromoles/kg] {DOXY_ADJUSTED}
aanderaa3830_dissolved_oxygen_qc Whether to trust each optode dissolved oxygen value
aanderaa3830_instrument_dissolved_oxygen Oxygen concentration reported from optode corrected for salinity [micromoles/kg] {DOXY_ADJUSTED}
aanderaa4330_qc Whether to trust the Aanderaa 4330 results
aanderaa4330_dissolved_oxygen Oxygen concentration calculated from optode tcphase for salinity and depth [micromoles/kg] {DOXY_ADJUSTED}
aanderaa4330_dissolved_oxygen_qc Whether to trust each optode dissolved oxygen value
aanderaa4330_instrument_dissolved_oxygen Oxygen concentration reported from optode corrected for salinity [micromoles/kg] {DOXY_ADJUSTED}

D. References

"Argo quality control manual, version 2.6", November, 2010.

Bennett, J & Stahr, F., 2014: "GPS positional accuracy for Seagliders", University of Washington, School of Oceanography.

Carnes, M. R., 2008: "LAGER Manual, version 1.0", Naval Research Laboratory.

Eriksen, C. C., Osse, T. J., Light, R. D., Wen, T., Lehman, T. W., Sabin, P.L., Ballard, J.W., and Chiodi, A. M., 2001: "Seaglider: A long-range autonomous underwater vehicle for oceanographic research", IEEE ournal of Oceanic Engineering, 26(4), 424-436.

Eriksen, C. C., forthcoming: "Thermal inertia in unpumped conductivity cells".

Garcia and Gordon, 1992: "Oxygen solubility in seawater: Better fitting equations", Limnol. Oceanog. 37(6), 1992, 1307-1312.

IOC Manual and Guides #22.

Johnson, K. S., J. N. Plant, S. C. Riser, and D. Gilbert, forthcoming: "Air oxygen calibration of oxygen optodes on a profiling float array". Submitted, Journal of Atmospheric and Oceanic Technology.

Lueck, R. G., 1990: "Thermal inertia of conductivity cells", Theory J. Atmos Ocean. Tech., 7, 741-755.

Schmid, C., Molinari, R. L., Sabina, R., Daneshzadeh, Y., Xia, X., Forteza, E., and Yang, H., 2007: "The real-time data management system for Argo profiling float operations", J. Atmos. Ocean. Tech., 24, 1608-1628.

Unesco, 1981: "Tenth report of the joint panel on oceanographic tables and standards", Unesco technical papers in marine science, 36.

N.P. Fofonoff and R.C. Millard Jr., 1983: "Algorithms for computation of fundamental properties of seawater", Unesco technical papers in marine science, 44.


Copyright University of Washington, 2011-12 All Rights Reserved.