def test_get_swath_data_noscale_dtype(self): """Test that we can get swath data that converts to a non-float output dtype and don't have any scaling. """ from satpy.readers.viirs_sdr import SDRFileReader file_reader = SDRFileReader("fake_file_type", "test.h5", self.file_keys) for k in ["unknown_data2"]: data, mask = file_reader.get_swath_data(k) self.assertTrue(data.dtype == np.int64) self.assertTrue(mask.dtype == np.bool) np.testing.assert_array_equal(data, DEFAULT_FILE_DATA)
def test_get_swath_data_missing_scale_no_dtype(self): """Test that we can get swath data that can have scaling, but doesn't have any in the file and doesn't require any conversion for dtype. """ from satpy.readers.viirs_sdr import SDRFileReader file_reader = SDRFileReader("fake_file_type", "test.h5", self.file_keys) for k in ["unknown_data3"]: data, mask = file_reader.get_swath_data(k) self.assertTrue(data.dtype == np.float32) self.assertTrue(mask.dtype == np.bool) np.testing.assert_array_equal(data, DEFAULT_FILE_DATA)
def test_get_swath_data_badscale(self): from satpy.readers.viirs_sdr import SDRFileReader file_reader = SDRFileReader("fake_file_type", "test.h5", self.file_keys) for k in ["unknown_data"]: # these shouldn't have any change to the file data # normally there would be, but the scaling factors are bad in this test file so all data is masked data, mask = file_reader.get_swath_data(k) self.assertTrue(data.dtype == np.float32) self.assertTrue(mask.dtype == np.bool) np.testing.assert_array_equal(data, DEFAULT_FILE_DATA) # bad fill values should result in bad science data np.testing.assert_array_equal(mask, True)
def test_get_swath_data_noscale(self): from satpy.readers.viirs_sdr import SDRFileReader file_reader = SDRFileReader("fake_file_type", "test.h5", self.file_keys) for k in ["longitude", "latitude"]: # these shouldn't have any change to their file data # normally unknown_data would, but the scaling factors are bad in this test file data, mask = file_reader.get_swath_data(k) self.assertTrue(data.dtype == np.float32) self.assertTrue(mask.dtype == np.bool) if k == "longitude": np.testing.assert_array_equal(data, DEFAULT_LON_DATA) else: np.testing.assert_array_equal(data, DEFAULT_LAT_DATA)
def test_get_swath_data_scale(self): from satpy.readers.viirs_sdr import SDRFileReader file_reader = SDRFileReader("fake_file_type", "test.h5", self.file_keys) valid_data = DEFAULT_FILE_DATA * DEFAULT_FILE_FACTORS[0] + DEFAULT_FILE_FACTORS[1] for k in ["radiance", "reflectance", "brightness_temperature"]: data, mask = file_reader.get_swath_data(k) self.assertTrue(data.dtype == np.float32) self.assertTrue(mask.dtype == np.bool) if k == "radiance": np.testing.assert_array_equal(data, valid_data * 10000.0) elif k == "reflectance": np.testing.assert_array_equal(data, valid_data * 100.0) else: np.testing.assert_array_equal(data, valid_data)
def test_get_swath_data_to_disk(self): from satpy.readers.viirs_sdr import SDRFileReader from satpy.readers.viirs_sdr import MultiFileReader file_readers = [ SDRFileReader("fake_file_type", "test{0:02d}.h5".format(x), self.file_keys, offset=x) for x in range(5)] file_reader = MultiFileReader("fake_file_type", file_readers, self.file_keys) self.assertRaises(NotImplementedError, file_reader.get_swath_data, "radiance", filename="test.dat")
def test_get_units(self): from satpy.readers.viirs_sdr import SDRFileReader from satpy.readers.viirs_sdr import MultiFileReader file_readers = [ SDRFileReader("fake_file_type", "test{0:02d}.h5".format(x), self.file_keys, offset=x) for x in range(5)] file_reader = MultiFileReader("fake_file_type", file_readers, self.file_keys) # shouldn't need to thoroughly test this because its tested in the single file reader tests self.assertEqual(file_reader.get_units("radiance"), "W m-2 sr-1")
def test_units(self): from satpy.readers.viirs_sdr import SDRFileReader file_reader = SDRFileReader("fake_file_type", "test.h5", self.file_keys) units = file_reader.get_units("reflectance") self.assertEqual(units, "%") units = file_reader.get_units("radiance") self.assertEqual(units, "W m-2 sr-1") units = file_reader.get_units("brightness_temperature") self.assertEqual(units, "K") units = file_reader.get_units("unknown_data") self.assertIs(units, None) units = file_reader.get_units("unknown_data2") self.assertIs(units, "fake") units = file_reader.get_units("longitude") self.assertEqual(units, "degrees") units = file_reader.get_units("latitude") self.assertEqual(units, "degrees")
def test_get_swath_data_inplace(self): """Test that we can get most file keys and write the data inplace in arrays provided. """ from satpy.readers.viirs_sdr import SDRFileReader file_reader = SDRFileReader("fake_file_type", "test.h5", self.file_keys) data_out = np.zeros(DEFAULT_FILE_SHAPE, dtype=np.float32) mask_out = np.zeros(DEFAULT_FILE_SHAPE, dtype=np.bool) for k in ["radiance", "reflectance", "brightness_temperature", "longitude", "latitude", "unknown_data"]: data, mask = file_reader.get_swath_data(k, data_out=data_out, mask_out=mask_out) self.assertTrue(len(np.nonzero(data != 0)[0]) > 0) self.assertTrue(data.dtype == np.float32) self.assertTrue(mask.dtype == np.bool) data_out[:] = 0 mask_out[:] = False data_out = np.zeros(DEFAULT_FILE_SHAPE, dtype=np.int64) for k in ["unknown_data2"]: data, mask = file_reader.get_swath_data(k, data_out=data_out, mask_out=mask_out) self.assertTrue(len(np.nonzero(data != 0)[0]) > 0) self.assertTrue(data.dtype == np.int64) self.assertTrue(mask.dtype == np.bool) data_out[:] = 0 mask_out[:] = False
def test_get_funcs(self): from satpy.readers.viirs_sdr import SDRFileReader file_reader = SDRFileReader("fake_file_type", "test.h5", self.file_keys) gring_lon, gring_lat = file_reader.ring_lonlats begin_orbit = file_reader.begin_orbit_number self.assertIsInstance(begin_orbit, int) self.assertEqual(begin_orbit, 0) end_orbit = file_reader.end_orbit_number self.assertIsInstance(end_orbit, int) self.assertEqual(end_orbit, 1) instrument_name = file_reader.sensor_name self.assertEqual(instrument_name, "VIIRS") platform_name = file_reader.platform_name self.assertEqual(platform_name, "NPP") geo_ref = file_reader.geofilename
def test_get_swath_data(self): from satpy.readers.viirs_sdr import SDRFileReader from satpy.readers.viirs_sdr import MultiFileReader file_readers = [ SDRFileReader("fake_file_type", "test{0:02d}.h5".format(x), self.file_keys, offset=x) for x in range(5)] file_reader = MultiFileReader("fake_file_type", file_readers, self.file_keys) data = file_reader.get_swath_data("brightness_temperature") # make sure its a masked array self.assertTrue(hasattr(data, "mask")) self.assertTrue(hasattr(data, "data")) valid_shape = (DEFAULT_FILE_SHAPE[0]*5, DEFAULT_FILE_SHAPE[1]) self.assertEqual(data.shape, valid_shape) valid_mask = np.zeros(valid_shape, dtype=np.bool) valid_data = np.concatenate(tuple(DEFAULT_FILE_DATA.astype(np.float32) for x in range(5))) valid_data = np.ma.masked_array(valid_data, valid_mask) * 2.0 + 1.0 np.testing.assert_array_equal(data, valid_data)
def test_properties(self): from satpy.readers.viirs_sdr import SDRFileReader from satpy.readers.viirs_sdr import MultiFileReader file_readers = [ SDRFileReader("fake_file_type", "test{0:02d}.h5".format(x), self.file_keys, offset=x) for x in range(5)] file_reader = MultiFileReader("fake_file_type", file_readers, self.file_keys) fns = ["test00.h5", "test01.h5", "test02.h5", "test03.h5", "test04.h5"] geo_fns = ["GITCO_npp_d20120225_t{0:02d}07061_e2359590_b01708_c20120226002502222157_noaa_ops.h5".format(x) for x in range(5)] self.assertListEqual(file_reader.filenames, fns) self.assertEqual(file_reader.start_time, datetime(2015, 1, 1, 10, 0, 12, 500000)) self.assertEqual(file_reader.end_time, datetime(2015, 1, 1, 11, 4, 10, 600000)) self.assertEqual(file_reader.begin_orbit_number, 0) self.assertEqual(file_reader.end_orbit_number, 5) self.assertEqual(file_reader.platform_name, "NPP") self.assertEqual(file_reader.sensor_name, "VIIRS") self.assertListEqual(file_reader.geofilenames, geo_fns)
def test_getting_raw_data(self): from satpy.readers.viirs_sdr import SDRFileReader file_reader = SDRFileReader("fake_file_type", "test.h5", self.file_keys) for k in ["radiance", "reflectance", "brightness_temperature", "unknown_data", "unknown_data2"]: data = file_reader[k] self.assertTrue(data.dtype == DEFAULT_FILE_DTYPE) np.testing.assert_array_equal(data, DEFAULT_FILE_DATA) for k in ["longitude"]: data = file_reader[k] self.assertTrue(data.dtype == DEFAULT_FILE_DTYPE) np.testing.assert_array_equal(data, DEFAULT_LON_DATA) for k in ["latitude"]: data = file_reader[k] self.assertTrue(data.dtype == DEFAULT_FILE_DTYPE) np.testing.assert_array_equal(data, DEFAULT_LAT_DATA) for k in ["unknown_data3"]: data = file_reader[k] self.assertTrue(data.dtype == np.float32) np.testing.assert_array_equal(data, DEFAULT_FILE_DATA)
def test_init_basic(self): from satpy.readers.viirs_sdr import SDRFileReader from satpy.readers.viirs_sdr import MultiFileReader file_readers = [SDRFileReader("fake_file_type", "test.h5", self.file_keys, offset=x) for x in range(5)] file_reader = MultiFileReader("fake_file_type", file_readers, self.file_keys)
def test_data_shape(self): from satpy.readers.viirs_sdr import SDRFileReader file_reader = SDRFileReader("fake_file_type", "test.h5", self.file_keys) self.assertEquals(file_reader["reflectance/shape"], (10, 300))
def test_init_basic(self): from satpy.readers.viirs_sdr import SDRFileReader file_reader = SDRFileReader("fake_file_type", "test.h5", self.file_keys) self.assertEqual(file_reader.start_time, datetime(2015, 1, 1, 10, 0, 12, 500000)) self.assertEqual(file_reader.end_time, datetime(2015, 1, 1, 11, 0, 10, 600000)) self.assertRaises(ValueError, file_reader._parse_datetime, "19580102", "120000.0Z")