Measuring the Upper layer Temperature of the Polar Oceans


Overview of Quality Control Measures
There are 4 main QC steps plus 3 added quantities in the Level 2 QC data, relative to Level 1 data. These are discussed in detail in what follows.
1Sensor Bias
a) Ocean Pressure Sensors
b) Thermistors
2Sensor Drift
a) Ocean Pressure Sensors
b) Thermistors
3Range Checks
a) Capped Values
b) Wrapped Values
c) Unphysical Values
a) Noisy values
b) Initial adjustment
c) Steady values
d) Spikes (a.k.a outliers)
e) Data columns removed
5Calculated depths of the temperature sensors have been added.
6An Open Water or Ice indicator has been added to the data files.
7An integer indicating the uppermost temperature pod in water was added.


1. Sensor Bias
a) Ocean Pressure Sensors
Bias in the ocean pressure (OP) data was corrected by finding the difference between the nominal depth of the sensor and the most common deepest value reported by the sensor when no ridging was present. This difference was then added to the Level 1 OP data. For example, if it is known that a buoy has an OP sensor at 60m, but the deepest reading from the sensor (when we assume that the buoy is hanging straight down) is 62 db, then the bias is 60-62= -2. This -2 would then be added to all the OP readings for that sensor.

Two other factors influence OP:

When SLP changes, the OP sensors feel this change. For example, an SLP decrease of 5 db leads to an OP decrease of the same magnitude, which could then be misinterpreted as a rise of the OP sensor in the water column owing to wind forcing and/or ridging. Each of our three manufacturers deals with this issue differently:

MetOcean does not account for this effect; we corrected for it in the Level 2 data.
Pacific Gyre does correct for the effect in their reported OP sensor data.
Marlin-Yug does not account for the effect, but our correction generally degrades the quality of OP sensor output for reasons unknown at this time, so we did not apply the correction for these buoys.

The effect of SLP on OP is generally small. An analysis of 2010-2015 SLP data from Arctic UpTempO buoys results in an average SLP of 10.14db +/- 0.13db. This means that 95% of the time, the SLP anomaly will be within +/- two standard deviations (2 * 0.13) of the mean. Thus, after biases are removed, SLP variability impacts OP by +/- 0.26 db, far less than the usual OP sensor accuracy of +/- 1 db.


• Pressure = (density)(gravity)(height)

Density range of top 60m of Arctic: 1021 to 1028 kg/m^3
Gravity: 9.81 m/s^2
Height: 60m

--> The maximum error is then |0.41 db|, or +/- 0.2 db over the total possible range; the error is likely much smaller for any particular buoy’s drift. Some UpTempO buoys have a single temperature/conductivity pair near the surface with which to compute density, but most do not, and none have t/c pairs through the water column. Thus a calculation of true density is impossible without additional information, and so this effect is NOT accounted for in OP sensor data.

b) Thermistors
Most buoys’ thermistors are calibrated against a higher quality sensor by the manufacturer in a tank. Additionally, CTD profiles are often (but not always) available for further calibration, either in seawater near the manufacturer’s facility or at the deployment site or both. Bias calculated using field profiles typically uses only the part of the profile that is nearly isothermal, discounting depths with rapid temperature changes. Calibration in the field is very useful, but typically involves space and time offsets between buoy and CTD data which limit the accuracy of this procedure. Nonetheless, the comparisons are generally pretty good. When this information is available, it is included in the data file header.

The thermistors on our early buoys from 2010 and 2011 had rather large biases across all the thermistors with respect to field CTD casts. For these buoys, thermistor data have been de-biased in the Level 2 QC data. From 2012 onward, all buoys thermistors have generally performed within “spec” i.e., with biases relative to CTD data that are within the manufacturers’ quoted accuracy. For these buoys, our calculated biases are provided in the header for each data file, but the Level 2 QC data have not been modified from the Level 1 data.
Bias corrections and information will appear in the data file headers as follows. "Overall bias" for thermistors refers to buoy minus CTD values.

