示例#1
0
 def test_simple(self):
     # Check the simple case of non-masked data with no scaling.
     cube = iris.cube.Cube(np.arange(5))
     grib_message = mock.sentinel.GRIB_MESSAGE
     with mock.patch(GRIB_API) as grib_api:
         data_section(cube, grib_message)
     # Check the use of a mask has been turned off.
     self.assertBitmapOff(grib_api)
     # Check the correct data values have been set.
     self.assertValues(grib_api, np.arange(5))
示例#2
0
 def test_simple(self):
     # Check the simple case of non-masked data with no scaling.
     cube = iris.cube.Cube(np.arange(5))
     grib_message = mock.sentinel.GRIB_MESSAGE
     with mock.patch(GRIB_API) as grib_api:
         data_section(cube, grib_message)
     # Check the use of a mask has been turned off.
     self.assertBitmapOff(grib_api)
     # Check the correct data values have been set.
     self.assertValues(grib_api, np.arange(5))
示例#3
0
 def test_masked_with_finite_fill_value(self):
     cube = iris.cube.Cube(np.ma.MaskedArray([1.0, 2.0, 3.0, 1.0, 2.0, 3.0],
                                             mask=[0, 0, 0, 1, 1, 1],
                                             fill_value=2000))
     grib_message = mock.sentinel.GRIB_MESSAGE
     with mock.patch(GRIB_API) as grib_api:
         data_section(cube, grib_message)
     # Check the use of a mask has been turned on.
     FILL = 2000
     self.assertBitmapOn(grib_api, FILL)
     # Check the correct data values have been set.
     self.assertValues(grib_api, [1, 2, 3, FILL, FILL, FILL])
示例#4
0
 def test_scaled(self):
     # If the Cube's units don't match the units required by GRIB
     # ensure the data values are scaled correctly.
     cube = iris.cube.Cube(np.arange(5),
                           standard_name='geopotential_height', units='km')
     grib_message = mock.sentinel.GRIB_MESSAGE
     with mock.patch(GRIB_API) as grib_api:
         data_section(cube, grib_message)
     # Check the use of a mask has been turned off.
     self.assertBitmapOff(grib_api)
     # Check the correct data values have been set.
     self.assertValues(grib_api, np.arange(5) * 1000)
示例#5
0
 def test_masked_with_nan_fill_value(self):
     cube = iris.cube.Cube(np.ma.MaskedArray([1.0, 2.0, 3.0, 1.0, 2.0, 3.0],
                                             mask=[0, 0, 0, 1, 1, 1],
                                             fill_value=np.nan))
     grib_message = mock.sentinel.GRIB_MESSAGE
     with mock.patch(GRIB_API) as grib_api:
         data_section(cube, grib_message)
     # Check the use of a mask has been turned on and a suitable fill
     # value has been chosen.
     FILL = self.assertBitmapRange(grib_api, 1, 3)
     # Check the correct data values have been set.
     self.assertValues(grib_api, [1, 2, 3, FILL, FILL, FILL])
示例#6
0
 def test_masked_with_finite_fill_value(self):
     cube = iris.cube.Cube(np.ma.MaskedArray([1.0, 2.0, 3.0, 1.0, 2.0, 3.0],
                                             mask=[0, 0, 0, 1, 1, 1]),
                           fill_value=2000)
     grib_message = mock.sentinel.GRIB_MESSAGE
     with mock.patch(GRIB_API) as grib_api:
         data_section(cube, grib_message)
     # Check the use of a mask has been turned on.
     FILL = 2000
     self.assertBitmapOn(grib_api, FILL)
     # Check the correct data values have been set.
     self.assertValues(grib_api, [1, 2, 3, FILL, FILL, FILL])
示例#7
0
 def test_masked_with_nan_fill_value(self):
     cube = iris.cube.Cube(np.ma.MaskedArray([1.0, 2.0, 3.0, 1.0, 2.0, 3.0],
                                             mask=[0, 0, 0, 1, 1, 1]),
                           fill_value=np.nan)
     grib_message = mock.sentinel.GRIB_MESSAGE
     with mock.patch(GRIB_API) as grib_api:
         data_section(cube, grib_message)
     # Check the use of a mask has been turned on and a suitable fill
     # value has been chosen.
     FILL = self.assertBitmapRange(grib_api, 1, 3)
     # Check the correct data values have been set.
     self.assertValues(grib_api, [1, 2, 3, FILL, FILL, FILL])
