Skip to content

Commit 085685e

Browse files
authored
Merge e354202 into 788b6f9
2 parents 788b6f9 + e354202 commit 085685e

File tree

3 files changed

+26
-2
lines changed

3 files changed

+26
-2
lines changed

docs/src/whatsnew/latest.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ This document explains the changes made to Iris for this release
8080
#. `@bouweandela`_ made :meth:`iris.cube.Cube.rolling_window` work with lazy
8181
data. (:pull:`5795`)
8282

83+
#. `@bouweandela`_ updated :meth:`iris.cube.CubeList.concatenate` so it keeps
84+
ancillary variables and cell measures lazy. (:pull:`6010`)
85+
8386
🔥 Deprecations
8487
===============
8588

lib/iris/_concatenate.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1145,7 +1145,7 @@ def _build_cell_measures(self):
11451145
# Concatenate the data together.
11461146
dim = dims.index(self.axis)
11471147
data = [
1148-
skton.signature.cell_measures_and_dims[i].coord.data
1148+
skton.signature.cell_measures_and_dims[i].coord.core_data()
11491149
for skton in skeletons
11501150
]
11511151
data = concatenate_arrays(tuple(data), axis=dim)
@@ -1185,7 +1185,7 @@ def _build_ancillary_variables(self):
11851185
# Concatenate the data together.
11861186
dim = dims.index(self.axis)
11871187
data = [
1188-
skton.signature.ancillary_variables_and_dims[i].coord.data
1188+
skton.signature.ancillary_variables_and_dims[i].coord.core_data()
11891189
for skton in skeletons
11901190
]
11911191
data = concatenate_arrays(tuple(data), axis=dim)

lib/iris/tests/integration/concatenate/test_concatenate.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import iris.tests as tests # isort:skip
1313

1414
import cf_units
15+
import dask.array as da
1516
import numpy as np
1617

1718
from iris._concatenate import _DerivedCoordAndDims, concatenate
@@ -157,6 +158,16 @@ def test_ignore_diff_cell_measure(self):
157158
self.assertEqual(len(result), 1)
158159
self.assertEqual(result[0].shape, (4, 2))
159160

161+
def test_lazy_cell_measure(self):
162+
cube_a = self.create_cube()
163+
cube_a.cell_measure("volume").data = da.array([0, 15])
164+
cube_b = cube_a.copy()
165+
cube_b.coord("time").points = [12, 18]
166+
167+
result = concatenate([cube_a, cube_b])
168+
assert len(result) == 1
169+
assert result[0].cell_measure("volume").has_lazy_data()
170+
160171

161172
class Test_cubes_with_ancillary_variables(tests.IrisTest):
162173
def create_cube(self):
@@ -194,6 +205,16 @@ def test_ignore_diff_ancillary_variables(self):
194205
self.assertEqual(len(result), 1)
195206
self.assertEqual(result[0].shape, (4, 2))
196207

208+
def test_lazy_ancillary_variables(self):
209+
cube_a = self.create_cube()
210+
cube_a.ancillary_variable("quality").data = da.array([0, 15])
211+
cube_b = cube_a.copy()
212+
cube_b.coord("time").points = [12, 18]
213+
214+
result = concatenate([cube_a, cube_b])
215+
assert len(result) == 1
216+
assert result[0].ancillary_variable("quality").has_lazy_data()
217+
197218

198219
class Test_cubes_with_derived_coord(tests.IrisTest):
199220
def create_cube(self):

0 commit comments

Comments
 (0)