Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
* Updated :func:`iris.cube.Cube.name` to return a STASH code if the cube has
one and no other valid names are present. This is now consistent with the
summary information.
9 changes: 5 additions & 4 deletions lib/iris/_cube_coord_common.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,13 @@ def name(self, default='unknown'):
"""
Returns a human-readable name.

First it tries :attr:`standard_name`, then 'long_name', then 'var_name'
before falling back to the value of `default` (which itself defaults to
'unknown').
First it tries :attr:`standard_name`, then 'long_name', then
'var_name', then the STASH attribute before falling back to
the value of `default` (which itself defaults to 'unknown').

"""
return self.standard_name or self.long_name or self.var_name or default
return self.standard_name or self.long_name or self.var_name or \
str(self.attributes.get('STASH', '')) or default

def rename(self, name):
"""
Expand Down
3 changes: 0 additions & 3 deletions lib/iris/cube.py
Original file line number Diff line number Diff line change
Expand Up @@ -1788,9 +1788,6 @@ def summary(self, shorten=False, name_padding=35):

nameunit = '{name} / ({units})'.format(name=self.name(),
units=self.units)
# If all unknown and a STASH attribute exists, use it.
if nameunit == 'unknown / (unknown)' and 'STASH' in self.attributes:
nameunit = '{}'.format(self.attributes['STASH'])
cube_header = '{nameunit!s:{length}} ({dimension})'.format(
length=name_padding,
nameunit=nameunit,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" ?>
<cubes xmlns="urn:x-iris:cubeml-0.2">
<cube dtype="float32" units="1" var_name="unknown">
<cube dtype="float32" units="1" var_name="m__s44i101">
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

<attributes>
<attribute name="Conventions" value="CF-1.5"/>
<attribute name="STASH" value="m??s44i101"/>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" ?>
<cubes xmlns="urn:x-iris:cubeml-0.2">
<cube dtype="float32" units="1" var_name="unknown">
<cube dtype="float32" units="1" var_name="m__s44i101">
<attributes>
<attribute name="Conventions" value="CF-1.5"/>
<attribute name="STASH" value="m??s44i101"/>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" ?>
<cubes xmlns="urn:x-iris:cubeml-0.2">
<cube dtype="float32" units="1" var_name="unknown">
<cube dtype="float32" units="1" var_name="m02s00i___">
<attributes>
<attribute name="Conventions" value="CF-1.5"/>
<attribute name="STASH" value="m02s00i???"/>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" ?>
<cubes xmlns="urn:x-iris:cubeml-0.2">
<cube dtype="float32" units="1" var_name="unknown">
<cube dtype="float32" units="1" var_name="m02s00i___">
<attributes>
<attribute name="Conventions" value="CF-1.5"/>
<attribute name="STASH" value="m02s00i???"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ dimensions:
depth = 20 ;
latitude = 73 ;
variables:
float unknown(depth, latitude) ;
unknown:_FillValue = 9.96921e+36f ;
unknown:um_stash_source = "m??s44i101" ;
unknown:ukmo__process_flags = "Mean_over_an_ensemble_of_parallel_runs Time_mean_field" ;
unknown:grid_mapping = "latitude_longitude" ;
unknown:coordinates = "forecast_period forecast_reference_time time" ;
float m__s44i101(depth, latitude) ;
m__s44i101:_FillValue = 9.96921e+36f ;
m__s44i101:um_stash_source = "m??s44i101" ;
m__s44i101:ukmo__process_flags = "Mean_over_an_ensemble_of_parallel_runs Time_mean_field" ;
m__s44i101:grid_mapping = "latitude_longitude" ;
m__s44i101:coordinates = "forecast_period forecast_reference_time time" ;
int latitude_longitude ;
latitude_longitude:grid_mapping_name = "latitude_longitude" ;
latitude_longitude:longitude_of_prime_meridian = 0. ;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ dimensions:
depth = 20 ;
time = 16 ;
variables:
float unknown(depth, time) ;
unknown:_FillValue = 9.96921e+36f ;
unknown:um_stash_source = "m??s44i101" ;
unknown:cell_methods = "time: mean (interval: 24 hour)" ;
float m__s44i101(depth, time) ;
m__s44i101:_FillValue = 9.96921e+36f ;
m__s44i101:um_stash_source = "m??s44i101" ;
m__s44i101:cell_methods = "time: mean (interval: 24 hour)" ;
float depth(depth) ;
depth:axis = "Z" ;
depth:units = "m" ;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ dimensions:
latitude = 144 ;
longitude = 288 ;
variables:
float unknown(latitude, longitude) ;
unknown:_FillValue = 9.96921e+36f ;
unknown:um_stash_source = "m02s00i???" ;
unknown:cell_methods = "time: mean (interval: 2 hour)" ;
unknown:grid_mapping = "latitude_longitude" ;
unknown:coordinates = "forecast_period forecast_reference_time time" ;
float m02s00i___(latitude, longitude) ;
m02s00i___:_FillValue = 9.96921e+36f ;
m02s00i___:um_stash_source = "m02s00i???" ;
m02s00i___:cell_methods = "time: mean (interval: 2 hour)" ;
m02s00i___:grid_mapping = "latitude_longitude" ;
m02s00i___:coordinates = "forecast_period forecast_reference_time time" ;
int latitude_longitude ;
latitude_longitude:grid_mapping_name = "latitude_longitude" ;
latitude_longitude:longitude_of_prime_meridian = 0. ;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ dimensions:
pseudo_level = 4 ;
time = 4 ;
variables:
float unknown(pseudo_level, time, depth, grid_latitude) ;
unknown:_FillValue = 9.96921e+36f ;
unknown:um_stash_source = "m02s00i???" ;
unknown:cell_methods = "time: mean" ;
unknown:grid_mapping = "rotated_latitude_longitude" ;
unknown:coordinates = "forecast_period forecast_reference_time" ;
float m02s00i___(pseudo_level, time, depth, grid_latitude) ;
m02s00i___:_FillValue = 9.96921e+36f ;
m02s00i___:um_stash_source = "m02s00i???" ;
m02s00i___:cell_methods = "time: mean" ;
m02s00i___:grid_mapping = "rotated_latitude_longitude" ;
m02s00i___:coordinates = "forecast_period forecast_reference_time" ;
int rotated_latitude_longitude ;
rotated_latitude_longitude:grid_mapping_name = "rotated_latitude_longitude" ;
rotated_latitude_longitude:longitude_of_prime_meridian = 0. ;
Expand Down
12 changes: 11 additions & 1 deletion lib/iris/tests/test_cdm.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# (C) British Crown Copyright 2010 - 2017, Met Office
# (C) British Crown Copyright 2010 - 2018, Met Office
#
# This file is part of Iris.
#
Expand Down Expand Up @@ -730,6 +730,16 @@ def test_var_name(self):
self.t.var_name = 'bar'
self.assertEqual(self.t.var_name, 'bar')

def test_default_name(self):
self.t.long_name = ''
self.assertEqual(self.t.name(), 'unknown')
self.assertEqual(self.t.name('a_default'), 'a_default')

def test_stash_name(self):
self.t.long_name = ''
self.t.attributes['STASH'] = iris.fileformats.pp.STASH(1, 2, 3)
self.assertEqual(self.t.name(), 'm01s02i003')

def test_name_and_var_name(self):
# Assign only var_name.
self.t.standard_name = None
Expand Down
3 changes: 2 additions & 1 deletion lib/iris/tests/test_quickplot.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# (C) British Crown Copyright 2010 - 2016, Met Office
# (C) British Crown Copyright 2010 - 2018, Met Office
#
# This file is part of Iris.
#
Expand Down Expand Up @@ -149,6 +149,7 @@ def test_contourf(self):
def test_contourf_nameless(self):
cube = self._small()
cube.standard_name = None
cube.attributes['STASH'] = ''
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The file header at lib/iris/tests/test_quickplot.py is out of date. The last commit was in 2018, but the copyright states it was 2016.

😢

I'm having a robust discussion with our legal department to get rid of the year in the copyright. Watch this space... 🙏 📖 👮

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Haha, that would be great - it gets me every time! At some point I'll setup PyCharm to run the style check locally...

qplt.contourf(cube, coords=['grid_longitude', 'model_level_number'])
self.check_graphic()

Expand Down
6 changes: 3 additions & 3 deletions lib/iris/tests/unit/cube/test_CubeList.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# (C) British Crown Copyright 2014 - 2017, Met Office
# (C) British Crown Copyright 2014 - 2018, Met Office
#
# This file is part of Iris.
#
Expand Down Expand Up @@ -296,8 +296,8 @@ def test_summary_name_unit(self):

def test_summary_stash(self):
self.cubes[0].attributes['STASH'] = STASH.from_msi('m01s00i004')
expected = ('0: m01s00i004 '
' (latitude: 3; longitude: 4)')
expected = ('0: m01s00i004 / (unknown) '
' (latitude: 3; longitude: 4)')
self.assertEqual(str(self.cubes), expected)


Expand Down