Open
Description
🐛 Bug Report
Following on from #4315, #1528. When handling integer coordinates, collapsed
and aggregated_by
produce inconsistent points.
How To Reproduce
Minimal example:
import iris
import iris.cube
import iris.coords
import numpy as np
N = 6
cube = iris.cube.Cube(range(N), long_name="foo")
dim_coord = iris.coords.DimCoord(range(N), long_name="bar")
aux_coord = iris.coords.AuxCoord(np.arange(N) // 2, long_name="baz")
cube.add_dim_coord(dim_coord, 0)
cube.add_aux_coord(aux_coord, 0)
print(cube.aggregated_by("baz", iris.analysis.MEAN).coord("bar"))
# Emulate aggregated_by procedure with extract and collapsed.
for baz_val in np.unique(aux_coord.points):
constraint = iris.Constraint(baz=baz_val)
sub_cube = cube.extract(constraint)
mean = sub_cube.collapsed("bar", iris.analysis.MEAN)
print(mean.coord("bar"))
"bar" coord after aggregated_by
:
DimCoord(array([0.5, 2.5, 4.5]), bounds=array([[0, 1],
[2, 3],
[4, 5]]), standard_name=None, units=Unit('unknown'), long_name='bar')
"bar" coords after extract
and collapse
:
DimCoord(array([0]), bounds=array([[0, 1]]), standard_name=None, units=Unit('unknown'), long_name='bar')
DimCoord(array([2]), bounds=array([[2, 3]]), standard_name=None, units=Unit('unknown'), long_name='bar')
DimCoord(array([4]), bounds=array([[4, 5]]), standard_name=None, units=Unit('unknown'), long_name='bar')
Expected behaviour
The output points should either be 0, 2, 4 in both cases, or 0.5, 2.5, 4.5 in both cases. Note that @pp-mo at #1528 expected integer output points.
Environment
- Iris Version: 3.2.dev0
Metadata
Metadata
Assignees
Type
Projects
Status
No status