2. Drift Correction
a) Ocean Pressure Sensors
OP data from 2010 and 2011 buoys drifted over time toward deeper values. This was corrected by fitting a geometric function to the mean drift, and then adjusting the original data. Subsequent ocean pressure sensors used on the UpTempO buoys did not have this problem.

Drift in the ocean pressure sensors was corrected by fitting a geometric function to the pressure time series:

Where P-hat = modeled pressure (dB), t = time (days), and A,B, and C are the parameters found to model the drift in the pressure sensor. Drift was corrected for a total of 12 buoys. Eleven of these buoys were equipped with two pressure sensors, one at 20m, and the other at 60m nominal. The remaining buoy had only one pressure sensor at 25m nominal. For the 20m pressure sensors, "A" ranged from 0.036 to 0.61 dB/day, "B" ranged from 0.17 to 0.64, and "C" ranged from 20.79 to 26.8 dB. For the 60m pressure sensors, "A" ranged from 0.21 to 1.34 dB/day, "B" ranged from 0.16 to 0.46, and "C" ranged from 61.32 to 63.19 dB.

To correct for the drift, we then found the difference between the modeled pressure values and the first ocean pressure value in the time series (after initial adjustment upon deployment, see Section 4c). We then corrected the ocean pressure values by subtracting this time series of differences from the ocean pressure time series.

Where P is the pressure that the ocean pressure sensor reported.

The A, B, and C parameters appear as follows in the headers of the data files for the buoys that required this corrections:

b) Thermistors
High-accuracy thermistors from Seabird are used on some buoys, and these have very small drift that we have assumed is negligible over the lifetime of our buoys. The drift in other thermistors has not been assessed at this time (summer, 2016) and so has been assumed to be negligible as well. We have not been able to recover a buoy at the end of a long drift for recalibration. Preliminary analysis of long-lived buoys of the difference in winter SSTs from one year to the next is generally less than the stated accuracy of +/- 0.1 degC.

3. Range check
a) Capped Values
Each quantity an UpTempO buoy reports has a range of acceptable values associated with it. These upper and lower values are referred to as the "caps" in this report. Often when there is an error in data reporting for a quantity, the upper or lower cap is returned. For example, MetOcean UpTempO buoy thermistors have an acceptable reporting range from -45C to 36.91C. Values of -45C and of 36.91C are clearly bad readings for temperature. Buoys from different manufacturers and batches can have varying acceptable ranges of data. To make our data more uniform across different buoy makes and models, almost all of these "capped values" have been replaced with the value -999. There are some exceptions in cases where a reported value realistically
hit the cap value, in which cases we did not change the value to -999. These situations are described below.

i) Ocean Pressure Sensors
Ocean pressure sensors have a minimum allowed value of 0db. Since these sensors are typically at 20, 40, or 60m, a 0db report is usually filtered out by giving it a value of -999. At deployment, however, 0db readings are physically realistic. Ocean pressure sensors can also be pulled up to surface in rare cases of extreme ridging. These events are recognizable in the data, and the resulting 0db reading are left in the data.
ii) Thermistors
Some of our buoys had a minimum thermistor range of -5C. While ocean temperatures can never obtain a temperature this low, air/ice/snow temperatures easily get much lower. Surface and near-surface thermistors of a buoy locked in ice can expose these thermistors to air or ice temperatures and can therefore realistically drop below this -5 threshold. In this case the -5 remains as the reported temperature value in the level 2 data files.
b) "Wrapped" Values
This is only an issue for thermistor data.

Buoys report within a range of allowed values. For most buoys, if the temperature is outside of that range, the buoy will report the upper or lower limit allowed, i.e., a "capped values."

Some Pacific Gyre buoys since 2014 behave a little differently. Instead of "capping" at the minimum or maximum allowed value, the reported temperature will "wrap around" to the other end of the allowed range. An example of this is shown below.

