Skip to content
Snippets Groups Projects
thermal_checks.py 1.06 KiB
Newer Older
Coda Phillips's avatar
Coda Phillips committed
import sklearn.covariance
import scipy.stats
import numpy as np
Coda Phillips's avatar
Coda Phillips committed
from aeri_qc.all_checks import checklist
Coda Phillips's avatar
Coda Phillips committed
@checklist.add_check(depends=['HBBbottomTemp','HBBtopTemp','HBBapexTemp'], affects_calibration=True, description='HBB thermistors disagree')
Coda Phillips's avatar
Coda Phillips committed
def hbb_covariance_check(frame, parameters):
    hbbb_mean = parameters.get('HBBbottomTemp_mean', 333.101)
    hbbt_mean = parameters.get('HBBtopTemp_mean', 332.993)
    hbba_mean = parameters.get('HBBapexTemp_mean', 332.818)

    hbb_contamination = parameters.get('hbb_contamination', .01)
    envelope = sklearn.covariance.EllipticEnvelope(store_precision=False, contamination=hbb_contamination)
    envelope.location_ = np.array([hbbb_mean, hbbt_mean, hbba_mean])
    envelope.covariance_ = np.array([[ 0.0179306 ,  0.0164418 ,  0.01817402],
                                     [ 0.0164418 ,  0.01898899,  0.02326341],
                                     [ 0.01817402,  0.02326341,  0.02968953]])
    distances = envelope.mahalanobis(frame[['HBBbottomTemp','HBBtopTemp','HBBapexTemp']]) ** .5
Coda Phillips's avatar
Coda Phillips committed
    return (distances > 6) * 1