Skip to content
Snippets Groups Projects
radiometric_checks.py 2.03 KiB
Newer Older
Coda Phillips's avatar
Coda Phillips committed
from util import _compute_robust_zscore
import pandas as pd
import numpy as np
import scipy.stats
Coda Phillips's avatar
Coda Phillips committed
from all_checks import checklist
Coda Phillips's avatar
Coda Phillips committed
@checklist.add_check(depends=['skyViewImaginaryRadiance2510_2515'], affects_calibration=False, description='sky view imaginary radiance is out of range')
def imaginary_radiance_check(frame, parameters):
    threshold = parameters.get('imaginary_radiance_threshold', 1)
Coda Phillips's avatar
Coda Phillips committed
    return abs(frame.skyViewImaginaryRadiance2510_2515) > threshold
Coda Phillips's avatar
Coda Phillips committed
@checklist.add_check(depends=['HBBviewStdDevRadiance985_990'], affects_calibration=True, description='HBB radiance has too much variance')
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)
Coda Phillips's avatar
Coda Phillips committed
    return frame.HBBviewStdDevRadiance985_990 > hbb_std_dist_hi
Coda Phillips's avatar
Coda Phillips committed
@checklist.add_check(depends=['LW_HBB_NEN'], affects_calibration=True, description='Longwave HBB radiance NEN too high')
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)
Coda Phillips's avatar
Coda Phillips committed
    return frame.LW_HBB_NEN > lw_hbb_nen_hi
Coda Phillips's avatar
Coda Phillips committed
@checklist.add_check(depends=['SW_HBB_NEN'], affects_calibration=True, description='Shortwave HBB radiance NEN too high')
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)
Coda Phillips's avatar
Coda Phillips committed
    return frame.SW_HBB_NEN > sw_hbb_nen_hi
Coda Phillips's avatar
Coda Phillips committed
@checklist.add_check(depends=['LWresponsivity'], affects_calibration=False, description='Longwave responsivity outlier')
def lw_responsivity_check(frame, parameters):
    lw_zscore = _compute_robust_zscore(frame['LWresponsivity'], 50)
Coda Phillips's avatar
Coda Phillips committed
    return abs(lw_zscore) > 6

@checklist.add_check(depends=['SWresponsivity'], affects_calibration=False, description='Shortwave responsivity outlier')
def sw_responsivity_check(frame, parameters):
    sw_zscore = _compute_robust_zscore(frame['SWresponsivity'], 50)
Coda Phillips's avatar
Coda Phillips committed
    return abs(sw_zscore) > 6