UKMO ants library will arbitrarily over-write filenames

Hi all. I’ve been chasing my tail for a few days until I discovered this. I’m posting this so it’s documented within the community.

TLDR; ants will arbitarily override some filenames when saving a UM ancillary file.

Try this code snippet in the following environment:

module use /g/data/vk83/modules
module load ants/3.2.0
import ants
import numpy as np
import iris
from iris.cube import Cube
from iris.coords import DimCoord

latitude = DimCoord(
    np.array([-45.0, -15.0, 15.0, 45.0]),
    standard_name='latitude',
    units='degrees',
    var_name='lat'
)

longitude = DimCoord(
    np.array([0.0, 90.0, 180.0, 270.0]),
    standard_name='longitude',
    units='degrees',
    var_name='lon'
)

data = np.random.rand(4, 4).astype(np.float32)

cube = Cube(
    data,
    standard_name='air_temperature',
    units='K',
    dim_coords_and_dims=[
        (latitude, 0),   # Axis 0 corresponds to latitude
        (longitude, 1)   # Axis 1 corresponds to longitude
    ]
)

cube.attributes = {'STASH':'m01s00i505'}

ants.io.save.ancil(cube, 'cube')
ants.io.save.ancil(cube, 'cube.mask')
ants.io.save.ancil(cube, 'qrparm.mask')

This will create three files.

qrparm.mask_cci
cube
cube.mask

Note that ants appears to automatically rename a ‘qrparm.mask’ file to ‘qrparm.mask_cci’ !!

This appears to be independent of STASH code. e.g.

cube.attributes = {'STASH':'m01s03i227'}
ants.io.save.ancil(cube, 'qrparm.mask')

will also output a qrparm.mask_cci file.

1 Like