[update] add min_sample parameter, which controls ne number of samples that have to be of a specific voltage state before counting them as fail-state
This commit is contained in:
parent
a30cd8c0d4
commit
f0ae7da2be
@ -7,11 +7,12 @@ channels: ["EX1", "EX2", "EX3", "VEI"] # Specify SOH channels, currently supp
|
||||
stations_blacklist: ["TEST", "EREA"] # exclude these stations
|
||||
networks_blacklist: [] # exclude these networks
|
||||
interval: 60 # Perform checks every x seconds
|
||||
n_track: 120 # wait n_track * intervals before performing an action (i.e. send mail/end highlight status)
|
||||
n_track: 300 # wait n_track * intervals before performing an action (i.e. send mail/end highlight status)
|
||||
timespan: 7 # Check data of the recent x days
|
||||
verbosity: 0 # verbosity flag
|
||||
track_changes: True # tracks all changes since GUI startup by text highlighting (GUI only)
|
||||
warn_count: False # show number of warnings and errors in table
|
||||
warn_count: False # show number of warnings and errors in table
|
||||
min_sample: 3 # minimum samples for raising Warn/FAIL
|
||||
dt_thresh: [300, 1800] # threshold (s) for timing delay colourisation (yellow/red)
|
||||
html_figures: True # Create html figure directory and links
|
||||
reread_parameters: True # reread parameters file (change parameters on runtime, not for itself/GUI refresh/datapath)
|
||||
|
@ -6,7 +6,7 @@ ulimit -s 8192
|
||||
#$ -cwd
|
||||
#$ -pe smp 1
|
||||
#$ -N survBot_bg
|
||||
#$ -l os=*stretch
|
||||
##$ -l os=*stretch
|
||||
|
||||
source /opt/anaconda3/etc/profile.d/conda.sh
|
||||
conda activate py37
|
||||
|
32
survBot.py
32
survBot.py
@ -720,9 +720,6 @@ class StationQC(object):
|
||||
self.status_ok(key, detailed_message=f'U={(voltage[-1])}V')
|
||||
return
|
||||
|
||||
n_overvolt = 0
|
||||
n_undervolt = 0
|
||||
|
||||
warn_message = f'Trace {trace.get_id()}:'
|
||||
if len(overvolt) > 0:
|
||||
# try calculate number of voltage peaks from gaps between indices
|
||||
@ -835,8 +832,7 @@ class StationQC(object):
|
||||
self.status_ok(key)
|
||||
continue
|
||||
if volt_lvl > 1:
|
||||
# try calculate number of voltage peaks from gaps between indices
|
||||
n_occurrences = len(np.where(np.diff(ind_array) > 1)[0]) + 1
|
||||
n_occurrences = self.calc_occurrences(ind_array)
|
||||
self.warn(key=key,
|
||||
detailed_message=f'Trace {trace.get_id()}: '
|
||||
f'Found {n_occurrences} occurrence(s) of {volt_lvl}V: {key}: {message}'
|
||||
@ -847,6 +843,32 @@ class StationQC(object):
|
||||
if volt_lvl == last_val or (volt_lvl == -1 and last_val < 1):
|
||||
self.error(key, detailed_message=f'Last PowBox voltage state {last_val}V: {message}')
|
||||
|
||||
def calc_occurrences(self, ind_array):
|
||||
# try calculate number of voltage peaks/plateaus from gaps between indices
|
||||
if len(ind_array) == 0:
|
||||
return 0
|
||||
else:
|
||||
# start index at 1 if there are gaps (n_peaks = n_gaps + 1)
|
||||
n_occurrences = 1
|
||||
|
||||
min_samples = self.parameters.get('min_sample')
|
||||
if not min_samples:
|
||||
min_samples = 1
|
||||
|
||||
# calculated differences in index array, diff > 1: gap, diff == 1: within peak/plateau
|
||||
diffs = np.diff(ind_array)
|
||||
gap_start_inds = np.where(np.diff(ind_array) > 1)[0]
|
||||
# iterate over all gaps and check "min_samples" before the gap
|
||||
for gsi in gap_start_inds:
|
||||
# right boundary index of peak (gap index - 1)
|
||||
peak_rb_ind = gsi - 1
|
||||
# left boundary index of peak
|
||||
peak_lb_ind = max([0, peak_rb_ind - min_samples])
|
||||
if all(diffs[peak_lb_ind: peak_rb_ind] == 1):
|
||||
n_occurrences += 1
|
||||
|
||||
return n_occurrences
|
||||
|
||||
def get_trace(self, stream, keys):
|
||||
if not type(keys) == list:
|
||||
keys = [keys]
|
||||
|
Loading…
Reference in New Issue
Block a user