diff --git a/lib/iris/cube.py b/lib/iris/cube.py index c04518f886..b77850afb8 100644 --- a/lib/iris/cube.py +++ b/lib/iris/cube.py @@ -836,7 +836,13 @@ def add_dim_coord(self, dim_coord, data_dim): def _add_unique_dim_coord(self, dim_coord, data_dim): if isinstance(dim_coord, iris.coords.AuxCoord): - raise ValueError('The dim_coord may not be an AuxCoord instance.') + try: + dim_coord = iris.coords.DimCoord.from_coord(dim_coord) + warnings.warn('converting AuxCoord to DimCoord', + stacklevel=2) + except ValueError as e: + raise ValueError('Could not convert coord to DimCoord. ' + + str(e)) # Convert data_dim to a single integer if isinstance(data_dim, collections.Container): diff --git a/lib/iris/tests/test_cube.py b/lib/iris/tests/test_cube.py index f8f0549e9b..6de21a5631 100644 --- a/lib/iris/tests/test_cube.py +++ b/lib/iris/tests/test_cube.py @@ -1,4 +1,4 @@ -# (C) British Crown Copyright 2010 - 2013, Met Office +# (C) British Crown Copyright 2010 - 2014, Met Office # # This file is part of Iris. # @@ -81,11 +81,17 @@ def test_no_dim(self): self.cube.add_dim_coord, iris.coords.DimCoord(np.arange(2), "latitude")) - def test_adding_aux_coord(self): - coord = iris.coords.AuxCoord(np.arange(2), "latitude") + def test_adding_nonmonotonic_aux_coord(self): + coord = iris.coords.AuxCoord([0, 1, 1, 2], "latitude") with self.assertRaises(ValueError): self.cube.add_dim_coord(coord, 0) + def test_adding_aux_coord(self): + coord = iris.coords.AuxCoord(np.arange(2), "latitude") + self.cube.add_dim_coord(coord, 0) + self.assertIsInstance(self.cube.coord("latitude"), + iris.coords.DimCoord) + class TestEquality(tests.IrisTest): def test_not_implmemented(self):