def process()

in granule_ingester/granule_ingester/processors/VerifyProcessor.py [0:0]


    def process(self, tile: NexusTile, *args, **kwargs):
        the_tile_type: str = tile.tile.WhichOneof("tile_type")
        the_tile_data = getattr(tile.tile, the_tile_type)

        var_data = from_shaped_array(the_tile_data.variable_data)

        is_multi_var = 'multi' in the_tile_type.lower()

        n_valid_dims = 3 if is_multi_var else 2

        if len(var_data.shape) == n_valid_dims:
            return tile

        logger.debug(f'Incorrect tile data array shape created. Trying to squeeze out single length dimensions')

        diff = n_valid_dims - len(var_data.shape)

        dims = [(i, l) for i, l in enumerate(var_data.shape)]

        axes = [i for i, l in dims[slice(0, -3 if is_multi_var else -2)] if l == 1]

        new_var_data = var_data.squeeze(axis=tuple(axes))

        the_tile_data.variable_data.CopyFrom(to_shaped_array(new_var_data))

        if len(new_var_data.shape) != n_valid_dims:
            logger.warning(f'Squeezed tile is still the wrong number of dimensions. Shape = {new_var_data.shape} when '
                           f'we want a {n_valid_dims}-dimension tile. Proceeding, but the ingested data may not be '
                           f'usable')
        else:
            logger.debug('Tile shape now looks correct')

        return tile