1. Introduction
This package provides tools for running quality control (QC) on rain gauge data in a flexible, user-driven way. It is designed to help everyone, from individual researchers to industrial-scale users, apply standardised QC checks to rainfall observations whether you have one rain gauge or a whole network of rain gauges.
At its core, the package offers:
27 QC checks for rainfall data as of v0.2.5 (25 from IntenseQC and 2 from pyPWSQC)
Customizable parameters – adjust thresholds, streak or accumulation lengths, and distances to neighboring gauges
A modular QC framework – users can select which QC methods to apply, and configure them according to their project’s requirements
This approach allows you to build a tailored QC pipeline: include only the checks you need, set thresholds that match your research purposes, and run consistent, reproducible quality control.
1.1. What type of checks are in the package?
The RainfallQC package breaks down the QC checks into four distinct types:
Gauge checks – For detecting abnormalities in summary and descriptive statistics.
Comparison checks – For detecting abnormalities based on rainfall benchmarks.
Time-series checks – For detecting abnormalities in patterns of the data record.
Neighbourhood checks – For detecting abnormalities based on measurements in neighbouring rain gauges.
pypwsqc filters – For applying quality assurance protocols and filters for rainfall data.
These different types of rainfall checks are either rainfall-specific or not and need different amounts of data to run (Figure 1).
Figure 1. Types of checks within RainfallQC
1.2. All QC checks in package
These are the quality control checks currently implemented in the package:
Check |
Sub-module |
QC Framework |
Note |
|---|---|---|---|
Gauge checks |
QC1 |
||
Gauge checks |
IntenseQC |
QC2 |
|
Gauge checks |
IntenseQC |
QC3 |
|
Gauge checks |
IntenseQC |
QC4 |
|
Gauge checks |
IntenseQC |
QC5 |
|
Gauge checks |
IntenseQC |
QC6 |
|
Gauge checks |
IntenseQC |
QC7 |
|
Comparison checks |
IntenseQC |
QC8 |
|
Comparison checks |
IntenseQC |
QC9 |
|
Comparison checks |
IntenseQC |
QC10 |
|
Comparison checks |
IntenseQC |
QC11 |
|
Timeseries checks |
IntenseQC |
QC12 |
|
Timeseries checks |
IntenseQC |
QC13 |
|
Timeseries checks |
IntenseQC |
QC14 |
|
Timeseries checks |
IntenseQC |
QC15 |
|
Neighbourhood checks |
IntenseQC |
QC16 |
|
Neighbourhood checks |
IntenseQC |
QC17 |
|
Neighbourhood checks |
IntenseQC |
QC18 |
|
Neighbourhood checks |
IntenseQC |
QC19 |
|
Neighbourhood checks |
IntenseQC |
QC20 |
|
Neighbourhood checks |
IntenseQC |
QC21 |
|
Neighbourhood checks |
IntenseQC |
QC22 |
|
Neighbourhood checks |
IntenseQC |
QC23 |
|
Neighbourhood checks |
IntenseQC |
QC24 |
|
Neighbourhood checks |
IntenseQC |
QC25 |
|
pyPWSQC filters |
FZ |
||
pyPWSQC filters |
pyPWSQC |
SO |