As an example of how this occurs, let's consider a case where the actual temperature is -6C, and the allowable range of temperatures for the sensor is between -5C and 40C. The value the buoy will report in this case is (-6 - (-5)) + 40 = -1 + 40 = 39C. To figure out the true temperature then we use the following formula:

True Temperature = reported value - maximum allowed value - minimum allowed value

From the example above this works out as:
True Temperature = 39 - 40 - 5 = -6

In practice, the only wrap-around we see is for temperatures colder than the allowed minimum, which happens when thermistors are in winter ice/snow/air, which is the case for some deployments or when ice grows and/or ridges around a buoy.

c) Unphysical Values
i) Ocean Pressure Sensors
The sensors on the UpTempO string can easily ride above their respective nominal depths when subjected to winds or currents, but they do not typically get pushed below nominal. Ice can push them under, but when this happens, the buoy cannot report. Therefore, ocean pressure values reporting deeper than 5m below nominal are filtered out.

ii) Thermistors
Temperature values were filtered out (given a value of -999) for a number of reasons:
Temperatures below freezing (-1.8C) for thermistors in water

Unreasonably warm temperatures
Temperatures were deemed too high and were filtered out for:
• Temperatures greater than 20C
• Temperatures greater than 10C below 20m
• Temperatures greater than 6C during the months Jan to May, Oct to Dec

Range Check information will appear in the data file header as follows:

4. Miscellaneous
a) Noisy Values
i) Ocean Pressure Sensors
Ocean Pressure values can vary quite a bit, especially if the weight at the bottom of the string is light. But it almost always varies smoothly, with a high degree of correlation between all the pressure sensors on the string. Ocean pressure values that are uncorrelated from one reading to the next and are highly variable are filtered out.
ii) Thermistors
One mode of failure for a buoy is for it to get concussed with ice causing damage to its electronics. The evidence of this failure is a sudden jump in the time series, followed by either unphysical values, or unusual behavior. This is recognizable by eye, but is difficult to filter automatically. In these situations, each thermistor time series was analyzed to identify at exactly the point in time the failure occurred, and the remainder of the series was removed since the sensor can no longer be trusted. This type of failure is much more common near the end of a buoy's life.

b) Steady Values
Usually we expect that when a thermistor fails, it will begin reporting either the minimum or the maximum value of its allowed range, or report no value at all. In some cases though, the buoy will choose to report some other constant value for the remainder of its life, as shown below.

c) Initial Adjustment
It often takes a buoy a few reports before its thermistors equilibrate with their surroundings. When this appears to be the case, we have filtered these first few values for all thermistors in the string.
d) Spikes
A spike is defined as a point in a time series that either rises above or drops below its immediate neighbors before and after. For our analysis, spike magnitude is measured in units of ΔTemperature(C)/ΔHour (or dT/dHr) for thermistors, and ΔPressure(dB)/ΔHour (or dP/dHr) for ocean pressure. For each spike, we get two measures for dT/dHr for example, one with respect to the spike’s left neighbor, and one with respect to its right. The dT part of the calculation always proceeds by taking the spike point temperature minus its left neighbor’s temperature, and then the spike point temperature minus its right neighbor’s temperature. The dHr part of the calculation is calculated so that it is always positive. So positive spikes always end up with dT/dHr positive, and the opposite for negative spikes. We then choose the minimum of the two measurements for each spike to define the magnitude of the spike.

i) Ocean Pressure Sensors
Detecting errant spikes in the ocean pressure (OP)sensors depends on the how much vertical movement can be reasonably expected given the thermistor string's bottom weight and the position of the OP sensor in the water column. Marlin-Yug buoys, for example, have fairly light weight on the end of the thermistor string, and vertical movement as much as 30dB/Hr in the 60m OP sensor is not unprecedented. An isolated spike of this magnitude could be bad data, though. So how can we tell whether a 30dB/Hr spike genuinely reflects the motion of the thermistor string? We can tell by looking at the other OP sensors on the string, if they exist. The plots below show the relative motion between OP sensors located at different nominal depths on the same string. The x-axis on both plots is showing how much shallower than nominal the 60m OP sensor is, while the y-axis is showing the same for the 20m OP sensor in the first plot, and the 40m OP sensor in the second. The colors indicate the buoy's manufacturer.

