-
Coda Phillips authoredCoda Phillips authored
radiometric_checks.py 2.46 KiB
from aeri_qc.util import _compute_robust_zscore
import pandas as pd
import numpy as np
import scipy.stats
from aeri_qc.all_checks import checklist
hide_data_if_invalid = [
'hbb_temp_outlier_check',
'abb_temp_outlier_check',
'hatch_check',
'safing_check',
'detector_check',
'hbb_thermistor_check',
'abb_thermistor_check',
'hbb_stable_check',
'hbb_covariance_check'
]
@checklist.add_check(depends=['skyViewImaginaryRadiance2510_2515'], affects_calibration=False, description='sky view imaginary radiance is out of range', hides=hide_data_if_invalid)
def imaginary_radiance_check(frame, parameters):
threshold = parameters.get('imaginary_radiance_threshold', 1)
return abs(frame.skyViewImaginaryRadiance2510_2515) > threshold
@checklist.add_check(depends=['HBBviewStdDevRadiance985_990'], affects_calibration=True, description='HBB radiance has too much variance', hides=hide_data_if_invalid)
def hbb_std_dev_check(frame, parameters):
hbb_std_dist = scipy.stats.chi2.fit(frame.HBBviewStdDevRadiance985_990)
_, hbb_std_dist_hi = scipy.stats.chi2.interval(.995, *hbb_std_dist)
return frame.HBBviewStdDevRadiance985_990 > hbb_std_dist_hi
@checklist.add_check(depends=['LW_HBB_NEN'], affects_calibration=True, description='Longwave HBB radiance NEN too high', hides=hide_data_if_invalid)
def hbb_lw_nen_check(frame, parameters):
lw_hbb_nen_dist = scipy.stats.chi2.fit(frame.LW_HBB_NEN)
_, lw_hbb_nen_hi = scipy.stats.chi2.interval(.995, *lw_hbb_nen_dist)
return frame.LW_HBB_NEN > lw_hbb_nen_hi
@checklist.add_check(depends=['SW_HBB_NEN'], affects_calibration=True, description='Shortwave HBB radiance NEN too high', hides=hide_data_if_invalid)
def hbb_sw_nen_check(frame, parameters):
sw_hbb_nen_dist = scipy.stats.chi2.fit(frame.SW_HBB_NEN)
_, sw_hbb_nen_hi = scipy.stats.chi2.interval(.995, *sw_hbb_nen_dist)
return frame.SW_HBB_NEN > sw_hbb_nen_hi
@checklist.add_check(depends=['LWresponsivity'], affects_calibration=False, description='Longwave responsivity outlier', hides=hide_data_if_invalid)
def lw_responsivity_check(frame, parameters):
lw_zscore = _compute_robust_zscore(frame['LWresponsivity'], 50)
return abs(lw_zscore) > 6
@checklist.add_check(depends=['SWresponsivity'], affects_calibration=False, description='Shortwave responsivity outlier', hides=hide_data_if_invalid)
def sw_responsivity_check(frame, parameters):
sw_zscore = _compute_robust_zscore(frame['SWresponsivity'], 50)
return abs(sw_zscore) > 6