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