The first plot below (∆OP60 vs. ∆OP20) can be fit pretty well with a polynomial model of the form ∆OP20 ~= A * ∆OP60 + B * ∆OP60^2 + C. This is shown as the dashed green line. The farther from this line a data point falls the more suspect it is. For simplicity, the solid green lines enclose 99% of the data shown, and any point falling between them is passed as good. Points that fall outside of this range are not necessarily bad, but they are flagged for closer inspection.

Not all of the points in these plots are spikes, and not all spikes that fall outside the green lines are bad. For instance, in the first plot above we see many points above the upper green line that are actually the result of "ridging", where the buoy has been physically pulled up in the water column by an ice ridging event. For these data points, the deepest possible values for the 20m and 60m sensors has been moved up in the water column by the same amount. If we subtracted this amount from both, we would see that the points fall into the expected band. All points outside of the green 99% bands are visually inspected for bad data.

Some buoys may have only one functional pressure sensor. An analysis of the behavior of OP sensors depending on the buoy manufacturer and the sensor depth was done to determine reasonable spike magnitudes. An example of this analysis is shown in the plot below where the difference from nominal is plotted for each of the 4 possible OP nominal depths for Marlin-Yug buoys. The red line for each OP sensor shows the point below which 99% of the data exists. Spike magnitudes greater than these values are flagged as suspect. A similar analysis was done for Pacific Gyre and MetOcean buoys. Results are listed in the table that follows.

The table below lists the spike magnitude cut-offs for the various buoys and OP sensors in situations where other OP data is not available.

ManufacturerMax 20dB Spike MagMax 40dB Spike MagMax 60dB Spike MagMax 80dB Spike Mag
Pacific Gyre

ii) Thermistors
Under the influence of strong winds or ice ridging, the thermistors can be pulled upward into different thermal stratification regimes. This can cause "spikes" that are real and which should not be removed. In order to deal with this, we consider not just an individual thermistor's time series, but also data from other thermistors on the sensor string.

A spike is defined as a single point that is at least 1C above the values 1 hour before and after. The spike's temperature is set to -999 C if its dT amplitude is greater than the range of "non-spiky" values found within +/- 1 day and +/- 3 meters of the thermistor. A complete explanation of what we did follows.

When to filter a spike:
The next issue to address is at what magnitude do we choose to flag a spike for filtering? Choosing a constant threshold based on what should be physically possible seems wise, but it’s not. The problem is that thermistors cannot be relied upon to stay at their nominal depths, and there can be wide variations in temperatures at different depths. On a windy day the bottom thermistor of a buoy with a light weight on the end can rise in the water column as much as 20m. Depending on the thermocline, thermistors in the transition zone can experience a wide range of temperatures resulting in wild swings in readings that would be unexpected in a stationary thermistor.

To address this issue, we use the data from the buoys to tell us what should reasonably be expected. This is done by first finding all NON-SPIKE values at every calculated depth in the time series. Then at any given spike point, we find the minimum and maximum temperature from the surrounding non-spike values over a constant ∆time and ∆depth. These surrounding points are centered on the spike point in time, and also in depth if we are using calculated depths. When calculated depths are not available, we have to use nominal depths. In this case, we only search above the spike point in depth since we don’t expect the buoy to ever go deeper than the nominal depth of the thermistor. The threshold for filtering this spike would then be the (max Temp – min Temp) for all points found around the spike point in question. If the magnitude of the spike exceeds this threshold, it is a candidate for filtering. To be filtered, it must in addition have a spike magnitude greater than 1 C/hr, and it must have a temperature value outside of the minimum and maximum temperature range of the surrounding points.

