This is a summary of our current knowledge of each center's QC process.
  Argo Real Time (ART)
MEDS FNMOC BMRC Corliolis UKMO QC Constrast
Pressure

Global range test
P > -5 dBar

Pressure increasing test: P(k+1) <= P(k)

Deepest pressure test
Fail if pressure is greater than 10% higher than the deepest pressure

   

Physical value test. 0 dBar <= P <= 6500 dBar

Monoticity test: P(k+1) <= P(k)

Variable = QC_pressure

As Argo real-time except no deepest pressure test   Only BMRC and Corilolis have pressure tests as recommended by ART. Neither institute a deepest presure test.
Temperature

Global range test
-2.5°C < T < 40°C
21.7°C < T < 40°C for Red Sea
10°C < T < 40°C for Mediterranian

Gradient test
X = mod[ T(k) - (T(k-1) + T(k+1)/2 ]
Fail if X>9°C and P<500dB
Fail if X>3°C and P>=500dB

Spike test
X = mod[ T(k) - (T(k-1) + T(k+1))/2 ] - mod[ ( T(k-1) - T(k+1)) / 2]
Fail if X>6°C and P<500dB
Fail if X>2°C and P>=500dB

Digit rollover test
Fail if mod[T(k) - T(k-1)] or mod[T(k) - T(k+1)] > 10°C

Stuck value test
Fail if all values in a profile are the same

Drift test
Fail if the averageaf the upper 100dB differs from the average of the last
good profile by greater than 1°C

-2.5°< T < 35°C
13°< T < 40°C if in Mediterranean
21.7°< T < 40°C if in Red Sea

0 to 25m = -2.0 to 37°
25 to 50m = -2.0 to 36°
50 to 100m = -2.0 to 36°
100 to 150m = -2.0 to 34°
150 to 200m = -2.0 to 33°
200 to 300m = -2.0 to 29°
300 to 400m = -2.0 to 27°
400 to 1100m = -2.0 to 27°
1100 to 3000m = -1.5 to 18°
3000 to 5500m = -1.5 to 7°
5500 to 12000m = -1.5 to 4°

Constant profile test
Fail if all values in a profile are the same

Spike test:
If mod[T2 - (T3 + T1)/2] - mod[T1-T3] /2 > 2°C then T2 fails

Top spike test:
If -10°C<(T1-T2)<0°C then T1 passes

Bottom spike test:
If -10°C<(T2 - T1)<0°C then T1 passes

Gradient test:
If mod[T2-(T1+T3)/2]>10°C then T2 fails

Inversion test:
If all T > 4°C, profile is examined for local minima and maxima. If there is a maxima winthin 50m shallower than a minima, the rest of the depths are flagged.

Physical value test. -2.5°C ><= T <= 42°C

Spike test: no details

Inversion test: no details

Gradient test: fail if gradient > 0.2°C/m and 4σ from climatological gradient

Physical value test. -2°C ><= T <= 40°C

Missing value test. Variable = QC_TEMP_missval

Gradient test: GRAD(k) = T(k)-(alpha1*T(k-1)-alpha2*T(k+1))
alpha1 = (h(k+1)-h(k))/(h(k+1)-h(k-1)) and
alpha2 = (h(k)-h(k-1))/(h(k+1)-h(k-1)),
where h(i) is depth values.
Test applied:GRAD(k) < 10°C, h<=500m
GRAD(k) < 5°C, h>500m
Variable = QC_TEMP_gradient

Spike tests: 1)If mod[(DT(k-1)]>Ttol.or.mod[DT(k)]>Ttol) .and.mod[(DT(k-1)+DT(k)]<0.5Ttol then T(k-1) = fail
2) if mod[DT(k-1)]>0.5TTol.or.mod[DT(k)]>0.5 TTol.and.
there exists k, where GRAD(T(k))>0.05.and.
mod[DT(k-1)+DT(k)]<0.25mod[DT(k-1)-DT(k)] then T(k-1) = fail
3)If mod[DT(k-1)]>0.5 Ttol, and mod[TR]<0.5 TTol and -3Ttol<DT_DW.<0, for depth <250, T(k-1)= fail
where DT(k)=T(k)-T(k-1), Ttol = 5 C if depth <= 500, Ttol = 2.5 if depth > 500
Variable = QC_TEMP_spike

As Argo real-time

Constant Value test: >=90% of T levels read identical over >=100m = T profile fail

Tropical waters test: if <1000m and <=1 °C reject level