示例#8
0
 def test_scaled(self):
     # If the Cube's units don't match the units required by GRIB
     # ensure the data values are scaled correctly.
     cube = iris.cube.Cube(np.arange(5),
                           standard_name='geopotential_height',
                           units='km')
     grib_message = mock.sentinel.GRIB_MESSAGE
     with mock.patch(GRIB_API) as grib_api:
         data_section(cube, grib_message)
     # Check the use of a mask has been turned off.
     self.assertBitmapOff(grib_api)
     # Check the correct data values have been set.
     self.assertValues(grib_api, np.arange(5) * 1000)
示例#9
0
 def test_scaled_with_finite_fill_value(self):
     # When re-scaling masked data with a finite fill value, ensure
     # the fill value and any filled values are also re-scaled.
     cube = iris.cube.Cube(np.ma.MaskedArray([1.0, 2.0, 3.0, 1.0, 2.0, 3.0],
                                             mask=[0, 0, 0, 1, 1, 1],
                                             fill_value=2000),
                           standard_name='geopotential_height', units='km')
     grib_message = mock.sentinel.GRIB_MESSAGE
     with mock.patch(GRIB_API) as grib_api:
         data_section(cube, grib_message)
     # Check the use of a mask has been turned on.
     FILL = 2000 * 1000
     self.assertBitmapOn(grib_api, FILL)
     # Check the correct data values have been set.
     self.assertValues(grib_api, [1000, 2000, 3000, FILL, FILL, FILL])
示例#10
0
 def test_scaled_with_nan_fill_value(self):
     # When re-scaling masked data with a NaN fill value, ensure
     # a fill value is chosen which allows for the scaling, and any
     # filled values match the chosen fill value.
     cube = iris.cube.Cube(np.ma.MaskedArray([-1.0, 2.0, -1.0, 2.0],
                                             mask=[0, 0, 1, 1],
                                             fill_value=np.nan),
                           standard_name='geopotential_height', units='km')
     grib_message = mock.sentinel.GRIB_MESSAGE
     with mock.patch(GRIB_API) as grib_api:
         data_section(cube, grib_message)
     # Check the use of a mask has been turned on and a suitable fill
     # value has been chosen.
     FILL = self.assertBitmapRange(grib_api, -1000, 2000)
     # Check the correct data values have been set.
     self.assertValues(grib_api, [-1000, 2000, FILL, FILL])
示例#11
0
 def test_scaled_with_finite_fill_value(self):
     # When re-scaling masked data with a finite fill value, ensure
     # the fill value and any filled values are also re-scaled.
     cube = iris.cube.Cube(np.ma.MaskedArray([1.0, 2.0, 3.0, 1.0, 2.0, 3.0],
                                             mask=[0, 0, 0, 1, 1, 1]),
                           standard_name='geopotential_height',
                           units='km',
                           fill_value=2000)
     grib_message = mock.sentinel.GRIB_MESSAGE
     with mock.patch(GRIB_API) as grib_api:
         data_section(cube, grib_message)
     # Check the use of a mask has been turned on.
     FILL = 2000 * 1000
     self.assertBitmapOn(grib_api, FILL)
     # Check the correct data values have been set.
     self.assertValues(grib_api, [1000, 2000, 3000, FILL, FILL, FILL])
示例#12
0
 def test_scaled_with_nan_fill_value(self):
     # When re-scaling masked data with a NaN fill value, ensure
     # a fill value is chosen which allows for the scaling, and any
     # filled values match the chosen fill value.
     cube = iris.cube.Cube(np.ma.MaskedArray([-1.0, 2.0, -1.0, 2.0],
                                             mask=[0, 0, 1, 1]),
                           standard_name='geopotential_height',
                           units='km',
                           fill_value=np.nan)
     grib_message = mock.sentinel.GRIB_MESSAGE
     with mock.patch(GRIB_API) as grib_api:
         data_section(cube, grib_message)
     # Check the use of a mask has been turned on and a suitable fill
     # value has been chosen.
     FILL = self.assertBitmapRange(grib_api, -1000, 2000)
     # Check the correct data values have been set.
     self.assertValues(grib_api, [-1000, 2000, FILL, FILL])