Here is a summary of steps in the process:

1. Find the spike magnitude of all points in the time series data from all thermistors (BOX 1 in the figure below). Non-spike points should be assigned a spike magnitude of 0. Using the non-spike points and calculated depths of each thermistor, construct gridded temperature profiles at 1 m resolution by linearly interpolating between the calculated depths.

2. For each point in a temperature time series, search the gridded temperatures (found in step 2) based on the chosen ∆time and ∆depth criteria. I will refer to this as the “search box”. The search box is centered on the (time, calc depth) point. Identify the maximum and minimum temperatures found in the search box. (BOX 2 in the Figure below).

3. The threshold spike magnitude at each time series point is then: max Temp – min Temp
Where we are using the temperatures found in step 3. (BOX 3 in the Figure below).

4. For a spike to be filtered, it must meet three criteria:
   • The magnitude of the spike exceeds the spike threshold found in step 3. (BOX 4 in the figure below)
   • The magnitude of the spike is greater than 1 C/hr (BOX 5 in the figure below).
   • The value of the spike is outside of the minimum and maximum temperature range found in step 2.
    (BOX 5 in the figure below)

Before this method of flagging spikes can be applied, we must determine what values of ∆time and ∆depth to use. For the ∆depth parameter, we can base our choice on the accuracy of the calculated depths for our thermistors. Analysis has indicated that we do not expect the calculated depths to be off by more than 2m. Since we would rather miss filtering a bad point than filter a good one, we use 3m, giving a total ∆depth of 6m (+/- 3m).

The ∆time parameter becomes especially important when a buoy is near the boundary of two different water masses. To get the full character of the possible temperature fluctuations in space we use a total ∆time of 2 days (+/- 1 day).

To get an idea of how sensitive this spike flagging algorithm is to different values of ∆depth and ∆time, we applied it using a grid of (∆depth, ∆time) parameter pairs. The results are shown below. A dot on the plot below shows that our chosen parameters of ∆Depth = 6m and ∆Time = 2 days results in about 1 spike per 1000 being flagged for filtering.

There are a couple situations where the spike algorithm fails.

  1. Double spikes:
        This is when two spikes in a row occur, which technically doesn't even qualify them for the title "spike".

  2. Sparse data:
        If the points on either side of a spike are distant from it in time, the spike magnitude can not
        be accurately assessed.

In situations such as these, where it is obvious to the eye that the spikes should be removed even though the algorithm fails to flag them, the points were filtered out by hand.

e) Data Columns Removed
If a thermistor or ocean pressure sensor reported no good data, i.e. all values were set to -999, then the column of data for that sensor was removed.
Information about miscellaneous filtering and removed data columes appears in the data file header as follows:


5. Temperature Sensor Depth Calculation
Thermistor depths are presented in three ways:

1. Nominal Depths: This is the default depth provided in Level 1 Raw Data, assuming that the buoy is hanging straight vertical in the water column.

2. Estimated depth: This is a depth calculated by Marlin-Yug buoys, based on a cable model. However, this cable model is based on their original 80m long drogued buoy, which we used in some years and thus are reported in Level 2 QC data for those buoys. In later years, Marlin-Yug made special buoys for us, with no drogue and a different arrangement of sensors. Thus this cable model may not be optimal for these buoys.

3. Calculated depth: For many buoys we used linear interpolation between ocean pressure sensors to calculate thermistor depths for Level 2 QC Data. Details of this calculation follow:
Depths for the thermistors were calculated based on the values reported by the Ocean Pressure (OP) sensors. The OP sensors give the “true depths” at their respective nominal depths. The calculated depth at the top most thermistor was generally assumed to be equal to the nominal depth, ie 2.5m. Linear interpolation to the other thermistors was then applied.

Special Cases
A. Thermistors can occasionally be pulled up into the ice by ridging events. These thermistors were set to 0 m depth for the interpolation.

