Source code for ppcpy.qc.qualityMask
import numpy as np
[docs]
def qualityMask(data_cube):
"""
# 0 in quality_mask means good data
# 1 in quality_mask means low-SNR data
# 2 in quality_mask means depolarization calibration periods
# 3 in quality_mask means shutter on
# 4 in quality_mask means fog
# 5 in quality_mask means saturated (NEW)
The lowSNRMask is actually calculated twice, once in pollyPreprocess.m
and then again when the quality mask is evaluated in picassoProcV3.m.
Also the original processing chain has a quality_mask_vdr, which should be a composite
of cross and total, maybe this can be handled more logically here.
"""
print(data_cube.retrievals_highres['channel'])
quality_mask = np.zeros_like(data_cube.retrievals_highres['sigBGCor']).astype(int)
print('shape of quality mask', quality_mask.shape)
for ich, ch in enumerate(data_cube.retrievals_highres['channel']):
print(ich, ch)
quality_mask[:, :, ich][data_cube.retrievals_highres['lowSNRMask'][:,:,ich]] = 1
quality_mask[data_cube.retrievals_highres['depCalMask'],:,ich] = 2
quality_mask[data_cube.retrievals_highres['shutterOnMask'],:,ich] = 3
quality_mask[data_cube.retrievals_highres['fogMask'],:,ich] = 4
quality_mask[:,:,ich][data_cube.flagSaturation[:,:,ich]] = 5
return quality_mask