Spike tests: 1)If either mod[DT(k−1)] > TTol or mod[D(Tk)] > TTol and mod[DT(k−1) + DT(k)] < 0.5 × TTol then T(k−2) and T(k) are in good agreement with each other, but T(k−1) is rejected as a spike.
2) If mod[DT(k−1)]>0.5 × TTol or mod[DT(k)]> 0.5 × TTol, and at least one of the vertical gradients is larger in magnitude than 0.05 °C/m, and mod[DT(k−1) + DT(k)]< 0.25x mod[DT(k−1)−DT(k)] then T(k−1) is
rejected as a spike.
3) If mod[DT(k−1)]>TTol, and mod[T(k−1)]>0.5 * TTol(interpolated T(k-1) and T(k)), and 0>DT(k−1)>−3×TTol (d<250m), then T(k−2)
and T(k−1) are flagged as suspect.
where DT(k) = T(k) − T(k−1), and TTol = 5°C (<300m), 2.5 °C(<500m), 2.0°C(<600m), 1.5°C(>600m). If within 20° of the equator then 200m=300m and 300m=400m. TTol is linearly interpolated from 0m to 300m(400m), step function after that. If >4 T spikes then both T and S profiles rejected.

Variable = PROFILE_POTM_QC

Both MEDS and BMRC have slightly tighter global range tests. UKMO do not have one. MEDS have additional depth-based range tests.

MEDS have slightly looser gradient test. BMRC formula takes into account uneven level spacing.

BMRC does not have a constant value test. UKMO has a tighter test.

BMRC and UKMO have more sophisticated spike tests than those of ART and MEDS.

ART includes drift and digit rollover tests that the others don't.

MEDS includes top and bottom spike and inversion tests that the others don't.

UKMO has a tropical waters test that the others don't.

Salinity

Global range test
2 < S < 41 PSU
2 < S < 41 PSU for Red Sea
2 < S < 40 PSU for Mediterranian

Gradient test
X = mod[ S(k) - (S(k-1) + S(k+1))/2 ]
Fail if X>1.5 psu and P<500dB
Fail if X>0.5 psu and P>=500dB

Spike test
X = mod[ S(k) \x{2212} (S(k-1) + S(k+1))/2 ] \x{2212} mod[ ( S(k-1) + S(k+1)) / 2]
Fail if X>0.9 psu and P<500dB
Fail if X>0.3 psu and P>=500dB

Digit rollover test
Fail if mod[S(k) - S(k-1)] or mod[S(k) - S(k+1)] >5 psu

Stuck value test
Fail if all values in a profile are the same

Drift test
Fail if the average of the upper 100dB differs from the average of the last
good profile by greater than 0.5 psu

0 psu < S < 40 psu

0 to 25m = 0 to 40psu
25 to 50m = 0 to 40psu
50 to 100m = 1 to 40psu
100 to 150m = 3 to 40psu
150 to 200m = 3 to 40psu
200 to 300m = 3 to 40psu
300 to 400m = 3 to 40psu
400 to 1100m = 10 to 40psu
1100 to 3000m = 22 to 38psu
3000 to 5500m = 33 to 37psu
5500 to 12000m = 33 to 37psu

Constant profile test
Fail if all values in a profile are the same

Spike test:
If mod[S2 - (S3 + S1)/2] - mod[S1-S3] /2 > 0.3psu then S2 fails

Top spike test:
If -10°C<(S1-S2)<0°C then S1 passes

Bottom spike test:
If -10°C<(S2 - S1)<0°C then S1 passes

Gradient test:
If mod[S2-(S1+S3)/2]>5psu then S2 fails

Physical value test. 0 <= S <= 42 psu Physical value test. 0 <= S <= 39 psu

Missing value test. Variable = QC_PSAL_missval

Gradient test: similar to T but with limits of
GRAD(k) < 1, h<=500
GRAD(k) < 1, h>500
Variable = QC_PSAL_gradient

Spike test: similar to T but without test 2) and with limits of
Stol = 1 psu if depth <= 500
Stol = 0.2 psu if depth > 500
Variable = QC_PSAL_spike

As Argo real-time Tempurature Profile test: if >50% of the T profile is bad, the S profile is rejected.

Constant Value test: >=70% of S levels read identical over >=50m = S profile fail

Spike test: Similar to T but only tests 1) and 3), and without the 0>DS(k−1)>−3×TSol (d<250m) condition in 3) (this test is for a sharp thermocline). If a temperature spike is detected the corresponding salinity value is automatically rejected.

Variable = PROFILE_PSAL_QC

Both MEDS and BMRC have slightly different global range tests from ARC. UKMO do not have one. MEDS have additional depth-based range tests.

MEDS have looser gradient test. BMRC formula takes into account uneven level spacing.

BMRC does not have a constant value test. UKMO has a tighter test.

BMRC and UKMO have more sophisticated spike tests than those of ART and MEDS.

ART includes drift and digit rollover tests that the others don't.

MEDS includes top and bottom spike and inversion tests that the others don't.

Density Inversion test
Calc density (D) from T and S
Fail if D(k)>D(k+1) or D(k)<D(k-1)
As Argo real time Inversion test: fail if D(k)-D(k-1) > 0.025 kg.m-3

