Skip to content

Commit 1fae5b8

Browse files
committed
changed taskqc criteria as a dict
1 parent 368b8c6 commit 1fae5b8

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

ibllib/qc/task_metrics.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,27 @@
6161

6262
class TaskQC(base.QC):
6363
"""A class for computing task QC metrics"""
64-
criteria = {"PASS": 0.99, "WARNING": 0.90, "FAIL": 0} # Note: WARNING was 0.95 prior to Aug 2022
64+
# criteria = {"PASS": 0.99, "WARNING": 0.90, "FAIL": 0} # Note: WARNING was 0.95 prior to Aug 2022
65+
66+
criteria = dict()
67+
criteria['default'] = {"PASS": 0.99, "WARNING": 0.90, "FAIL": 0} # Note: WARNING was 0.95 prior to Aug 2022
68+
criteria['_task_stimOff_itiIn_delays'] = {"PASS": 0.99, "WARNING": 0}
69+
criteria['_task_positive_feedback_stimOff_delays'] = {"PASS": 0.99, "WARNING": 0}
70+
criteria['_task_negative_feedback_stimOff_delays'] = {"PASS": 0.99, "WARNING": 0}
71+
criteria['_task_wheel_move_during_closed_loop'] = {"PASS": 0.99, "WARNING": 0}
72+
criteria['_task_response_stimFreeze_delays'] = {"PASS": 0.99, "WARNING": 0}
73+
criteria['_task_detected_wheel_moves'] = {"PASS": 0.99, "WARNING": 0}
74+
criteria['_task_trial_length'] = {"PASS": 0.99, "WARNING": 0}
75+
criteria['_task_goCue_delays'] = {"PASS": 0.99, "WARNING": 0}
76+
criteria['_task_errorCue_delays'] = {"PASS": 0.99, "WARNING": 0}
77+
criteria['_task_stimOn_delays'] = {"PASS": 0.99, "WARNING": 0}
78+
criteria['_task_stimOff_delays'] = {"PASS": 0.99, "WARNING": 0}
79+
criteria['_task_stimFreeze_delays'] = {"PASS": 0.99, "WARNING": 0}
80+
criteria['_task_iti_delays'] = {"NOT_SET": 0}
81+
criteria['_task_passed_trial_checks'] = {"NOT_SET": 0}
82+
83+
# fcns_value2status = {k: lambda x: TaskQC._thresholding(x, thresholds=v) for k, v in criteria.items()}
84+
6585
fcns_value2status = {'default': lambda x: TaskQC._thresholding(x),
6686
'_task_stimOff_itiIn_delays': lambda x:
6787
TaskQC._thresholding(x, thresholds={"PASS": 0.99, "WARNING": 0}),
@@ -106,7 +126,7 @@ def _thresholding(qc_value, thresholds=None):
106126
"""
107127
MAX_BOUND, MIN_BOUND = (1, 0)
108128
if not thresholds:
109-
thresholds = TaskQC.criteria.copy()
129+
thresholds = TaskQC.criteria['default'].copy()
110130
if qc_value is None or np.isnan(qc_value):
111131
return int(-1)
112132
elif (qc_value > MAX_BOUND) or (qc_value < MIN_BOUND):
@@ -199,7 +219,7 @@ def compute_session_status_from_dict(results):
199219
indices[i] = v2status_fcns['default'](results[k])
200220

201221
def key_map(x):
202-
return 'NOT_SET' if x < 0 else list(TaskQC.criteria.keys())[x]
222+
return 'NOT_SET' if x < 0 else list(TaskQC.criteria['default'].keys())[x]
203223
# Criteria map is in order of severity so the max index is our overall QC outcome
204224
session_outcome = key_map(max(indices))
205225
outcomes = dict(zip(results.keys(), map(key_map, indices)))

0 commit comments

Comments
 (0)