from util import BaseCheckList, annotate_all, _compute_robust_zscore, invalidate_records, update_variable_qc import pandas as pd import numpy as np def imaginary_radiance_check(frame, parameters): if 'skyViewImaginaryRadiance2510_2515' not in frame.columns: return frame threshold = parameters.get('imaginary_radiance_threshold', 1) imaginary_radiance_problem = abs(frame.skyViewImaginaryRadiance2510_2515) > threshold frame['imaginary_radiance_check'] = imaginary_radiance_problem * 1 annotate_all(frame, imaginary_radiance_problem, 'sky view imaginary radiance out of range') frame = invalidate_records(frame, 'imaginary_radiance_check') return frame def hbb_radiance_check(frame, parameters): # Std dev, nen, lw, sw return frame def responsivity_check(frame, parameters): # lw, sw if not np.in1d(['LWresponsivity','SWresponsivity'], frame.columns).all(): return frame lw_zscore = _compute_robust_zscore(frame['LWresponsivity'], 50) sw_zscore = _compute_robust_zscore(frame['SWresponsivity'], 50) lw_problem = abs(lw_zscore) > 6 sw_problem = abs(sw_zscore) > 6 variable_qcs = pd.DataFrame({ 'qc_LWresponsivity':lw_problem * 1, 'qc_SWresponsivity':sw_problem * 1 }) frame['responsivity_check'] = (lw_problem | sw_problem) * 1 frame = update_variable_qc(frame, variable_qcs) frame = invalidate_records(frame, 'responsivity_check') return frame class CheckList(BaseCheckList): checks = [ imaginary_radiance_check, hbb_radiance_check, responsivity_check ]