def test_get_images(self): provider = SnowWaterEquivalentProvider(CubeConfig(), dir=SOURCE_DIR) provider.prepare() images = provider.compute_variable_images(datetime(2010, 1, 1), datetime(2010, 12, 31)) self.assertIsNotNone(images) self.assertTrue('snow_water_equivalent' in images) image = images['snow_water_equivalent'] self.assertEqual((720, 1440), image.shape) self.assertEqual(0, np.isnan(image).sum())
def test_get_high_res_images(self): provider = MPIBGCProvider( CubeConfig(grid_width=4320, grid_height=2160, spatial_res=1 / 12, end_time=datetime(2001, 12, 31, 23, 0)), dir=SOURCE_DIR + "/NEE", var="NEE") provider.prepare() images = provider.compute_variable_images(datetime(2001, 1, 1), datetime(2001, 1, 9)) self.assertIsNotNone(images) self.assertTrue('net_ecosystem_exchange' in images) image = images['net_ecosystem_exchange'] self.assertEqual((2160, 4320), image.shape)
def test_get_high_res_images(self): provider = GleamProvider( CubeConfig(grid_width=4320, grid_height=2160, spatial_res=1 / 12, end_time=datetime(2001, 12, 31, 23, 0)), dir=SOURCE_DIR, var="S") provider.prepare() images = provider.compute_variable_images(datetime(2001, 1, 1), datetime(2001, 1, 9)) self.assertIsNotNone(images) self.assertTrue('evaporative_stress' in images) image = images['evaporative_stress'] self.assertEqual((2160, 4320), image.shape)
def test_get_images_outside_time_range(self): provider = WaterMaskProvider(CubeConfig(end_time=datetime(2002, 1, 1)), dir=SOURCE_DIR) provider.prepare() images = provider.compute_variable_images(datetime(2016, 7, 27), datetime(2016, 8, 4)) self.assertIsNotNone(images) self.assertTrue('water_mask' in images) image = images['water_mask'] self.assertEqual((720, 1440), image.shape)
def test_get_high_res_images(self): provider = WaterMaskProvider(CubeConfig(grid_width=4320, grid_height=2160, spatial_res=1 / 12, end_time=datetime(2003, 1, 1)), dir=SOURCE_DIR) provider.prepare() images = provider.compute_variable_images(datetime(2002, 7, 27), datetime(2002, 8, 4)) self.assertIsNotNone(images) self.assertTrue('water_mask' in images) image = images['water_mask'] self.assertEqual((2160, 4320), image.shape)
def test_get_images(self): provider = CountryMaskProvider( CubeConfig(end_time=datetime(2003, 1, 1)), dir=SOURCE_DIR) provider.prepare() images = provider.compute_variable_images(datetime(2002, 7, 27), datetime(2002, 8, 4)) self.assertIsNotNone(images) self.assertTrue('country_mask' in images) image = images['country_mask'] self.assertEqual((720, 1440), image.shape)
def test_get_high_res_images(self): provider = SoilMoistureProvider(CubeConfig(grid_width=4320, grid_height=2160, spatial_res=1 / 12), dir=SOURCE_DIR) provider.prepare() images = provider.compute_variable_images(datetime(1996, 1, 1), datetime(1996, 1, 9)) self.assertIsNotNone(images) self.assertTrue('soil_moisture' in images) image = images['soil_moisture'] self.assertEqual((2160, 4320), image.shape)
def test_get_images(self): provider = AirTemperatureProvider( CubeConfig(end_time=datetime(2001, 6, 1, 0, 0)), dir=SOURCE_DIR, resampling_order="space_first") provider.prepare() images = provider.compute_variable_images(datetime(2001, 1, 1), datetime(2001, 1, 9)) self.assertIsNotNone(images) self.assertTrue('air_temperature_2m' in images) image = images['air_temperature_2m'] self.assertEqual((720, 1440), image.shape)
def test_get_high_res_images(self): provider = GlobVapourProvider(CubeConfig(grid_width=4320, grid_height=2160, spatial_res=1 / 12), dir=SOURCE_DIR) provider.prepare() images = provider.compute_variable_images(datetime(2007, 1, 1), datetime(2007, 1, 9)) self.assertIsNotNone(images) self.assertTrue('water_vapour' in images) image = images['water_vapour'] self.assertEqual((2160, 4320), image.shape)
def test_get_images(self): provider = MyCubeSourceProvider( CubeConfig(), [(datetime(2010, 1, 1), datetime(2010, 1, 5)), (datetime(2010, 1, 5), datetime(2010, 1, 9)), (datetime(2010, 1, 9), datetime(2010, 1, 13))]) provider.prepare() temporal_coverage = provider.temporal_coverage self.assertEqual((datetime(2010, 1, 1), datetime(2010, 1, 13)), temporal_coverage) # Requested range is exactly within all source ranges provider.compute_variable_images(datetime(2010, 1, 1), datetime(2010, 1, 13)) self.assertEqual([{0: 1.0, 1: 1.0, 2: 1.0}], provider.trace) # Requested range overlaps all source ranges provider.trace = [] provider.compute_variable_images(datetime(2009, 12, 30), datetime(2010, 1, 14)) self.assertEqual([{0: 1.0, 1: 1.0, 2: 1.0}], provider.trace) # Requested range is equal to first source range provider.trace = [] provider.compute_variable_images(datetime(2010, 1, 1), datetime(2010, 1, 5)) self.assertEqual([{0: 1.0}], provider.trace) # Requested range is within first source range and within last source range provider.trace = [] provider.compute_variable_images(datetime(2010, 1, 2), datetime(2010, 1, 10)) self.assertEqual([{0: 0.375, 1: 1.0, 2: 0.125}], provider.trace) # Requested range is sub-range of first source range provider.trace = [] provider.compute_variable_images(datetime(2010, 1, 1, 12), datetime(2010, 1, 4, 12)) self.assertEqual([{0: 1.0}], provider.trace) # Requested range is below first source range provider.trace = [] provider.compute_variable_images(datetime(2009, 1, 2), datetime(2009, 1, 10)) self.assertEqual([], provider.trace) # Requested range is after last source range provider.trace = [] provider.compute_variable_images(datetime(2012, 1, 2), datetime(2012, 1, 10)) self.assertEqual([], provider.trace)
def test_get_images(self): provider = LandSurfTemperatureProvider(CubeConfig( start_time=datetime(2002, 6, 1, 0, 0), end_time=datetime(2002, 7, 1, 0, 0)), dir=SOURCE_DIR, resampling_order="space_first") provider.prepare() images = provider.compute_variable_images(datetime(2002, 6, 1), datetime(2002, 6, 10)) self.assertIsNotNone(images) self.assertTrue('land_surface_temperature' in images) image = images['land_surface_temperature'] self.assertEqual((720, 1440), image.shape)
def test_get_high_res_images(self): provider = SnowWaterEquivalentProvider(CubeConfig(grid_width=4320, grid_height=2160, spatial_res=1 / 12), dir=SOURCE_DIR) provider.prepare() images = provider.compute_variable_images(datetime(2010, 1, 1), datetime(2010, 12, 31)) self.assertIsNotNone(images) self.assertTrue('snow_water_equivalent' in images) image = images['snow_water_equivalent'] self.assertEqual((2160, 4320), image.shape) self.assertEqual(0, np.isnan(image).sum())
def test_get_images(self): provider = AlbedoProvider(CubeConfig(), dir=SOURCE_DIR) provider.prepare() images = provider.compute_variable_images(datetime(2001, 1, 1), datetime(2001, 1, 9)) self.assertIsNotNone(images) self.assertTrue('white_sky_albedo' in images) image = images['white_sky_albedo'] self.assertEqual((720, 1440), image.shape) self.assertTrue('black_sky_albedo' in images) image = images['black_sky_albedo'] self.assertEqual((720, 1440), image.shape)
def test_get_high_res_images(self): provider = AirTemperatureProvider(CubeConfig(grid_width=4320, grid_height=2160, spatial_res=1 / 12, end_time=datetime( 2001, 6, 1, 0, 0)), dir=SOURCE_DIR) provider.prepare() images = provider.compute_variable_images(datetime(2001, 1, 1), datetime(2001, 1, 9)) self.assertIsNotNone(images) self.assertTrue('air_temperature_2m' in images) image = images['air_temperature_2m'] self.assertEqual((2160, 4320), image.shape)
def test_source_time_ranges(self): provider = MPIBGCProvider(CubeConfig(end_time=datetime(2001, 12, 31, 23, 0)), dir=SOURCE_DIR + "/LE", var="LE") provider.prepare() source_time_ranges = provider.source_time_ranges self.assertEqual(46, len(source_time_ranges)) self.assert_source_time_ranges(source_time_ranges[1], datetime(2001, 1, 9, 0, 0), datetime(2001, 1, 17, 0, 0), self.get_source_dir_list(SOURCE_DIR) + ['LE', 'LE_2001.nc'], 1) self.assert_source_time_ranges(source_time_ranges[45], datetime(2001, 12, 27, 0, 0), datetime(2002, 1, 4, 0, 0), self.get_source_dir_list(SOURCE_DIR) + ['LE', 'LE_2001.nc'], 45)
def test_source_time_ranges(self): provider = GleamProvider(CubeConfig(end_time=datetime(2001, 12, 31, 23, 0)), dir=SOURCE_DIR, var="E") provider.prepare() source_time_ranges = provider.source_time_ranges self.assertEqual(365, len(source_time_ranges)) self.assert_source_time_ranges(source_time_ranges[3], datetime(2001, 1, 4, 0, 0), datetime(2001, 1, 5, 0, 0), self.get_source_dir_list(SOURCE_DIR) + ['2001', 'E_2001_GLEAM_v3a_BETA.nc'], 3) self.assert_source_time_ranges(source_time_ranges[364], datetime(2001, 12, 31, 0, 0), datetime(2002, 1, 1, 0, 0), self.get_source_dir_list(SOURCE_DIR) + ['2001', 'E_2001_GLEAM_v3a_BETA.nc'], 364)
def test_get_high_res_images(self): provider = LandSurfTemperatureProvider(CubeConfig( grid_width=4320, grid_height=2160, spatial_res=1 / 12, start_time=datetime(2002, 6, 1, 0, 0), end_time=datetime(2002, 7, 1, 0, 0)), dir=SOURCE_DIR, resampling_order="space_first") provider.prepare() images = provider.compute_variable_images(datetime(2002, 6, 1), datetime(2002, 6, 10)) self.assertIsNotNone(images) self.assertTrue('land_surface_temperature' in images) image = images['land_surface_temperature'] self.assertEqual((2160, 4320), image.shape)
def setUpClass(cls): _del_cube_dir() cube = Cube.create( CUBE_DIR, CubeConfig(spatial_res=1.0, start_time=datetime(2005, 1, 1), end_time=datetime(2005, 3, 1), grid_width=360, grid_height=180, compression=True)) try: cube.update(TestCubeSourceProvider(cube.config, var='a_var')) cube.update(TestCubeSourceProvider(cube.config, var='b_var')) cube.update(TestCubeSourceProvider(cube.config, var='c_var')) finally: cube.close()
def test_get_images(self): provider = MyStaticCubeSourceProvider(CubeConfig()) provider.prepare() im1 = provider.compute_variable_images(datetime(2010, 1, 1), datetime(2010, 1, 10)) im2 = provider.compute_variable_images(datetime(2010, 1, 10), datetime(2010, 1, 20)) im3 = provider.compute_variable_images(datetime(2010, 1, 20), datetime(2010, 1, 30)) self.assertIsNotNone(im1) self.assertEqual(len(im1), 1) self.assertIn('WaterMask', im1) self.assertEqual(im1['WaterMask'].shape, (720, 1440)) self.assertEqual(im1['WaterMask'].dtype, numpy.int32) self.assertIsNone(im2) self.assertIsNone(im3)
def test_source_time_ranges(self): provider = CEmissionsProvider(CubeConfig(), dir=SOURCE_DIR) provider.prepare() source_time_ranges = provider.source_time_ranges self.assertEqual(120, len(source_time_ranges)) self.assert_source_time_ranges( source_time_ranges[0], datetime(2001, 1, 1, 0, 0), datetime(2001, 2, 1, 0, 0), self.get_source_dir_list(SOURCE_DIR) + ['fire_C_Emissions.nc'], 0) self.assert_source_time_ranges( source_time_ranges[11], datetime(2001, 12, 1, 0, 0), datetime(2002, 1, 1, 0, 0), self.get_source_dir_list(SOURCE_DIR) + ['fire_C_Emissions.nc'], 11) self.assert_source_time_ranges( source_time_ranges[119], datetime(2010, 12, 1, 0, 0), datetime(2011, 1, 1, 0, 0), self.get_source_dir_list(SOURCE_DIR) + ['fire_C_Emissions.nc'], 119)
def test_source_time_ranges(self): provider = AirTemperatureProvider( CubeConfig(end_time=datetime(2001, 12, 31, 23, 0)), dir=SOURCE_DIR) provider.prepare() source_time_ranges = provider.source_time_ranges self.assertEqual(730, len(source_time_ranges)) self.assert_source_time_ranges( source_time_ranges[0], datetime(2001, 1, 1, 0, 0), datetime(2001, 1, 1, 12, 0), self.get_source_dir_list(SOURCE_DIR) + ['t2m_2001_01.nc'], 0) self.assert_source_time_ranges( source_time_ranges[6], datetime(2001, 1, 4, 0, 0), datetime(2001, 1, 4, 12, 0), self.get_source_dir_list(SOURCE_DIR) + ['t2m_2001_01.nc'], 6) self.assert_source_time_ranges( source_time_ranges[729], datetime(2001, 12, 31, 12, 0), datetime(2002, 1, 1, 0, 0), self.get_source_dir_list(SOURCE_DIR) + ['t2m_2001_12.nc'], 61)
def test_source_time_ranges(self): provider = AlbedoProvider(CubeConfig(), dir=SOURCE_DIR) provider.prepare() source_time_ranges = provider.source_time_ranges self.assertEqual(461, len(source_time_ranges)) self.assert_source_time_ranges( source_time_ranges[0], datetime(2001, 1, 1, 0), datetime(2001, 1, 9, 0), self.get_source_dir_list(SOURCE_DIR) + ['GlobAlbedo.merge.albedo.05.2001001.nc'], 0) self.assert_source_time_ranges( source_time_ranges[1], datetime(2001, 1, 9, 0), datetime(2001, 1, 17, 0), self.get_source_dir_list(SOURCE_DIR) + ['GlobAlbedo.merge.albedo.05.2001009.nc'], 0) self.assert_source_time_ranges( source_time_ranges[10], datetime(2001, 3, 22, 0), datetime(2001, 3, 30, 0), self.get_source_dir_list(SOURCE_DIR) + ['GlobAlbedo.merge.albedo.05.2001081.nc'], 0)
def test_source_time_ranges(self): provider = PrecipProvider(CubeConfig(), dir=SOURCE_DIR) provider.prepare() source_time_ranges = provider.source_time_ranges self.assertEqual(13149, len(source_time_ranges)) self.assert_source_time_ranges(source_time_ranges[0], datetime(1979, 1, 1, 0, 0, 0, 33), datetime(1979, 1, 2, 0, 0, 0, 33), self.get_source_dir_list(SOURCE_DIR) + ['Precip.V1.720.360.1979.nc.gz'], 0) self.assert_source_time_ranges(source_time_ranges[6], datetime(1979, 1, 7, 0, 0, 0, 33), datetime(1979, 1, 8, 0, 0, 0, 33), self.get_source_dir_list(SOURCE_DIR) + ['Precip.V1.720.360.1979.nc.gz'], 6) self.assert_source_time_ranges(source_time_ranges[13148], datetime(2014, 12, 31, 0, 0, 0, 33), datetime(2015, 1, 1, 0, 0, 0, 33), self.get_source_dir_list(SOURCE_DIR) + ['Precip.RT.720.360.2014.nc.gz'], 364)
def test_source_time_ranges(self): provider = SoilMoistureProvider(CubeConfig(), dir=SOURCE_DIR) provider.prepare() source_time_ranges = provider.source_time_ranges self.assertEqual(12784, len(source_time_ranges)) self.assert_source_time_ranges( source_time_ranges[0], datetime(1979, 1, 1, 0, 0, 0, 33), datetime(1979, 1, 2, 0, 0, 0, 33), self.get_source_dir_list(SOURCE_DIR) + ['SoilMoisture.ESACCI-L3S.1979.v2_1.nc.gz'], 0) self.assert_source_time_ranges( source_time_ranges[6], datetime(1979, 1, 7, 0, 0, 0, 33), datetime(1979, 1, 8, 0, 0, 0, 33), self.get_source_dir_list(SOURCE_DIR) + ['SoilMoisture.ESACCI-L3S.1979.v2_1.nc.gz'], 6) self.assert_source_time_ranges( source_time_ranges[12783], datetime(2013, 12, 31, 0, 0, 0, 33), datetime(2014, 1, 31, 0, 0, 0, 33), self.get_source_dir_list(SOURCE_DIR) + ['SoilMoisture.ESACCI-L3S.2013.v2_1.nc.gz'], 364)
def test_source_time_ranges(self): provider = GlobVapourProvider(CubeConfig(), dir=SOURCE_DIR) provider.prepare() source_time_ranges = provider.source_time_ranges self.assertEqual(156, len(source_time_ranges)) self.assert_source_time_ranges( source_time_ranges[0], datetime(1996, 1, 1, 0, 0), datetime(1996, 2, 1, 0, 0), self.get_source_dir_list(SOURCE_DIR) + ['1996', 'GV_GOMExxxxxxx_MM_19960101_E_3.nc'], 0) self.assert_source_time_ranges( source_time_ranges[125], datetime(2006, 6, 1, 0, 0), datetime(2006, 7, 1, 0, 0), self.get_source_dir_list(SOURCE_DIR) + [ '2006', 'SCIAxxxxxxx_L3_MM_ENV_20060630000000_E_20120214101955.nc.gz' ], 0) self.assert_source_time_ranges( source_time_ranges[155], datetime(2008, 12, 1, 0, 0), datetime(2009, 1, 1, 0, 0), self.get_source_dir_list(SOURCE_DIR) + ['2008', 'GV_GOME2xxxxxx_MM_20081201_E_3.nc'], 0)
def test_source_time_ranges(self): provider = OzoneProvider(CubeConfig(), dir=SOURCE_DIR) provider.prepare() source_time_ranges = provider.source_time_ranges self.assertEqual(185, len(source_time_ranges)) self.assert_source_time_ranges(source_time_ranges[0], datetime(1996, 3, 10, 0, 0), datetime(1996, 3, 31, 0, 0), self.get_source_dir_list(SOURCE_DIR) + [ 'ESACCI-OZONE-L3S-TC-MERGED-DLR_1M-19960310-fv0100.nc'], None) self.assert_source_time_ranges(source_time_ranges[6], datetime(1996, 9, 1, 0, 0), datetime(1996, 9, 30, 0, 0), self.get_source_dir_list(SOURCE_DIR) + [ 'ESACCI-OZONE-L3S-TC-MERGED-DLR_1M-19960901-fv0100.nc'], None) self.assert_source_time_ranges(source_time_ranges[184], datetime(2011, 6, 1, 0, 0), datetime(2011, 6, 30, 0, 0), self.get_source_dir_list(SOURCE_DIR) + [ 'ESACCI-OZONE-L3S-TC-MERGED-DLR_1M-20110601-fv0100.nc'], None)
def test_source_time_ranges(self): provider = SnowWaterEquivalentProvider(CubeConfig(), dir=SOURCE_DIR) provider.prepare() source_time_ranges = provider.source_time_ranges self.assertEqual(12054, len(source_time_ranges)) self.assert_source_time_ranges( source_time_ranges[0], datetime(1980, 1, 1, 0, 0), datetime(1980, 1, 2, 0, 0), self.get_source_dir_list(SOURCE_DIR) + ['SWE.1440.720.1980.nc'], 0) self.assert_source_time_ranges( source_time_ranges[1000], datetime(1982, 9, 27, 0, 0), datetime(1982, 9, 28, 0, 0), self.get_source_dir_list(SOURCE_DIR) + ['SWE.1440.720.1982.nc'], 269) self.assert_source_time_ranges( source_time_ranges[5000], datetime(1993, 9, 9, 0, 0), datetime(1993, 9, 10, 0, 0), self.get_source_dir_list(SOURCE_DIR) + ['SWE.1440.720.1993.nc'], 251) self.assert_source_time_ranges( source_time_ranges[12053], datetime(2012, 12, 31, 0, 0), datetime(2013, 1, 1, 0, 0), self.get_source_dir_list(SOURCE_DIR) + ['SWE.1440.720.2012.nc'], 365)
def test_temporal_coverage(self): provider = WaterMaskProvider(CubeConfig(end_time=datetime(2003, 1, 1)), dir=SOURCE_DIR) provider.prepare() self.assertEqual((datetime(2001, 1, 1, 0, 0), datetime(2003, 1, 1, 0, 0)), provider.temporal_coverage)
def test_temporal_coverage(self): provider = CEmissionsProvider(CubeConfig(), dir=SOURCE_DIR) provider.prepare() self.assertEqual( (datetime(2001, 1, 1, 0, 0), datetime(2011, 1, 1, 0, 0)), provider.temporal_coverage)
def test_update(self): cube = Cube.create(CUBE_DIR, CubeConfig()) self.assertTrue(os.path.exists(CUBE_DIR)) self.assertTrue(os.path.exists(CUBE_DIR + '/CHANGELOG')) provider = CubeSourceProviderMock(cube.config, start_time=datetime(2001, 1, 1), end_time=datetime(2001, 2, 1)) cube.update(provider) self.assertEqual( [(datetime(2001, 1, 1, 0, 0), datetime(2001, 1, 9, 0, 0)), (datetime(2001, 1, 9, 0, 0), datetime(2001, 1, 17, 0, 0)), (datetime(2001, 1, 17, 0, 0), datetime(2001, 1, 25, 0, 0)), (datetime(2001, 1, 25, 0, 0), datetime(2001, 2, 2, 0, 0))], provider.trace) self.assertTrue(os.path.exists(CUBE_DIR + "/cube.config")) self.assertTrue(os.path.exists(CUBE_DIR + "/data/LAI/2001_LAI.nc")) self.assertTrue(os.path.exists(CUBE_DIR + "/data/FAPAR/2001_FAPAR.nc")) cube.close() with self.assertRaises(IOError): cube.update(provider) cube2 = Cube.open(CUBE_DIR) self.assertEqual(cube.config.spatial_res, cube2.config.spatial_res) self.assertEqual(cube.config.temporal_res, cube2.config.temporal_res) self.assertEqual(cube.config.file_format, cube2.config.file_format) self.assertEqual(cube.config.compression, cube2.config.compression) provider = CubeSourceProviderMock(cube2.config, start_time=datetime(2006, 12, 15), end_time=datetime(2007, 1, 15)) cube2.update(provider) self.assertEqual( [ (datetime(2006, 12, 11, 0, 0), datetime(2006, 12, 19, 0, 0)), # 8 days (datetime(2006, 12, 19, 0, 0), datetime(2006, 12, 27, 0, 0)), # 8 days (datetime(2006, 12, 27, 0, 0), datetime(2007, 1, 1, 0, 0)), # 8 days (datetime(2007, 1, 1, 0, 0), datetime(2007, 1, 9, 0, 0)), # 8 days (datetime(2007, 1, 9, 0, 0), datetime(2007, 1, 17, 0, 0)) ], # 8 days provider.trace) self.assertTrue(os.path.exists(CUBE_DIR + "/data/LAI/2006_LAI.nc")) self.assertTrue(os.path.exists(CUBE_DIR + "/data/LAI/2007_LAI.nc")) self.assertTrue(os.path.exists(CUBE_DIR + "/data/FAPAR/2006_FAPAR.nc")) self.assertTrue(os.path.exists(CUBE_DIR + "/data/FAPAR/2007_FAPAR.nc")) from xarray import Variable try: data = cube2.data self.assertIsNotNone(data) self.assertEqual((2, 11 * 46, 720, 1440), data.shape) self.assertEquals(['FAPAR', 'LAI'], data.variable_names) lai_var = data.variable('LAI') self.assert_cf_conformant_time_info(data, 'LAI') self.assert_cf_conformant_geospatial_info(data, 'LAI') self.assertIsNotNone(lai_var) self.assertIs(lai_var, data['LAI']) self.assertIs(lai_var, data[1]) self.assertIsInstance(lai_var, Variable) self.assertIs(data.variable(1), data[1]) array = lai_var[:, :, :] self.assertEqual(array.shape, (138, 720, 1440)) scalar = lai_var[3, 320, 720] self.assertEqual(scalar.values, np.array(0.14, dtype=np.float32)) fapar_var = data.variable('FAPAR') self.assert_cf_conformant_time_info(data, 'FAPAR') self.assert_cf_conformant_geospatial_info(data, 'FAPAR') self.assertIsNotNone(fapar_var) self.assertIs(fapar_var, data['FAPAR']) self.assertIs(fapar_var, data[0]) self.assertIs(data.variable(0), data[0]) array = fapar_var[:, :, :] self.assertEqual(array.shape, (138, 720, 1440)) scalar = fapar_var[3, 320, 720] self.assertEqual(scalar.values, np.array(0.62, dtype=np.float32)) result = data.get('FAPAR', [datetime(2001, 1, 1), datetime(2001, 2, 1)], [-90, 90], [-180, +180]) self.assertEqual(len(result), 1) self.assertEqual(result[0].shape, (4, 720, 1440)) result = data.get(['FAPAR', 'LAI'], [datetime(2001, 1, 1), datetime(2001, 2, 1)], [50.0, 60.0], [10.0, 30.0]) self.assertEqual(2, len(result)) self.assertEqual(result[0].shape, (4, 40, 80)) self.assertEqual(result[1].shape, (4, 40, 80)) result, = data.get(1, datetime(2001, 1, 20), 0, 0) self.assertEqual(result.shape, ()) self.assertEqual(result.values, np.array(0.13, dtype=np.float32)) result, = data.get(0, datetime(2001, 1, 20), -12.6, 5.9) self.assertEqual(result.shape, ()) self.assertEqual(result, np.array(0.615, dtype=np.float32)) result = data.get((1, 0), datetime(2001, 1, 20), 53.4, 13.1) self.assertEqual(len(result), 2) self.assertEqual(result[0].shape, ()) self.assertEqual(result[1].shape, ()) self.assertEqual(result[0].values, np.array(0.13, dtype=np.float32)) self.assertEqual(result[1].values, np.array(0.615, dtype=np.float32)) finally: cube2.close()