Monoticity of density test: If T and S pass tests, check D(k+1) <= D(k) = fail

Variable = QC_stability

As Argo real-time

Dρ(k) = ρ(Θ(k) ; S(k) ; P(k))−ρ(Θ(k−1) ; S(k−1) ; P(k)). If Dρ(k)> −0.03 kgm− 3

Density spike test: if mod[Dρ(k−1) + Dρ(k)] > 0.25 x mod[Dρ(k−1)−Dρ(k)] then fail Θ and S at k-1.

If both tests fail then T and S at k and k-1 fail, unless at bottom of profile in which case only k fails. If a profile has 2 or more inversions the profile is discarded.

ARC and BMRC both simple monoticity tests. UKMO more sophisticated.
Bathymetry / Depth
 

Sounding must agree with bathymetry within 10%

Depth < 10,000m
Depth < 5200m if in Mediterranean
Depth < 3500m if in Red Sea

Monoticity test: D(k+1) <= D(k)

Bottom test:
Lowest level must be within 50m of bathymetry

Duplicate depth test: no details

Increasing depth test: no details

2 minute global bathymetry interpolated: PRES(k) > interp(depth) = fail

Variable = QC_bathymetry

    MEDS and BMRC only have bathymetry tests, MEDS more sophisticated.
Date

Year>1997
1<=Month<=12
Day E Month
0<=Hour<=23
0<=Minute<=59

Year is past
Year>1997
1<=Month<=12
Month is past
Day E Month
Day is past
0<=Hour<=23
0<=Minute<=59

1<=Month<=12
Day E Month
0<=Hour<=23
0<=Minute<=59
0<=Second<=59


Observation time must be older than the receipt time at the center

As Argo real-time Variable = JULD_QC As Argo real-time As Argo real-time Variable = JULD_QC All tests essentially the same as ART.
Position -90<=Latitude<=90
-180<=Longitude<=180
Must be in ocean (ETOPO5)
-90<=Latitude<=90
-180<=Longitude<=180
Must be in ocean

-90<=Latitude<=90
-180<=Longitude<=180
Must be in ocean

As Argo real-time Variable = POSITION_QC As Argo real-time As Argo real-time Variable = POSITION_QC All tests essentially the same as ART.
Speed If drift speed > 3m/s flag time,
position or float label wrong.
If speed exceed maximum for that platform according to a table(?) the position or date is flagged Speed < 2m/s   As Argo real-time Speed(K) = (Dist(K)−0.5xDistRes)/MAX(DTime,TimeRes) where DistRes = 20,000 m (20 km) and TimeRes = 600 s. If speed > 2m/s or > 1.6m/s and there is a kink in the track, then a series of checks are run to determine which position is incorrect. If a buoy has >50% of it's profile positions rejected the buoy is removed. No speed test for BMRC.
Frozen Profile Frozen profile test
Subtract profile levels from previous profile levels (DT and DS)
Fail if max(DT)<0.3°C and min(DT)<0.001°C and mean(dT)<0.02°C max(DS)<0.3 psu and min(DS)<0.001 psu and mean(dSs)<0.004 psu
          Only instituted by ART.
Platform ID Match platform ID to WMO list As Argo real-time     As Argo real-time   Only used by MEDS and Coriolis.

Profile Pres

      % of levels judged to have good pressure good. As Argo Table 2a. Varible = PROFILE_PRES_QC   % of levels judged to have good pressure good. As Argo Table 2a.  
Profile Temp       % of levels judged to have good temperature. As Argo Table 2a. Varible = PROFILE_TEMP_QC   % of levels judged to have good temperature. As Argo Table 2a.  
Profile Sal       % of levels judged to have good salinity. As Argo Table 2a. Varible = PROFILE_PSAL_QC   % of levels judged to have good salinity. As Argo Table 2a.  
Dissolved O2
  0 > Doxy < 650 m.moles/lt   There are variables for DOXY but nothing in the documentation.     Only MEDS and perhaps BMRC.
Freezing point
  If T < Tf then fail, where Tf = -0.0575*S + 1.710523E-3*S
3/2 2.154996E-4*S2 - 7.53E-4*P
        Only MEDS.
Climatology Only in 3 week batches, semi-delayed mode.

Within 5σ of Levitus Seasonal if close to land and depth < 50m, otherwise within 3σ

Within 3σ of Emery and Dewar climatology

SST within 3σ of Asheville
SST climatology

  Within 5σ of climatology As Argo real-time Bayesian background probability check. FOAM 1 day ocean forecast usesd as background. UKMO is a more sophisticated test. Coriolis and ARC and semi-delayed-mode tests.
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               

-- RobinWedd - 16 Nov 2011

Topic revision: r14 - 08 Dec 2011 - 14:22:43 - RobinWedd
 
This site is powered by the TWiki collaboration platformCopyright &© by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback