Example #1
0
 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)
Example #2
0
 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)
Example #3
0
 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)
Example #4
0
 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)
Example #5
0
 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)
Example #6
0
 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")
Example #7
0
 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")
Example #8
0
 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")
Example #9
0
    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
Example #10
0
 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
Example #11
0
 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)
Example #12
0
 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)
Example #13
0
    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)
Example #14
0
 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)
Example #15
0
 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))
Example #16
0
 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")