Exemple #1
0
    def setUp(self, *mocks):
        """Create fake data for testing."""
        self.def_cali = [-0.0037, 15.20]
        self.upd_cali = [-0.0074, 30.40]
        self.bad_cali = [0.0, 0.0]
        fh = AHIHSDFileHandler(filetype_info={'file_type': 'hsd_b01'})
        fh.calib_mode = 'NOMINAL'
        fh.user_calibration = None
        fh.is_zipped = False
        fh._header = {
            'block5': {
                'band_number': [5],
                'gain_count2rad_conversion': [self.def_cali[0]],
                'offset_count2rad_conversion': [self.def_cali[1]],
                'central_wave_length': [10.4073],
            },
            'calibration': {
                'coeff_rad2albedo_conversion': [0.0019255],
                'speed_of_light': [299792458.0],
                'planck_constant': [6.62606957e-34],
                'boltzmann_constant': [1.3806488e-23],
                'c0_rad2tb_conversion': [-0.116127314574],
                'c1_rad2tb_conversion': [1.00099153832],
                'c2_rad2tb_conversion': [-1.76961091571e-06],
                'cali_gain_count2rad_conversion': [self.upd_cali[0]],
                'cali_offset_count2rad_conversion': [self.upd_cali[1]]
            },
        }

        self.counts = da.array(np.array([[0., 1000.], [2000., 5000.]]))
        self.fh = fh
Exemple #2
0
    def test_calibrate(self, *mocks):
        """Test calibration."""
        def_cali = [-0.0037, 15.20]
        upd_cali = [-0.0074, 30.40]
        bad_cali = [0.0, 0.0]
        fh = AHIHSDFileHandler()
        fh.calib_mode = 'NOMINAL'
        fh.is_zipped = False
        fh._header = {
            'block5': {
                'band_number': [5],
                'gain_count2rad_conversion': [def_cali[0]],
                'offset_count2rad_conversion': [def_cali[1]],
                'central_wave_length': [10.4073],
            },
            'calibration': {
                'coeff_rad2albedo_conversion': [0.0019255],
                'speed_of_light': [299792458.0],
                'planck_constant': [6.62606957e-34],
                'boltzmann_constant': [1.3806488e-23],
                'c0_rad2tb_conversion': [-0.116127314574],
                'c1_rad2tb_conversion': [1.00099153832],
                'c2_rad2tb_conversion': [-1.76961091571e-06],
                'cali_gain_count2rad_conversion': [upd_cali[0]],
                'cali_offset_count2rad_conversion': [upd_cali[1]]
            },
        }

        # Counts
        self.assertEqual(fh.calibrate(data=123, calibration='counts'), 123)

        # Radiance
        counts = da.array(np.array([[0., 1000.], [2000., 5000.]]))
        rad_exp = np.array([[15.2, 11.5], [7.8, 0]])
        rad = fh.calibrate(data=counts, calibration='radiance')
        self.assertTrue(np.allclose(rad, rad_exp))

        # Brightness Temperature
        bt_exp = np.array([[330.978979, 310.524688], [285.845017, np.nan]])
        bt = fh.calibrate(data=counts, calibration='brightness_temperature')
        np.testing.assert_allclose(bt, bt_exp)

        # Reflectance
        refl_exp = np.array([[2.92676, 2.214325], [1.50189, 0.]])
        refl = fh.calibrate(data=counts, calibration='reflectance')
        self.assertTrue(np.allclose(refl, refl_exp))

        # Updated calibration
        # Standard operation
        fh.calib_mode = 'UPDATE'
        rad_exp = np.array([[30.4, 23.0], [15.6, 0.]])
        rad = fh.calibrate(data=counts, calibration='radiance')
        self.assertTrue(np.allclose(rad, rad_exp))

        # Case for no updated calibration available (older data)
        fh._header = {
            'block5': {
                'band_number': [5],
                'gain_count2rad_conversion': [def_cali[0]],
                'offset_count2rad_conversion': [def_cali[1]],
                'central_wave_length': [10.4073],
            },
            'calibration': {
                'coeff_rad2albedo_conversion': [0.0019255],
                'speed_of_light': [299792458.0],
                'planck_constant': [6.62606957e-34],
                'boltzmann_constant': [1.3806488e-23],
                'c0_rad2tb_conversion': [-0.116127314574],
                'c1_rad2tb_conversion': [1.00099153832],
                'c2_rad2tb_conversion': [-1.76961091571e-06],
                'cali_gain_count2rad_conversion': [bad_cali[0]],
                'cali_offset_count2rad_conversion': [bad_cali[1]]
            },
        }
        rad = fh.calibrate(data=counts, calibration='radiance')
        rad_exp = np.array([[15.2, 11.5], [7.8, 0]])
        self.assertTrue(np.allclose(rad, rad_exp))