Skip to content

Commit

Permalink
[FB] [PI-3474] Add tests for the loading and saving of ancillary vari…
Browse files Browse the repository at this point in the history
…ables (#3799)
  • Loading branch information
stephenworsley authored Aug 21, 2020
1 parent f5a7a83 commit b422cd8
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 0 deletions.
46 changes: 46 additions & 0 deletions lib/iris/tests/results/netcdf/TestNetCDFSave__ancillaries/flag.cdl
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
dimensions:
grid_latitude = 9 ;
grid_longitude = 11 ;
time = 7 ;
variables:
int64 air_potential_temperature(time, grid_latitude, grid_longitude) ;
air_potential_temperature:standard_name = "air_potential_temperature" ;
air_potential_temperature:units = "K" ;
air_potential_temperature:grid_mapping = "rotated_latitude_longitude" ;
air_potential_temperature:coordinates = "air_pressure forecast_period" ;
air_potential_temperature:ancillary_variables = "quality_flag" ;
int rotated_latitude_longitude ;
rotated_latitude_longitude:grid_mapping_name = "rotated_latitude_longitude" ;
rotated_latitude_longitude:longitude_of_prime_meridian = 0. ;
rotated_latitude_longitude:earth_radius = 6371229. ;
rotated_latitude_longitude:grid_north_pole_latitude = 37.5 ;
rotated_latitude_longitude:grid_north_pole_longitude = 177.5 ;
rotated_latitude_longitude:north_pole_grid_longitude = 0. ;
double time(time) ;
time:axis = "T" ;
time:units = "hours since 1970-01-01 00:00:00" ;
time:standard_name = "time" ;
time:calendar = "gregorian" ;
double grid_latitude(grid_latitude) ;
grid_latitude:axis = "Y" ;
grid_latitude:units = "degrees" ;
grid_latitude:standard_name = "grid_latitude" ;
double grid_longitude(grid_longitude) ;
grid_longitude:axis = "X" ;
grid_longitude:units = "degrees" ;
grid_longitude:standard_name = "grid_longitude" ;
double air_pressure ;
air_pressure:units = "Pa" ;
air_pressure:standard_name = "air_pressure" ;
double forecast_period(time) ;
forecast_period:units = "hours" ;
forecast_period:standard_name = "forecast_period" ;
byte quality_flag(time, grid_latitude, grid_longitude) ;
quality_flag:long_name = "quality_flag" ;
quality_flag:flag_meanings = "PASS FAIL MISSING" ;
quality_flag:flag_values = 1b, 2b, 9b ;

// global attributes:
:source = "Iris test case" ;
:Conventions = "CF-1.7" ;
}
28 changes: 28 additions & 0 deletions lib/iris/tests/test_netcdf.py
Original file line number Diff line number Diff line change
Expand Up @@ -460,14 +460,21 @@ def test_default_units(self):
variables:
int64 qqv(ayv, axv) ;
qqv:long_name = "qq" ;
qqv:ancillary_variables = "my_av" ;
qqv:cell_measures = "area: my_areas" ;
int64 ayv(ayv) ;
ayv:long_name = "y" ;
int64 axv(axv) ;
axv:units = "1" ;
axv:long_name = "x" ;
double my_av(axv) ;
my_av:long_name = "refs" ;
double my_areas(ayv, axv) ;
my_areas:long_name = "areas" ;
data:
axv = 11, 12, 13;
ayv = 21, 22;
my_areas = 110., 120., 130., 221., 231., 241.;
}
"""
self.tmpdir = tempfile.mkdtemp()
Expand All @@ -485,6 +492,12 @@ def test_default_units(self):
self.assertEqual(cubes[0].units, as_unit("unknown"))
self.assertEqual(cubes[0].coord("y").units, as_unit("unknown"))
self.assertEqual(cubes[0].coord("x").units, as_unit(1))
self.assertEqual(
cubes[0].ancillary_variable("refs").units, as_unit("unknown")
)
self.assertEqual(
cubes[0].cell_measure("areas").units, as_unit("unknown")
)

def test_units(self):
# Test exercising graceful cube and coordinate units loading.
Expand Down Expand Up @@ -1263,6 +1276,21 @@ def test_aliases(self):
iris.save([testcube_1, testcube_2], filename)
self.assertCDL(filename)

def test_flag(self):
testcube = stock.realistic_3d()
flag = iris.coords.AncillaryVariable(
np.ones(testcube.shape, dtype=np.int8),
long_name="quality_flag",
attributes={
"flag_meanings": "PASS FAIL MISSING",
"flag_values": np.array([1, 2, 9], dtype=np.int8),
},
)
testcube.add_ancillary_variable(flag, (0, 1, 2))
with self.temp_filename(suffix=".nc") as filename:
iris.save(testcube, filename)
self.assertCDL(filename)


class TestNetCDF3SaveInteger(tests.IrisTest):
def setUp(self):
Expand Down

0 comments on commit b422cd8

Please sign in to comment.