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
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))