B. Thermistors can occasionally be pushed deeper than nominal by ice over-rafting of the surface hull, or by transient wave action. When OP sensors read deeper than nominal, this bias is added to all thermistor depths to ensure that the total length of the thermistor string does not exceed its known length.

C. If an OP sensor fails but one or more are still working, the missing op values are estimated based on an analysis of how a particular buoy's OP, sensors typically behave for the buoy type in question. Then depth calculations proceed as normal. If there are no OP data at all, the thermistor depths are reported as -999: They can not be calculated.

6. Open Water or Ice/Near Indicator
A column has been added to the UpTempO time series indicating whether the buoy is in/near ice, or in open water. "In/near ice" implies the buoy is in ice or in water within the Marginal Ice Zone. It is difficult to distinguish between these two possibilities, so we have lumped them together as "in/near ice". Thus this indicator likely predicts that the buoy is in ice when at times, it could be in cold water near some ice.

The primary predictor for this "Open Water or in/near Ice" indicator is the buoy’s proximity to ice concentration values greater than or equal to 0.15. The ice data used for this analysis comes from NSIDC’s near real time ice concentration fields, which are derived from satellite passive microwave values. This field has some inherent error especially near the ice edge, so a secondary criteria for determining whether a buoy is in/near ice is the temperature of the uppermost thermistor. If the temperature is less than -1.2C, we bias the ice indicator toward “in/near ice”. We do this by increasing the allowable distance to satellite derived ice while maintaining an “in/near ice” classification.

The satellite ice data is on a 25km grid, so the buoy can be up to 17.7km away from a grid point while being in an ice pack (see the schematic below). If the buoy is less than this distance from an ice concentration grid cell with a value greater than 0.15, it is labeled as being in/near ice. If it is farther than 17.7km away but less than 35.4km away, it is only labeled as "in/near ice" if the uppermost thermistor value is less than -1.2C.

7. First Wet Thermistor (FWT)
FWT is our best guess for which thermistor on the buoy is the uppermost one in water (as opposed to in air or snow or ice). Thus it points to the thermistor that gives our best estimate of Sea Surface Temperature (SST). For example, if a buoy with a thermistor in the hull is deployed on an ice floe (with the sensor string hanging down through a hole into the ocean), then this hull thermistor is providing air or snow or ice values, not SST. Another example might be if a buoy deployed in open water is later engulfed in ice, and then experiences sensor string uplift owing to an ice ridging event. In this case, there might be a number of thermistors on the string that start reading icy values. The FWT value itself is the index of the first wet thermistor. So, for example, FWT=0 if the uppermost thermistor on the buoy (0m or 2.5m nominal) is in the water. FWT=1 if the uppermost thermistor is in air/ice/snow, but the next one down is in water. FWT=2 if the top two thermistors are in air/ice/snow, etc.

CASE 1: Buoy is in water
FWT = 0 always.
CASE 2: Buoy is in/near ice
If the buoy is in/near ice, it is automatically assumed that the uppermost thermistor is in ice, and the FWT value defaults to 1. This may not be the case, but the error is on the side of being sure that the indicated thermistor is indeed in water.

The FWT can obtain values higher than 1 if the buoy has been ridged up into the ice, or if ice freezes deep enough to encase a thermistor. Therefore, after defaulting to 1, further checks are run to see if the FWT = 1 thermistor is in ice. If the calculated depth of the FWT=1 thermistor is 0m, implying that the thermistor has been ridged up into the ice, then the FWT moves to the next thermistor down, giving FWT = 2. This is repeated until the calculated depth of the FWT thermistor is greater than 0m. Once an FWT thermistor with a calculated depth > 0m is found, we check to see if ice has frozen down around the thermistor. If the temperature of the FWT thermistor is <= -1.8C, we assume the thermistor is frozen into the ice, and the FWT moves to the next thermistor down. This is the final answer.

Here's an example of what the final data file header will look like in its entirety: