QC Flag Definitions - OzFlux/PyFluxPro GitHub Wiki
PyFluxPro QC Flag Definitions
PyFluxPro assigns a quality control (QC) flag to every record for every variable. Each QC flag value has a unique definition that allows the user to trace the provenance of a record all of the way through the PyFluxPro processing path. In particular, the QC flag value will tell the user why a particular data point has been rejected and what method has been used to gap fill the missing data at a later stage.
The QC flags are stored in the netCDF files as the variable name with the suffix "_QCFlag" appended e.g. Fsd_QCFlag is the quality control flag for downwelling shortwave radiation.
There are 2 rules that govern the QC flag value and the analysis that may be supported by the data point, see below:
- A QC flag value of 0 indicates an original measurement that has passed all of the quality control checks. These data are recommended for process-based studies.
- A QC flag value that ends in 0 (e.g. 10, 20, ... or mod(flag, 10)==0) indicates a measurement that has been changed (e.g. linear correction) or gap filled. Data that has been corrected is recommended for process-based studies. Data that has been gap filled is not recommended for process-based studies but may be used for budget-style studies.
The QC flag definitions are given in the table below.
| Flag | Definition |
|---|---|
| 0 | Data has passed all QC checks |
| 1 | Data missing from the L1 input file |
| 2 | Failed range check |
| 3 | Failed SONIC check, Diag_SONIC flag != 0 |
| 4 | Failed IRGA check, Diag_IRGA flag != 0 plus dependencies on AGC_IRGA, AH_IRGA_Sd, CO2_IRGA_Sd, AH_IRGA_Vr, CO2_IRGA_Vr |
| 5 | Failed diurnal check |
| 6 | Date/time range excluded |
| 7 | Hour range excluded |
| 8 | Value of -9999 (missing data) found with QC flag value of 0 |
| 9 | Data rejected by EddyPro QC flag check (L2) |
| 10 | Linear correction or linear drift correction applied to data (L1, L2, L3) |
| 14 | Fco2 rejected during WPL correction due to dependencies (L3) Fe rejected during WPL correction due to dependencies (L3) |
| 20 | Calculated Fn replaced by observed Fn (L3, L4) |
| 21 | Missing rotated covariance replaced with non-rotated value (L3) |
| 23 | Data rejected during dependency check (L2, L3, L4, L5) |
| 30 | Reserved |
| 40 | Reserved |
| 50 | Gap filled by interpolation (L3, L4, L5, L6) |
Table 1: Definition of QC flag values for Levels 1 to 3.
| Flag | Definition |
|---|---|
| 400 | Reserved |
| 410 | Gap filled using automatic weather station (AWS) data. |
| 420 | Gap filled using ACCESS-G numerical weather prediction (NWP) data. |
| 430 | Gap filled using ECMWF Re-Analysis Interim (ERAI) data. |
| 440 | Gap filled using ECMWF Re-Analysis 5 (ERA5) data. |
| 450 | Gap filled using climatology, interpolated daily (default) |
| 460 | Gap filled using climatology, monthly (not implemented) |
| 470 | Gap filled using Marginal Distribution Sampling (MDS) |
Table 2: Definition of QC flag values for Level 4.
| Flag | Definition |
|---|---|
| 500 | Reserved |
| 501 | Reserved |
| 502 | Fco2 masked by turbulence filter (flag only used in intermediate variable Fco2_filtered) |
| 510 | Flux gap filled using SOLO neural network (windowed) |
| 520 | Flux gap filled using SOLO neural network (long gaps) |
| 530 | Reserved |
| 540 | Reserved |
| 550 | Reserved |
| 560 | Reserved |
| 570 | Flux gap filled using Marginal Distribution Sampling (MDS) |
Table 3: Definition of QC flag values for Level 5.
| Flag | Definition |
|---|---|
| 600 | Reserved |
| 601 | ER observation masked because Fco2 flag not in [0, 10] |
| 602 | ER observation masked because it is day time |
| 610 | ER estimated by SOLO neural network from nocturnal, u*-filtered NEE |
| 620 | ER estimated using Lloyd & Taylor (1994) from nocturnal, u*-filtered NEE |
| 630 | ER estimated using Lasslop et al (2010) from nocturnal, u*-filtered NEE (E0) and both daytime and nighttime NEE (alpha, beta0, VPD0, k, rb) |
Table 4: Definition of QC flag values for Level 6.