Quality Control Protocols
ATN DAC quality control (QC) protocols handle animal trajectory and dive profile data and use the ioos_qc Python package (see docs) to implement multiple QARTOD tests and an aggregate rollup flag.
The following ioos_qc tests are applied:
ioos_qc.argo.speed_testioos_qc.qartod.location_testioos_qc.qartod.gross_range_testioos_qc.axds.valid_range_test
The Location and Speed tests are applied to trajectory data only, while the Gross Range Test is applied to temperature and salinity profile observations. Data are not removed during the QC step, but the results are included in the processed datasets. The Valid Range Test is the only QC test used on both trajectory and profile data that actually truncates the raw data based on deployment dates provided in the metadata, since telemetry tags often begin pinging their locations before and after they are attached to the animal.
Please see the ATN DAC Flow Overview for more details on where the processed data with QC flags can be accessed.
Trajectory QC Tests
The table below summarizes the tests and thresholds that are set for each ATN trajectory parameter:
| Module | Test | Parameter | Suspect | Fail |
|---|---|---|---|---|
| ioos_qc.argo | speed_test | Speed | If over 8.0 m/s | If over 10.0 m/s |
| ioos_qc.argo | location_test | Latitude / Longitude | n/a | If falls outside of [-180, -90, 180, 90] |
| ioos_qc.axds | valid_range_test | Deployment Start Time | n/a | Varies |
| ioos_qc.axds | valid_range_test | Deployment End Time | n/a | Varies |
Profile QC Tests
The table below summarizes the tests and thresholds that are set for each ATN profile parameter:
| Module | Test | Parameter | Suspect | Fail |
|---|---|---|---|---|
| ioos_qc.qartod | gross_range_test | Temperature (C) | n/a | If falls outside of [-2.5, 40] |
| ioos_qc.qartod | gross_range_test | Salinity (psu) | n/a | If falls outside of [0.0, 41.0] |
| ioos_qc.axds | valid_range_test | Deployment Start Time | n/a | Varies |
| ioos_qc.axds | valid_range_test | Deployment End Time | n/a | Varies |
The min and max temperature thresholds and salinity upper bound threshold are taken from the Argo Quality Control Manual for CTD and Trajectory Data and are physical sensor bounds.
While the Argo Quality Control Manual suggests a gross range lower bound of 2 psu for salinity, modern conductivity-based salinity sensors can measure near 0 psu conditions with reasonable accuracy and without signal degradation (Menn & Nair 2022). NOAA’s Manual for Real-Time Quality Control defines the Gross Range Test to flag measurements outside of a sensor’s operational limits. Therefore, the lower bound we use here is 0 psu.
Deployment Duration: Valid Range Test
The ioos_qc.axds.valid_range_test() is applied by checking the ingested data against provider-supplied start and end deployment dates, if available.
Valid start and end deployment dates are either accessed from manually submitted deployment information saved in the ATN Data Registration portal (ADR) or directly from the upstream data source (ATN manufacturer API or server). For the latter, this information is typically stored in the XML metadata file packaged alongside the data files. When both are available, the ADR deployment dates are used as the source of truth, since there is currently no good way of automatically including actual start/end deployment dates in the upstream data source.
The provided deployment date ranges are converted to datetime and used to truncate the data on both ends, to account for time on land before deployment and after retrieval.
Currently, only auto-ingested Wildlife Computer tag data include start and end date metadata (epoch time) in the corresponding XML file, which might look something like this:
<deployment>
<start>
<date>1464789420</date>
<latitude>34.2178</latitude>
<longitude>-120.5634</longitude>
</start>
<end>
<date>1465776000</date>
</end>
</deployment>