diff --git a/thermal_checks.py b/thermal_checks.py index d0080faeb868456c9569f9996c8537fefc80234b..ce87a353b6d70e77770ef9de5a37f7967aeaa305 100644 --- a/thermal_checks.py +++ b/thermal_checks.py @@ -1,7 +1,26 @@ from util import BaseCheckList +import sklearn.covariance +import scipy.stats +import numpy as np def thermal_correlation_check(frame, parameters): return frame +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 + frame['hbb_covariance_check'] = (distances > 6) * 1 + return frame + + class CheckList(BaseCheckList): - checks = [ thermal_correlation_check ] + checks = [ thermal_correlation_check , hbb_covariance_check]