# manual_flags have the following fields
# start: str
# end: str
# replace_wNAN: boolean
# replace_w0: boolean
# flag: '' will wipe all flags, else str
# reset_adj_precip: optional boolean field
# event_code: optional str field. Limit to defined eventcodes.
# explanation: str. Key words will trigger event codes:
# drain: DRAIN
# install: INSREM
# remov: INSREM
# repair: MAINTE
VAR_02:
# precision in mm
# sensor accuracy 0.2794; sensor precision 0.1049; logger resolution 0.1221 mm; Root sum of square precision 0.161
# precision is limited to 1 decimal place
# post-2022 averaging
# precision: 0.1
# pre- 2022
precision: 0.2
auto_flag:
# dictionary of quality assurance rules and their keyword argurments.
# if method does not have kwargs, make an empty dictionary by placing a ":" after the method name.
remove_GCE_F_flags:
remove_GCE_E_flags:
prorate_precip_during_tank_flux:
max_prorate: 15
round_precip_to_min_increment:
scrape_remainder_window: 6
flag_propagate_EM_from_tank:
flag_double_precip:
min_ppt_nprecision: 4
flat_tank_nprecision: 3
flat_ppt_nprecision: 3
flag_repeating_val_precip:
min_ppt_nprecision: 0
flat_tank_nprecision: 1
flat_ppt_nprecision: 0
min_number_repeating: 5
flag_empty_tank:
pause_nsteps: 3
flag_tank_overflow:
tank_max: 744
flag_precip_during_tank_flux:
fluxprecision: 7
accprecision: 4.2
zero_precision: 4.3
# number of timesteps, must be odd
fluxwindow: 289
accwindow: '1D'
extend_ahead: 4
manual_flags:
# each item on this list (-) is an event dictionary with specific information
- start: '10/1/20 0005'
end: '10/1/21 0000'
replace_wNAN: True
replace_w0: False
flag: M
event_code: ''
explanation: Sensor failure. Rain gauge capped. Data removed.
- start: '4/19/19 1015'
end: '4/19/19 1300'
replace_wNAN: False
replace_w0: False
flag: Q
event_code: INTPRO
explanation: False precip during tank fluctuation
- start: '5/18/19 0800'
end: '5/19/19 0000'
replace_wNAN: False
replace_w0: False
flag: Q
explanation: Daily total precip is correct, but is not located during valid tank increases
- start: '6/5/19 1220'
end: '6/5/19 1250'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation
- start: '7/9/19 0600'
end: '7/9/19 1100'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation
- start: '7/15/19 1030'
end: '7/15/19 1330'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation
- start: '8/3/19 1415'
end: '8/3/19 1425'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation
- start: '8/5/19 1220'
end: '8/5/19 1430'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation
- start: '8/19/19 1415'
end: '8/19/19 1415'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation
- start: '8/24/19 1320'
end: '8/24/19 1320'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation
- start: '8/30/19 1200'
end: '8/30/19 1425'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation
- start: '9/4/19 1325'
end: '9/4/19 1430'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation
- start: '9/11/19 1330'
end: '9/23/19 2000'
replace_wNAN: True
replace_w0: False
flag: M
explanation: Sensor removed and rewired
- start: '9/24/19 1220'
end: '9/24/19 1315'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation
- start: '9/25/19 0900'
end: '9/25/19 1235'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation
- start: '10/1/19 0850'
end: '10/1/19 1200'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation
- start: '10/5/19 1205'
end: '10/5/19 1235'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation
- start: '5/8/20 1130'
end: '5/8/20 1300'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation
- start: '4/20/20 1230'
end: '4/20/20 1245'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation
- start: '5/24/20 1405'
end: '5/24/20 1430'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation
- start: '6/1/20 1405'
end: '6/1/20 1630'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation
- start: '6/4/20 1040'
end: '6/4/20 1305'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation
- start: '8/21/20 0000'
end: '8/22/20 2355'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation (spike at midnight nullifies auotflags)
- start: '9/8/20 1100'
end: '9/8/20 1430'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation (low precip below autoflag threshold)
- start: '9/27/20 0920'
end: '9/27/20 1230'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation (low precip below autoflag threshold)
- start: '9/28/20 1140'
end: '9/28/20 1225'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation (low precip below autoflag threshold)
- start: '11/5/21 0300'
end: '11/5/21 1000'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation (low precip below autoflag threshold)
- start: '11/10/21 2200'
end: '11/11/21 0700'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation (low precip below autoflag threshold)
- start: '12/29/21 1525'
end: '12/29/21 1535'
replace_wNAN: False
replace_w0: False
flag: C
event_code: ''
explanation: False positive for diurnal fluctuation during clog cumulative precip
- start: '12/29/21 1540'
end: '7/3/22 1630'
replace_wNAN: True
replace_w0: False
flag: M
event_code: INSREM
explanation: Sensor couldn't be drained, so drain was left open until cleanout was installed.
- start: '7/3/22 1635'
end: '7/3/22 1645'
replace_wNAN: False
replace_w0: True
flag: ''
event_code: INSREM
explanation: Sensor reinstallation. Tank raised following empty state while disconnected.
- start: '7/13/22 1635'
end: '7/13/22 1645'
replace_wNAN: False
replace_w0: True
flag: ''
explanation: Sensor standpipe drained for repair and tank refilled by bucket.
- start: '9/3/22 1120'
end: '9/3/22 1200'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation (low precip below autoflag threshold)
- start: '9/23/22 1335'
end: '9/23/22 1400'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: False precip during tank fluctuation (low precip below autoflag threshold)
- start: '1/20/23 1225'
end: '1/20/23 1235'
replace_wNAN: True
replace_w0: False
flag: M
event_code: MAINTE
explanation: Tank refilled by bucket to observe float blockage
- start: '1/25/24 1505'
end: '1/25/24 1515'
replace_wNAN: False
replace_w0: False
flag: C
event_code: CLOG
explanation: False positive for diurnal fluctuation during clog cumulative precip
- start: '9/11/24 1025'
end: '9/11/24 1915'
replace_wNAN: False
replace_w0: False
flag: ''
event_code: ''
reset_adj_precip: True
explanation: False positive for diurnal fluctuation during unknown tank drop
UPL_01:
# sensor accuracy 0.2794; sensor precision 0.1049; logger resolution 0.060 mm; Root sum of square precision 0.121
# precision is limited to 1 decimal place
# post-2022 averaging
# precision: 0.1
# pre- 2022
precision: 0.1
auto_flag:
# dictionary of quality assurance rules and their keyword argurments.
# if method does not have kwargs, make an empty dictionary by placing a ":" after the method name.
remove_GCE_F_flags:
remove_GCE_E_flags:
prorate_precip_during_tank_flux:
max_prorate: 15
round_precip_to_min_increment:
scrape_remainder_window: 6
flag_propagate_EM_from_tank:
flag_double_precip:
min_ppt_nprecision: 2
flat_tank_nprecision: 1
flat_ppt_nprecision: 1
flag_repeating_val_precip:
min_ppt_nprecision: 0
flat_tank_nprecision: 1
flat_ppt_nprecision: 0
min_number_repeating: 5
flag_empty_tank:
pause_nsteps: 2
flag_tank_overflow:
tank_max: 744
flag_precip_during_tank_flux:
fluxprecision: 13.27
accprecision: 13.97
zero_precision: 5.59
# number of timesteps, must be odd
fluxwindow: 289
accwindow: '1D'
extend_ahead: 4
flag_x_clogs:
UPL_02:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 58
# 7th percentile
lowest_normal_ratio: -0.038
rolling_window: 14D
# 40% of the lowest normal ratio
window_precision: 0.045
# decide U or C flag
precision_val: 0.1
window: 0.5h
n_std: 1.5
UPL_04:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 58
# 7th percentile
lowest_normal_ratio: -10
rolling_window: 14D
# 40% of the lowest normal ratio
window_precision: 0.045
# decide U or C flag
precision_val: 0.1
window: 0.5h
n_std: 1.5
GSM_02:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 45
# 7th percentile
lowest_normal_ratio: -0.17
rolling_window: 6D
# 40% of the lowest normal ratio
window_precision: 0.08
# decide U or C flag
precision_val: 0.1
window: 0.5h
n_std: 1.5
CS2_02:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 55
# 7th percentile
lowest_normal_ratio: -0.116
rolling_window: 6D
# 40% of the lowest normal ratio
window_precision: 0.11
# decide U or C flag
precision_val: 0.25
window: 0.5h
n_std: 1.5
PRI_03:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 70
# 7th percentile
lowest_normal_ratio: -0.0615
rolling_window: 6D
# 40% of the lowest normal ratio
window_precision: 0.12
# decide U or C flag
precision_val: 0.25
window: 0.5h
n_std: 1.5
PRI_01:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 70
# 7th percentile
lowest_normal_ratio: -0.115
rolling_window: 6D
# 40% of the lowest normal ratio
window_precision: 0.08
# decide U or C flag
precision_val: 0.25
window: 0.5h
n_std: 1.5
VAR_02:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 40
# 7th percentile
lowest_normal_ratio: -0.28
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.15
# decide U or C flag
precision_val: 0.25
window: 0.5h
n_std: 1.5
H15_02:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 40
# 7th percentile
lowest_normal_ratio: -0.03
rolling_window: 14D
# 40% of the lowest normal ratio
window_precision: 0.1
# decide U or C flag
precision_val: 0.2
window: 0.5h
n_std: 1.5
CEN_02:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 90
# 7th percentile
lowest_normal_ratio: -0.05
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.09
# decide U or C flag
precision_val: 0.2
window: 0.5h
n_std: 1.5
CEN_01:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 90
# 7th percentile
lowest_normal_ratio: -0.14
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.09
# decide U or C flag
precision_val: 0.1
window: 0.5h
n_std: 1.5
weight_x_clogs:
UPL_02: 67
UPL_04: 33
GSM_02: 9
CS2_02: 9
PRI_03: 9
PRI_01: 9
VAR_02: 9
H15_02: 9
CEN_02: 15
CEN_01: 15
manual_flags:
# each item on this list (-) is an event dictionary with specific information
- start: '11/3/21 0730'
end: '11/3/21 1325'
replace_wNAN: False
replace_w0: False
flag: ''
event_code: ''
explanation: False positive for diurnal fluctuation
- start: '9/5/19 1440'
end: '9/7/19 2300'
replace_wNAN: False
replace_w0: True
flag: E
event_code: INTPRO
explanation: Momentary tank spike causes anomalous accumulation
- start: '10/10/21 0430'
end: '10/10/21 0930'
replace_wNAN: False
replace_w0: False
flag: U
event_code: CLOG
explanation: Clog before min accumulation has been reached
- start: '10/10/21 0935'
end: '10/10/21 1855'
replace_wNAN: False
replace_w0: False
flag: C
event_code: CLOG
explanation: Clog before min accumulation has been reached
- start: '10/10/21 1900'
end: '10/11/21 0925'
replace_wNAN: False
replace_w0: False
flag: U
event_code: CLOG
explanation: Clog before min accumulation has been reached
- start: '10/11/21 0930'
end: '10/11/21 1130'
replace_wNAN: False
replace_w0: False
flag: C
event_code: CLOG
explanation: Clog before min accumulation has been reached
- start: '3/30/20 1645'
end: '3/31/20 0400'
replace_wNAN: False
replace_w0: False
flag: U
event_code: CLOG
explanation: Clog not caught by automated detection
- start: '4/3/20 0320'
end: '4/3/20 1950'
replace_wNAN: False
replace_w0: False
flag: C
event_code: CLOG
explanation: Clog not caught by automated detection
- start: '10/11/20 0200'
end: '10/11/20 1900'
replace_wNAN: False
replace_w0: False
flag:
event_code:
explanation: Unflag false positive for clog.
- start: '11/18/23 1700'
end: '11/19/23 1900'
replace_wNAN: False
replace_w0: False
flag: U
event_code: CLOG
explanation: Clog not caught by automated detection.
- start: '11/23/23 0000'
end: '11/24/23 0600'
replace_wNAN: False
replace_w0: False
flag:
event_code:
explanation: Unflag false positive for clog.
UPL_02:
# precision in mm
# sensor accuracy 0.381; sensor precision 0.3166; logger resolution 0.158 mm; Root sum of square precision 0.354
# precision is limited to 1 decimal place
# post-2022 averaging
# precision: 0.2
# pre- 2022
precision: 0.4
auto_flag:
# dictionary of quality assurance rules and their keyword argurments.
# if method does not have kwargs, make an empty dictionary by placing a ":" after the method name.
# perform multipart flagging routine to catch drains and recharge
drain_recharge_flagging_wrap:
# calculated from 5 years (WY 2018-2022)
# 75percentile of 15 min precip where >0 and drain=True
drain_threshold: -25
event_window: 3
max_recharge: 2.67
runavg_wind: 12
runavg_nstd: 2
remove_GCE_F_flags:
remove_GCE_E_flags:
prorate_precip_during_tank_flux:
max_prorate: 15
round_precip_to_min_increment:
scrape_remainder_window: 12
flag_propagate_EM_from_tank:
flag_double_precip:
min_ppt_nprecision: 2
flat_tank_nprecision: 1
flat_ppt_nprecision: 1
flag_repeating_val_precip:
min_ppt_nprecision: 0
flat_tank_nprecision: 1
flat_ppt_nprecision: 0
min_number_repeating: 5
flag_empty_tank:
pause_nsteps: 2
flag_tank_overflow:
tank_max: 744
flag_precip_during_tank_flux:
fluxprecision: 3.3
accprecision: 3.5
zero_precision: 1.4
# number of timesteps, must be odd
fluxwindow: 289
accwindow: '1D'
extend_ahead: 4
flag_x_clogs:
UPL_01:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 58
# 7th percentile
lowest_normal_ratio: -0.32
rolling_window: 14D
# 40% of the lowest normal ratio
window_precision: 0.027
# decide U or C flag
precision_val: 0.1
window: 0.5h
n_std: 1.5
UPL_04:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 15
# 7th percentile
lowest_normal_ratio: -10
rolling_window: 6D
# 40% of the lowest normal ratio
window_precision: 0.015
# decide U or C flag
precision_val: 0.1
window: 0.5h
n_std: 1.5
GSM_02:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 45
# 7th percentile
lowest_normal_ratio: -0.43
rolling_window: 6D
# 40% of the lowest normal ratio
window_precision: 0.08
# decide U or C flag
precision_val: 0.1
window: 0.5h
n_std: 1.5
CS2_02:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 45
# 7th percentile
lowest_normal_ratio: -0.43
rolling_window: 6D
# 40% of the lowest normal ratio
window_precision: 0.1
# decide U or C flag
precision_val: 0.25
window: 0.5h
n_std: 1.5
PRI_03:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 70
# 7th percentile
lowest_normal_ratio: -0.3
rolling_window: 6D
# 40% of the lowest normal ratio
window_precision: 0.12
# decide U or C flag
precision_val: 0.25
window: 0.5h
n_std: 1.5
PRI_01:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 70
# 7th percentile
lowest_normal_ratio: -0.38
rolling_window: 6D
# 40% of the lowest normal ratio
window_precision: 0.08
# decide U or C flag
precision_val: 0.25
window: 0.5h
n_std: 1.5
VAR_02:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 40
# 7th percentile
lowest_normal_ratio: -0.28
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.12
# decide U or C flag
precision_val: 0.25
window: 0.5h
n_std: 1.5
H15_02:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 40
# 7th percentile
lowest_normal_ratio: -0.22
rolling_window: 14D
# 40% of the lowest normal ratio
window_precision: 0.08
# decide U or C flag
precision_val: 0.25
window: 0.5h
n_std: 1.5
CEN_02:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 90
# 7th percentile
lowest_normal_ratio: -0.14
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.09
# decide U or C flag
precision_val: 0.2
window: 0.5h
n_std: 1.5
CEN_01:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 90
# 7th percentile
lowest_normal_ratio: -0.14
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.09
# decide U or C flag
precision_val: 0.1
window: 0.5h
n_std: 1.5
weight_x_clogs:
UPL_01: 67
UPL_04: 58
GSM_02: 9
CS2_02: 9
PRI_03: 4
PRI_01: 5
VAR_02: 15
H15_02: 10
CEN_02: 9
CEN_01: 9
manual_flags:
# each item on this list (-) is an event dictionary with specific information
- start: '4/15/19 1230'
end: '4/15/19 1250'
replace_wNAN: False
replace_w0: True
flag: E
event_code: DRAIN
explanation: Delayed recharge following an over-drain.
- start: '8/22/19 0805'
end: '8/22/19 1040'
replace_wNAN: True
replace_w0: False
flag: M
event_code: INSREM
explanation: Flag period where the sensor was removed for cleaning.
- start: '9/12/19 1545'
end: '9/12/19 1600'
replace_wNAN: True
replace_w0: False
flag: M
event_code: MAINTE
explanation: Over drained and added water
- start: '8/22/19 1605'
end: '8/22/19 1615'
replace_wNAN: False
replace_w0: False
flag: Q
event_code: MAINTE
explanation: Over drained and added water. Tank continues to have large rises
- start: '5/2/20 1145'
end: '5/19/20 1605'
replace_wNAN: False
replace_w0: False
flag: U
event_code: CLOG
explanation: Automated flagging under-catches this clog in the orifice funnel.
- start: '6/6/20 1200'
end: '6/10/20 1000'
replace_wNAN: False
replace_w0: False
flag: U
event_code: CLOG
explanation: Clog not caught by automated flagging.
- start: '11/4/22 1900'
end: '11/5/22 0230'
replace_wNAN: False
replace_w0: False
flag:
event_code:
explanation: Over flagging by automated clog detection
- start: '10/9/23 1120'
end: '10/10/23 0400'
replace_wNAN: False
replace_w0: False
flag: U
event_code: CLOG
explanation: Clog before minimum annual accumulation
- start: '10/10/23 1700'
end: '10/12/23 0145'
replace_wNAN: False
replace_w0: False
flag:
event_code:
explanation: Over flagging by automated clog detection.
- start: '2/15/24 0240'
end: '2/15/24 1935'
replace_wNAN: False
replace_w0: False
flag: U
event_code: CLOG
explanation: Clog under-flagged by automated clog detection.
- start: '2/16/24 1045'
end: '2/17/24 1335'
replace_wNAN: False
replace_w0: False
flag: C
event_code: CLOG
explanation: Clog under-flagged by automated clog detection.
- start: '2/17/24 1340'
end: '2/18/24 0635'
replace_wNAN: False
replace_w0: False
flag: U
event_code: CLOG
explanation: Clog under-flagged by automated clog detection.
- start: '2/18/24 0640'
end: '2/19/24 0935'
replace_wNAN: False
replace_w0: False
flag: C
event_code: CLOG
explanation: Clog under-flagged by automated clog detection.
UPL_04:
# precision in mm
precision: 0.1048
auto_flag:
flag_over_intensity:
max_per_hour: 25
CEN_01:
# sensor accuracy 0.2794; sensor precision 0.1049; logger resolution 0.1221 mm; Root sum of square precision 0.161
# precision is limited to 1 decimal place
# post-2022 averaging
# precision: 0.1
# pre- 2022
precision: 0.2
auto_flag:
# dictionary of quality assurance rules and their keyword argurments.
# if method does not have kwargs, make an empty dictionary by placing a ":" after the method name.
remove_GCE_F_flags:
remove_GCE_E_flags:
prorate_precip_during_tank_flux:
max_prorate: 15
round_precip_to_min_increment:
scrape_remainder_window: 6
flag_propagate_EM_from_tank:
flag_double_precip:
min_ppt_nprecision: 2
flat_tank_nprecision: 1
flat_ppt_nprecision: 1
flag_repeating_val_precip:
min_ppt_nprecision: 0
flat_tank_nprecision: 1
flat_ppt_nprecision: 0
min_number_repeating: 5
flag_empty_tank:
pause_nsteps: 2
flag_tank_overflow:
tank_max: 744
flag_precip_during_tank_flux:
fluxprecision: 6.6
accprecision: 7
zero_precision: 2.8
# number of timesteps, must be odd
fluxwindow: 289
accwindow: '1D'
extend_ahead: 4
flag_x_clogs:
CEN_02:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 34
# 7th percentile
lowest_normal_ratio: -0.345
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.018
# decide U or C flag
precision_val: 0.2
window: 0.5h
n_std: 1.5
CS2_02:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 50
# 5th percentile
lowest_normal_ratio: -0.143
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.03
# decide U or C flag
precision_val: 0.254
window: 1h
n_std: 1.5
PRI_03:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 50
# 5th percentile
lowest_normal_ratio: -0.143
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.03
# decide U or C flag
precision_val: 0.254
window: 1h
n_std: 1.5
PRI_01:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 50
# 5th percentile
lowest_normal_ratio: -10
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.04
# decide U or C flag
precision_val: 0.254
window: 1h
n_std: 1.5
UPL_02:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 93
# 5th percentile
lowest_normal_ratio: -0.48
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.03
# decide U or C flag
precision_val: 0.1
window: 1h
n_std: 1.5
UPL_04:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 93
# 5th percentile
lowest_normal_ratio: -1.1
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.03
# decide U or C flag
precision_val: 0.1
window: 1h
n_std: 1.5
UPL_01:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 93
# 5th percentile
lowest_normal_ratio: -0.48
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.03
# decide U or C flag
precision_val: 0.1
window: 0.5h
n_std: 1.5
VAR_02:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 70
# 5th percentile
lowest_normal_ratio: -0.36
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.12
# decide U or C flag
precision_val: 0.1
window: 0.5h
n_std: 1.5
H15_02:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 50
# 5th percentile
lowest_normal_ratio: -0.245
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.055
# decide U or C flag
precision_val: 0.2
window: 0.5h
n_std: 1.5
GSM_02:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 45
# 5th percentile
lowest_normal_ratio: -0.643
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.075
# decide U or C flag
precision_val: 0.2
window: 0.5h
n_std: 1.5
weight_x_clogs:
CEN_02: 58
CS2_02: 8
PRI_03: 4
PRI_01: 4
UPL_01: 10
UPL_02: 5
UPL_04: 5
VAR_02: 25
H15_02: 30
GSM_02: 8
manual_flags:
# each item on this list (-) is an event dictionary with specific information
- start: '12/18/18 0230'
end: '12/25/18 0920'
replace_wNAN: False
replace_w0: False
flag: ''
explanation: Remove GCE M flag during clog period to include rapid unclog and catch up of cumulative precip.
#- start: '10/27/18 0145'
# end: '10/27/18 0145'
# replace_wNAN: False
# replace_w0: False
# flag: ''
# explanation: Remove overflag after clog resolves
#- start: '10/30/18 0135'
# end: '10/30/18 0140'
# replace_wNAN: False
# replace_w0: False
# flag: ''
# explanation: Remove overflag after clog resolves
#- start: '10/30/18 0350'
# end: '10/30/18 0350'
# replace_wNAN: False
# replace_w0: False
# flag: ''
# explanation: Remove overflag after clog resolves
- start: '2/12/19 1745'
end: '2/21/19 1730'
replace_wNAN: False
replace_w0: False
flag: ''
explanation: Remove GCE M flag during clog period to include rapid unclog and catch up of cumulative precip.
- start: '4/6/19 1000'
end: '4/16/19 1200'
replace_wNAN: False
replace_w0: False
flag: ''
explanation: Remove GCE M flag during clog period to include rapid unclog and catch up of cumulative precip.
- start: '10/23/20 2000'
end: '10/23/20 2200'
replace_wNAN: False
replace_w0: False
flag: ''
event_code: ''
explanation: Remove false clog flags.
- start: '10/7/21 1255'
end: '10/12/21 1705'
replace_wNAN: False
replace_w0: True
flag: 'U'
event_code: CLOG
explanation: Valve left open at gauge. Not enough accumulated precip for autoflagging.
- start: '10/29/18 0710'
end: '10/29/18 1900'
replace_wNAN: False
replace_w0: False
flag: 'U'
event_code: CLOG
explanation: Small clog not caught by auto_flags
- start: '10/29/18 1905'
end: '10/29/18 2315'
replace_wNAN: False
replace_w0: False
flag: 'C'
event_code: CLOG
explanation: Small clog not caught by auto_flags
- start: '11/1/23 1200'
end: '11/4/23 1500'
replace_wNAN: False
replace_w0: False
flag: ''
event_code: ''
explanation: Remove false clog flags.
CEN_02:
# precision in mm
# sensor accuracy 0.381; sensor precision 0.3166; logger resolution 0.158 mm; Root sum of square precision 0.354
# precision is limited to 1 decimal place
# post-2022 averaging
# precision: 0.2
# pre- 2022
precision: 0.4
auto_flag:
# dictionary of quality assurance rules and their keyword argurments.
# if method does not have kwargs, make an empty dictionary by placing a ":" after the method name.
# perform multipart flagging routine to catch drains and recharge
drain_recharge_flagging_wrap:
# calculated from 5 years (WY 2018-2022)
# 75percentile of 15 min precip where >0 and drain=True
drain_threshold: -25
event_window: 3
max_recharge: 2.67
runavg_wind: 12
runavg_nstd: 2
remove_GCE_F_flags:
remove_GCE_E_flags:
prorate_precip_during_tank_flux:
max_prorate: 15
round_precip_to_min_increment:
scrape_remainder_window: 12
flag_precip_during_tank_flux:
fluxprecision: 3.3
accprecision: 3.5
zero_precision: 1.4
# number of timesteps, must be odd
fluxwindow: 289
accwindow: '1D'
extend_ahead: 4
flag_propagate_EM_from_tank:
flag_double_precip:
min_ppt_nprecision: 2
flat_tank_nprecision: 1
flat_ppt_nprecision: 1
flag_tank_overflow:
tank_max: 558
flag_repeating_val_precip:
min_ppt_nprecision: 0
flat_tank_nprecision: 1
flat_ppt_nprecision: 0
min_number_repeating: 5
flag_empty_tank:
pause_nsteps: 2
flag_x_clogs:
CEN_01:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 55
# 7th percentile
lowest_normal_ratio: -0.16
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.065
# decide U or C flag
precision_val: 0.1
window: 1h
n_std: 1.5
UPL_02:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 93
# 5th percentile
lowest_normal_ratio: -0.8
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.03
# decide U or C flag
precision_val: 0.1
window: 1h
n_std: 1.5
UPL_04:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 93
# 5th percentile
lowest_normal_ratio: -1.1
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.065
# decide U or C flag
precision_val: 0.1
window: 1h
n_std: 1.5
UPL_01:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 93
# 5th percentile
lowest_normal_ratio: -0.8
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.065
# decide U or C flag
precision_val: 0.1
window: 0.5h
n_std: 1.5
PRI_01:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 50
# 5th percentile
lowest_normal_ratio: -10
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.04
# decide U or C flag
precision_val: 0.254
window: 1h
n_std: 1.5
PRI_03:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 50
# 5th percentile
lowest_normal_ratio: -0.34
rolling_window: 10D
# 40% of the lowest normal ratio
window_precision: 0.12
# decide U or C flag
precision_val: 0.254
window: 1h
n_std: 1.5
CS2_02:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 50
# 5th percentile
lowest_normal_ratio: -0.36
rolling_window: 10D
# 40% of the lowest normal ratio
window_precision: 0.12
# decide U or C flag
precision_val: 0.254
window: 1h
n_std: 1.5
VAR_02:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 70
# 5th percentile
lowest_normal_ratio: -0.44
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.12
# decide U or C flag
precision_val: 0.1
window: 0.5h
n_std: 1.5
H15_02:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 50
# 5th percentile
lowest_normal_ratio: -0.245
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.055
# decide U or C flag
precision_val: 0.2
window: 0.5h
n_std: 1.5
GSM_02:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 45
# 5th percentile
lowest_normal_ratio: -0.643
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.075
# decide U or C flag
precision_val: 0.2
window: 0.5h
n_std: 1.5
weight_x_clogs:
CEN_01: 58
UPL_02: 5
UPL_04: 5
UPL_01: 10
CS2_02: 8
PRI_03: 4
PRI_01: 4
VAR_02: 25
H15_02: 30
GSM_02: 8
manual_flags:
# each item on this list (-) is an event dictionary with specific information
- start: '4/23/19 2250'
end: '4/24/19 0125'
replace_wNAN: False
replace_w0: False
flag: ''
event_code: ''
explanation: False positive for clog
- start: '11/10/20 1350'
end: '11/10/20 1410'
replace_wNAN: False
replace_w0: False
flag: ''
event_code: ''
explanation: False positive for clog
- start: '11/10/20 1740'
end: '11/10/20 1750'
replace_wNAN: False
replace_w0: False
flag: ''
event_code: ''
explanation: False positive for clog
- start: '10/13/17 0000'
end: '10/13/17 0120'
replace_wNAN: False
replace_w0: False
flag: ''
event_code: LOGGER
explanation: Remove flags during logger OS reinstall
- start: '11/15/19 0745'
end: '11/15/19 1750'
replace_wNAN: False
replace_w0: False
flag: ''
event_code: LOGGER
explanation: Remove flags during logger OS reinstall
CEN_04:
# precision in mm
precision: 0.1962
auto_flag:
flag_over_intensity:
max_per_hour: 25
CS2_02:
# precision in mm
precision: 0.25
auto_flag:
round_precip_to_min_increment:
scrape_remainder_window: 0
flag_tank_overflow:
tank_max: 412
# perform multipart flagging routine to catch drains and recharge
drain_recharge_flagging_wrap:
# calculated from 5 years (WY 2018-2022)
# 75percentile of 15 min precip where >0 and drain=True
drain_threshold: -8
event_window: 3
max_recharge: 2.67
runavg_wind: 4
runavg_nstd: 2
flag_empty_tank:
pause_nsteps: 2
flag_x_clogs:
CEN_01:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 34
# 7th percentile
lowest_normal_ratio: -0.09
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.03
# decide U or C flag
precision_val: 0.1
window: 1h
n_std: 1.5
weight_x_clogs:
CEN_01: 7
#UPL_02: 20
manual_flags:
# each item on this list (-) is an event dictionary with specific information
- start: '10/19/17 1645'
end: '10/19/17 1645'
replace_wNAN: True
replace_w0: False
flag: 'M'
event_code: MAINTE
explanation: Spike at drain start. Broken siphon sitting on scale while repairs attempted.
- start: '11/21/17 1315'
end: '11/21/17 1345'
replace_wNAN: False
replace_w0: False
flag: Q
explanation: Cancel autoflag as recharge. 1 mm tank drop at time of 3.05 mm precip (daily peak).
- start: '4/17/18 1345'
end: '4/17/18 1345'
replace_wNAN: True
replace_w0: False
flag: M
event_code: MAINTE
explanation: Spike at drain start (weight of siphon).
- start: '9/30/20 0915'
end: '9/30/20 0915'
replace_wNAN: True
replace_w0: False
flag: 'M'
event_code: MAINTE
explanation: Spike at drain start (weight of siphon). No rain rest of day.
- start: '11/8/21 1000'
end: '11/8/21 1000'
replace_wNAN: False
replace_w0: False
flag: Q
explanation: Tank level spikes, then immediately comes back down.
- start: '1/4/22 1145'
end: '1/4/22 1145'
flag: M
event_code: MAINTE
explanation: Spike at drain start (weight of siphon). No rain rest of day.
replace_wNAN: True
replace_w0: False
- start: '2/25/19 0630'
end: '2/28/19 1130'
flag: 'M'
event_code: CLOG
explanation: Snowdown overflowed noahiv with snow.
replace_wNAN: True
replace_w0: False
# - start: '4/8/19 0330'
# end: '4/9/19 1630'
# flag: U
# explanation: Tank overflow. No precip recorded.
# replace_wNAN: True
# use_orig_val: False
PRI_03:
# precision in mm
precision: 0.25
auto_flag:
round_precip_to_min_increment:
scrape_remainder_window: 0
flag_tank_overflow:
tank_max: 434
# perform multipart flagging routine to catch drains and recharge
drain_recharge_flagging_wrap:
# calculated from 5 years (WY 2018-2022)
# 75percentile of 15 min precip where >0 and drain=True
drain_threshold: -8
event_window: 3
max_recharge: 2.67
runavg_wind: 4
runavg_nstd: 2
flag_empty_tank:
pause_nsteps: 2
flag_x_clogs:
CEN_01:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 34
# 7th percentile
lowest_normal_ratio: -0.09
rolling_window: 8D
# 40% of the lowest normal ratio
window_precision: 0.03
# decide U or C flag
precision_val: 0.1
window: 1h
n_std: 1.5
PRI_01:
# perform multiple steps to find clogs and flag values during them
clog_pair_flagging_wrap:
# find clog event
min_accum: 45
# 7th percentile
lowest_normal_ratio: -80
rolling_window: 14D
# 40% of the lowest normal ratio
window_precision: 0.14
# decide U or C flag
precision_val: 0.1
window: 1h
n_std: 1.5
weight_x_clogs:
CEN_01: 7
#UPL_02: 20
PRI_01:
# precision in mm
precision: 0.254
auto_flag:
flag_over_intensity:
max_per_hour: 25
manual_flags:
- start: '4/29/19 1850'
end: '4/29/19 1900'
replace_wNAN: False
replace_w0: True
flag: 'E'
event_code: MAINTE
explanation: Accidental tips while killing wasp nest.
- start: '10/1/20 0000'
end: '10/13/20 0000'
replace_wNAN: False
replace_w0: False
flag: 'U'
event_code: CLOG
explanation: Clog in tipping bucket funnel
H15_02:
precision: 0.2
auto_flag:
# dictionary of quality assurance rules and their keyword argurments.
# if method does not have kwargs, make an empty dictionary by placing a ":" after the method name.
drain_recharge_flagging_wrap:
# calculated from 5 years (WY 2018-2022)
# 75percentile of 15 min precip where >0 and drain=True
drain_threshold: -25
event_window: 6
max_recharge: 2.67
runavg_wind: 4
runavg_nstd: 2
prorate_precip_during_tank_flux:
max_prorate: 15
round_precip_to_min_increment:
scrape_remainder_window: 6
remove_GCE_F_flags:
remove_GCE_E_flags:
flag_propagate_EM_from_tank:
flag_double_precip:
min_ppt_nprecision: 2
flat_tank_nprecision: 1
flat_ppt_nprecision: 1
flag_repeating_val_precip:
min_ppt_nprecision: 0
flat_tank_nprecision: 1
flat_ppt_nprecision: 0
min_number_repeating: 5
flag_empty_tank:
pause_nsteps: 3
flag_tank_overflow:
tank_max: 762
flag_precip_during_tank_flux:
fluxprecision: 4
accprecision: 2
zero_precision: 3
# number of timesteps, must be odd
fluxwindow: 289
accwindow: '1D'
extend_ahead: 4
manual_flags:
# each item on this list (-) is an event dictionary with specific information
- start: '6/6/19 1550'
end: '6/6/19 1555'
replace_wNAN: False
replace_w0: True
flag: 'E'
event_code: MAINTE
explanation: Anti-freeze added to tank manually. Reset to 0
- start: '3/8/23 1130'
end: '3/8/23 1140'
replace_wNAN: False
replace_w0: True
flag: 'E'
event_code: MAINTE
explanation: Anti-freeze added to tank manually. Reset to 0
- start: '1/31/24 1300'
end: '2/28/24 1530'
replace_wNAN: True
replace_w0: False
flag: 'M'
event_code: CLOG
explanation: Drain left open
- start: '11/18/19 1545'
end: '11/18/19 1555'
replace_wNAN: False
replace_w0: True
flag: 'E'
event_code: MAINTE
explanation: Anti-freeze added to tank manually. Reset to 0
GSM_02:
precision: 0.2
auto_flag:
# dictionary of quality assurance rules and their keyword argurments.
# if method does not have kwargs, make an empty dictionary by placing a ":" after the method name.
prorate_precip_during_tank_flux:
max_prorate: 15
round_precip_to_min_increment:
scrape_remainder_window: 6
remove_GCE_F_flags:
remove_GCE_E_flags:
flag_propagate_EM_from_tank:
flag_double_precip:
min_ppt_nprecision: 2
flat_tank_nprecision: 1
flat_ppt_nprecision: 1
flag_repeating_val_precip:
min_ppt_nprecision: 0
flat_tank_nprecision: 1
flat_ppt_nprecision: 0
min_number_repeating: 5
flag_empty_tank:
pause_nsteps: 3
flag_tank_overflow:
tank_max: 762
flag_precip_during_tank_flux:
fluxprecision: 4
accprecision: 3
zero_precision: 2
# number of timesteps, must be odd
fluxwindow: 289
accwindow: '1D'
extend_ahead: 4