def screen_bad_profiles(self): good_ind = [] for ind, flag in enumerate(self.data['quality_flag']): if not (utils.isbit(flag, 1) and utils.isbit(flag, 2)): good_ind.append(ind) for key in self.data.keys(): self.data[key] = self.data[key][good_ind]
def _find_pixels_hard_to_correct(self) -> np.ndarray: melting_layer = utils.isbit(self.classification.category_bits, 3) hard_to_correct = np.cumsum(melting_layer, axis=1) >= 1 hard_to_correct[self.classification.is_rain, :] = True attenuated = self._find_attenuated_part_of_atmosphere() hard_to_correct[attenuated & self.atten.mask] = True return hard_to_correct
def _read_bits(self, bit_type): """ Converts bitfield into dictionary.""" nc = netCDF4.Dataset(self._categorize_file) bitfield = nc.variables[f"{bit_type}_bits"][:] keys = getattr(CategorizeBits, f"{bit_type}_keys") bits = {key: utils.isbit(bitfield, i) for i, key in enumerate(keys)} nc.close() return bits
def _read_bits(self, bit_type: str) -> dict: """Converts bitfield into dictionary.""" nc = netCDF4.Dataset(self._categorize_file) try: bitfield = nc.variables[f"{bit_type}_bits"][:] except KeyError as err: nc.close() raise KeyError from err keys = getattr(CategorizeBits, f"{bit_type}_keys") bits = {key: utils.isbit(bitfield, i) for i, key in enumerate(keys)} nc.close() return bits
def test_isbit(number, nth_bit, result): assert utils.isbit(number, nth_bit) is result
def __init__(self, model: Model, classification: ClassificationResult): self._dheight = utils.mdiff(model.height) self._model = model.data_dense self._liquid_in_pixel = utils.isbit(classification.category_bits, 0) self.classification = classification