def testTemplateEasy_UTH(self): ds = CDRWriter.createTemplate('UTH', 360, 120) self.assertIsNotNone(ds) Assertions.assert_global_attributes(self, ds.attrs) Assertions.assert_cdr_global_attributes(self, ds.attrs) Assertions.assert_gridded_global_attributes(self, ds.attrs)
def testCreateTemplateEasy_HIRS4(self): ds = FCDRWriter.createTemplateEasy('HIRS4', 211) self.assertIsNotNone(ds) Assertions.assert_global_attributes(self, ds.attrs) self.assertEqual(22, len(ds.data_vars)) # geolocation + flags self._verify_geolocation_variables(ds) self._verify_quality_flags(ds) # sensor specific self.assertIsNotNone(ds.variables["bt"]) self.assertIsNotNone(ds.variables["satellite_zenith_angle"]) self.assertIsNotNone(ds.variables["satellite_azimuth_angle"]) self.assertIsNotNone(ds.variables["solar_zenith_angle"]) self.assertIsNotNone(ds.variables["solar_azimuth_angle"]) self.assertIsNotNone(ds.variables["scanline"]) self.assertIsNotNone(ds.variables["time"]) self.assertIsNotNone(ds.variables["data_quality_bitmask"]) self.assertIsNotNone(ds.variables["quality_scanline_bitmask"]) self.assertIsNotNone(ds.variables["quality_channel_bitmask"]) self.assertIsNotNone(ds.variables["SRF_weights"]) self.assertIsNotNone(ds.variables["SRF_wavelengths"]) self.assertIsNotNone(ds.variables["scanline_map_to_origl1bfile"]) self.assertIsNotNone(ds.variables["scanline_origl1b"]) self._assert_HIRS_easy_uncertainties(ds)
def testCreateTemplateFull_AMSUB(self): ds = FCDRWriter.createTemplateFull('AMSUB', 2562) self.assertIsNotNone(ds) Assertions.assert_global_attributes(self, ds.attrs) self.assertEqual(27, len(ds.data_vars)) # geolocation + flags self._verify_geolocation_variables(ds) self._verify_quality_flags(ds) # sensor specific self._verify_amsub_specific_variables(ds) # full FCDR variables self.assertIsNotNone(ds.variables["u_btemps"]) self.assertIsNotNone(ds.variables["u_syst_btemps"]) self.assertIsNotNone(ds.variables["u_random_btemps"]) self.assertIsNotNone(ds.variables["u_instrtemp"]) self.assertIsNotNone(ds.variables["u_latitude"]) self.assertIsNotNone(ds.variables["u_longitude"]) self.assertIsNotNone(ds.variables["u_satellite_azimuth_angle"]) self.assertIsNotNone(ds.variables["u_satellite_zenith_angle"]) self.assertIsNotNone(ds.variables["u_solar_azimuth_angle"]) self.assertIsNotNone(ds.variables["u_solar_zenith_angle"])
def testCreateTemplateEasy_MVIRI(self): ds = FCDRWriter.createTemplateEasy('MVIRI', 5000) self.assertIsNotNone(ds) Assertions.assert_global_attributes(self, ds.attrs) self._verify_quality_flags(ds) self.assertEqual(40, len(ds.data_vars)) # sensor specific self.assertIsNotNone(ds.variables["time"]) self.assertIsNotNone(ds.variables["SRF_weights"]) self.assertIsNotNone(ds.variables["SRF_frequencies"]) self.assertIsNotNone( ds.variables["covariance_spectral_response_function_vis"]) self.assertIsNotNone(ds.variables["u_spectral_response_function_ir"]) self.assertIsNotNone(ds.variables["u_spectral_response_function_wv"]) self.assertIsNotNone(ds.variables["solar_zenith_angle"]) self.assertIsNotNone(ds.variables["solar_azimuth_angle"]) self.assertIsNotNone(ds.variables["satellite_azimuth_angle"]) self.assertIsNotNone(ds.variables["satellite_zenith_angle"]) self.assertIsNotNone(ds.variables["count_ir"]) self.assertIsNotNone(ds.variables["count_wv"]) self.assertIsNotNone(ds.variables["data_quality_bitmask"]) self.assertIsNotNone(ds.variables["distance_sun_earth"]) self.assertIsNotNone(ds.variables["solar_irradiance_vis"]) self.assertIsNotNone(ds.variables["u_solar_irradiance_vis"]) self.assertIsNotNone(ds.variables["a_ir"]) self.assertIsNotNone(ds.variables["b_ir"]) self.assertIsNotNone(ds.variables["u_a_ir"]) self.assertIsNotNone(ds.variables["u_b_ir"]) self.assertIsNotNone(ds.variables["a_wv"]) self.assertIsNotNone(ds.variables["b_wv"]) self.assertIsNotNone(ds.variables["u_a_wv"]) self.assertIsNotNone(ds.variables["u_b_wv"]) self.assertIsNotNone(ds.variables["bt_a_ir"]) self.assertIsNotNone(ds.variables["bt_b_ir"]) self.assertIsNotNone(ds.variables["bt_a_wv"]) self.assertIsNotNone(ds.variables["bt_b_wv"]) self.assertIsNotNone(ds.variables["years_since_launch"]) # easy FCDR uncertainties self.assertIsNotNone(ds.variables["toa_bidirectional_reflectance_vis"]) self.assertIsNotNone( ds.variables["u_independent_toa_bidirectional_reflectance"]) self.assertIsNotNone( ds.variables["u_structured_toa_bidirectional_reflectance"]) self.assertIsNotNone( ds.variables["u_common_toa_bidirectional_reflectance"]) self.assertIsNotNone(ds.variables["sub_satellite_latitude_start"]) self.assertIsNotNone(ds.variables["sub_satellite_longitude_start"]) self.assertIsNotNone(ds.variables["sub_satellite_latitude_end"]) self.assertIsNotNone(ds.variables["sub_satellite_longitude_end"]) self.assertIsNotNone( ds.variables["channel_correlation_matrix_independent"]) self.assertIsNotNone( ds.variables["channel_correlation_matrix_structured"])
def testCreateTemplateFull_HIRS3(self): ds = FCDRWriter.createTemplateFull('HIRS3', 209) self.assertIsNotNone(ds) Assertions.assert_global_attributes(self, ds.attrs) self.assertEqual(98, len(ds.data_vars)) # geolocation + flags self._verify_geolocation_variables(ds) self._verify_quality_flags(ds) self._assert_HIRS_common_variables(ds) self.assertIsNotNone(ds.variables["satellite_azimuth_angle"]) self.assertIsNotNone(ds.variables["solar_zenith_angle"]) self.assertIsNotNone(ds.variables["scanline_map_to_origl1bfile"]) self.assertIsNotNone(ds.variables["scanline_origl1b"]) self.assertIsNotNone(ds.variables["data_quality_bitmask"]) self.assertIsNotNone(ds.variables["c_earth"]) self.assertIsNotNone(ds.variables["L_earth"]) self.assertIsNotNone(ds.variables["u_L_earth_independent"]) self.assertIsNotNone(ds.variables["navigation_status"]) self.assertIsNotNone(ds.variables["platform_altitude"]) self.assertIsNotNone(ds.variables["platform_pitch_angle"]) self.assertIsNotNone(ds.variables["platform_roll_angle"]) self.assertIsNotNone(ds.variables["platform_yaw_angle"]) self.assertIsNotNone(ds.variables["quality_flags"]) self.assertIsNotNone(ds.variables["scan_angles"]) self.assertIsNotNone(ds.variables["l1b_scanline_number"]) self.assertIsNotNone(ds.variables["scanline_position"]) self.assertIsNotNone( ds.variables["l1b_second_original_calibration_coefficients"]) self.assertIsNotNone(ds.variables["u_c_earth"]) self.assertIsNotNone(ds.variables["u_c_earth_chan_corr"]) self.assertIsNotNone(ds.variables["u_c_space"]) self.assertIsNotNone(ds.variables["u_c_space_chan_corr"]) self.assertIsNotNone(ds.variables["u_Earthshine"]) self.assertIsNotNone(ds.variables["u_O_Re"]) self.assertIsNotNone(ds.variables["u_O_TIWCT"]) self.assertIsNotNone(ds.variables["u_O_TPRT"]) self.assertIsNotNone(ds.variables["u_d_PRT"]) self.assertIsNotNone(ds.variables["u_electronics"]) self.assertIsNotNone(ds.variables["u_nonlinearity"]) self.assertIsNotNone(ds.variables["temp_corr_slope"]) self.assertIsNotNone(ds.variables["temp_corr_offset"]) self.assertIsNotNone(ds.variables["emissivity"]) self.assertIsNotNone(ds.variables["mnfrqualflags"])
def testCreateTemplateEasy_AVHRR(self): ds = FCDRWriter.createTemplateEasy('AVHRR', 12198, srf_size=13, corr_dx=14, corr_dy=15) self.assertIsNotNone(ds) Assertions.assert_global_attributes(self, ds.attrs) self.assertEqual(42, len(ds.data_vars)) # geolocation + flags self._verify_geolocation_variables(ds) self._verify_quality_flags(ds) # sensor specific self._verify_avhrr_specific_variables(ds) # easy FCDR variables self.assertIsNotNone(ds.variables["u_independent_Ch1"]) self.assertIsNotNone(ds.variables["u_structured_Ch1"]) self.assertIsNotNone(ds.variables["u_common_Ch1"]) self.assertIsNotNone(ds.variables["u_independent_Ch2"]) self.assertIsNotNone(ds.variables["u_structured_Ch2"]) self.assertIsNotNone(ds.variables["u_common_Ch2"]) self.assertIsNotNone(ds.variables["u_independent_Ch3a"]) self.assertIsNotNone(ds.variables["u_structured_Ch3a"]) self.assertIsNotNone(ds.variables["u_common_Ch3a"]) self.assertIsNotNone(ds.variables["u_independent_Ch3b"]) self.assertIsNotNone(ds.variables["u_structured_Ch3b"]) self.assertIsNotNone(ds.variables["u_common_Ch3b"]) self.assertIsNotNone(ds.variables["u_independent_Ch4"]) self.assertIsNotNone(ds.variables["u_structured_Ch4"]) self.assertIsNotNone(ds.variables["u_common_Ch4"]) self.assertIsNotNone(ds.variables["u_independent_Ch5"]) self.assertIsNotNone(ds.variables["u_structured_Ch5"]) self.assertIsNotNone(ds.variables["u_common_Ch5"]) self.assertIsNotNone( ds.variables["channel_correlation_matrix_independent"]) self.assertIsNotNone( ds.variables["channel_correlation_matrix_structured"]) self.assertIsNotNone( ds.variables["cross_element_correlation_coefficients"]) self.assertIsNotNone( ds.variables["cross_line_correlation_coefficients"])
def testCreateTemplateEasy_AMSUB(self): ds = FCDRWriter.createTemplateEasy('AMSUB', 2561) self.assertIsNotNone(ds) Assertions.assert_global_attributes(self, ds.attrs) self.assertEqual(19, len(ds.data_vars)) # geolocation + flags self._verify_geolocation_variables(ds) self._verify_quality_flags(ds) # sensor specific self._verify_amsub_specific_variables(ds) # easy FCDR variables self.assertIsNotNone(ds.variables["u_independent_btemps"]) self.assertIsNotNone(ds.variables["u_structured_btemps"])
def testCreateTemplateEasy_SSMT2(self): ds = FCDRWriter.createTemplateEasy('SSMT2', 722) self.assertIsNotNone(ds) Assertions.assert_global_attributes(self, ds.attrs) self.assertEqual(15, len(ds.data_vars)) # geolocation + flags self._verify_geolocation_variables(ds) self._verify_quality_flags(ds) # sensor specific self.verify_SSMT2_specific_variables(ds) # easy FCDR variables self.assertIsNotNone(ds.variables["u_independent_tb"]) self.assertIsNotNone(ds.variables["u_structured_tb"])
def testCreateTemplateFull_SSMT2(self): ds = FCDRWriter.createTemplateFull('SSMT2', 722) self.assertIsNotNone(ds) Assertions.assert_global_attributes(self, ds.attrs) self.assertEqual(21, len(ds.data_vars)) # geolocation + flags self._verify_geolocation_variables(ds) self._verify_quality_flags(ds) # sensor specific self.verify_SSMT2_specific_variables(ds) # easy FCDR variables self.assertIsNotNone(ds.variables["u_Temperature_misc_housekeeping"]) self.assertIsNotNone(ds.variables["u_cold_counts"]) self.assertIsNotNone(ds.variables["u_counts_to_tb_gain"]) self.assertIsNotNone(ds.variables["u_counts_to_tb_offset"]) self.assertIsNotNone(ds.variables["u_gain_control"]) self.assertIsNotNone(ds.variables["u_tb"]) self.assertIsNotNone(ds.variables["u_thermal_reference"]) self.assertIsNotNone(ds.variables["u_warm_counts"])
def testTemplateEasy_ALBEDO(self): ds = CDRWriter.createTemplate('ALBEDO', 5000, 5000) self.assertIsNotNone(ds) Assertions.assert_global_attributes(self, ds.attrs) Assertions.assert_cdr_global_attributes(self, ds.attrs)
def testTemplateEasy_SST_ENSEMBLE(self): ds = CDRWriter.createTemplate('SST_ENSEMBLE', 409, 11732, 20) self.assertIsNotNone(ds) Assertions.assert_global_attributes(self, ds.attrs) Assertions.assert_cdr_global_attributes(self, ds.attrs)
def testTemplateEasy_AOT(self): ds = CDRWriter.createTemplate('AOT', 409, 12941) self.assertIsNotNone(ds) Assertions.assert_global_attributes(self, ds.attrs) Assertions.assert_cdr_global_attributes(self, ds.attrs)
def testCreateTemplateFull_MVIRI(self): ds = FCDRWriter.createTemplateFull('MVIRI', 5000) self.assertIsNotNone(ds) Assertions.assert_global_attributes(self, ds.attrs) self.assertEqual(58, len(ds.data_vars)) self._verify_quality_flags(ds) # sensor specific self.assertIsNotNone(ds.variables["count_vis"]) self.assertIsNotNone(ds.variables["time"]) self.assertIsNotNone(ds.variables["solar_zenith_angle"]) self.assertIsNotNone(ds.variables["solar_azimuth_angle"]) self.assertIsNotNone(ds.variables["satellite_azimuth_angle"]) self.assertIsNotNone(ds.variables["satellite_zenith_angle"]) self.assertIsNotNone(ds.variables["count_ir"]) self.assertIsNotNone(ds.variables["count_wv"]) self.assertIsNotNone(ds.variables["count_vis"]) self.assertIsNotNone(ds.variables["data_quality_bitmask"]) self.assertIsNotNone(ds.variables["SRF_weights"]) self.assertIsNotNone(ds.variables["SRF_frequencies"]) self.assertIsNotNone( ds.variables["covariance_spectral_response_function_vis"]) self.assertIsNotNone(ds.variables["u_spectral_response_function_ir"]) self.assertIsNotNone(ds.variables["u_spectral_response_function_wv"]) self.assertIsNotNone(ds.variables["a0_vis"]) self.assertIsNotNone(ds.variables["a1_vis"]) self.assertIsNotNone(ds.variables["a2_vis"]) self.assertIsNotNone(ds.variables["solar_irradiance_vis"]) self.assertIsNotNone(ds.variables["u_solar_irradiance_vis"]) self.assertIsNotNone(ds.variables["distance_sun_earth"]) self.assertIsNotNone(ds.variables["a_ir"]) self.assertIsNotNone(ds.variables["b_ir"]) self.assertIsNotNone(ds.variables["u_a_ir"]) self.assertIsNotNone(ds.variables["u_b_ir"]) self.assertIsNotNone(ds.variables["a_wv"]) self.assertIsNotNone(ds.variables["b_wv"]) self.assertIsNotNone(ds.variables["u_a_wv"]) self.assertIsNotNone(ds.variables["u_b_wv"]) self.assertIsNotNone(ds.variables["bt_a_ir"]) self.assertIsNotNone(ds.variables["bt_b_ir"]) self.assertIsNotNone(ds.variables["bt_a_wv"]) self.assertIsNotNone(ds.variables["bt_b_wv"]) self.assertIsNotNone(ds.variables["years_since_launch"]) # full FCDR uncertainties self.assertIsNotNone(ds.variables["u_latitude"]) self.assertIsNotNone(ds.variables["u_longitude"]) self.assertIsNotNone(ds.variables["u_time"]) self.assertIsNotNone(ds.variables["u_a0_vis"]) self.assertIsNotNone(ds.variables["u_a1_vis"]) self.assertIsNotNone(ds.variables["u_a2_vis"]) self.assertIsNotNone(ds.variables["u_zero_vis"]) self.assertIsNotNone(ds.variables["covariance_a_vis"]) self.assertIsNotNone(ds.variables["u_electronics_counts_vis"]) self.assertIsNotNone(ds.variables["u_digitization_counts_vis"]) self.assertIsNotNone(ds.variables["allan_deviation_counts_space_vis"]) self.assertIsNotNone(ds.variables["u_mean_counts_space_vis"]) self.assertIsNotNone(ds.variables["u_solar_zenith_angle"]) self.assertIsNotNone(ds.variables["u_solar_azimuth_angle"]) self.assertIsNotNone(ds.variables["u_satellite_zenith_angle"]) self.assertIsNotNone(ds.variables["u_satellite_azimuth_angle"]) self.assertIsNotNone(ds.variables["effect_correlation_matrix"]) # virtual variables self.assertIsNotNone(ds.variables["sensitivity_solar_irradiance_vis"]) self.assertIsNotNone(ds.variables["sensitivity_count_vis"]) self.assertIsNotNone(ds.variables["sensitivity_count_space"]) self.assertIsNotNone(ds.variables["sensitivity_a0_vis"]) self.assertIsNotNone(ds.variables["sensitivity_a1_vis"]) self.assertIsNotNone(ds.variables["sensitivity_a2_vis"])
def testCreateTemplateFull_AVHRR(self): ds = FCDRWriter.createTemplateFull('AVHRR', 13667) self.assertIsNotNone(ds) Assertions.assert_global_attributes(self, ds.attrs) self.assertEqual(73, len(ds.data_vars)) # geolocation + flags self._verify_geolocation_variables(ds) self._verify_quality_flags(ds) # sensor specific self._verify_avhrr_specific_variables(ds) # variables of full FCDR self.assertIsNotNone(ds.variables["u_latitude"]) self.assertIsNotNone(ds.variables["u_longitude"]) self.assertIsNotNone(ds.variables["u_time"]) self.assertIsNotNone(ds.variables["u_satellite_azimuth_angle"]) self.assertIsNotNone(ds.variables["u_satellite_zenith_angle"]) self.assertIsNotNone(ds.variables["u_solar_azimuth_angle"]) self.assertIsNotNone(ds.variables["u_solar_zenith_angle"]) self.assertIsNotNone(ds.variables["PRT_C"]) self.assertIsNotNone(ds.variables["u_prt"]) # geolocation self._verify_geolocation_variables(ds) self.assertIsNotNone(ds.variables["R_ICT"]) self.assertIsNotNone(ds.variables["T_instr"]) self.assertIsNotNone(ds.variables["Ch1_Csp"]) self.assertIsNotNone(ds.variables["Ch2_Csp"]) self.assertIsNotNone(ds.variables["Ch3a_Csp"]) self.assertIsNotNone(ds.variables["Ch3b_Csp"]) self.assertIsNotNone(ds.variables["Ch4_Csp"]) self.assertIsNotNone(ds.variables["Ch5_Csp"]) self.assertIsNotNone(ds.variables["Ch3b_Cict"]) self.assertIsNotNone(ds.variables["Ch4_Cict"]) self.assertIsNotNone(ds.variables["Ch5_Cict"]) self.assertIsNotNone(ds.variables["Ch1_Ce"]) self.assertIsNotNone(ds.variables["Ch2_Ce"]) self.assertIsNotNone(ds.variables["Ch3a_Ce"]) self.assertIsNotNone(ds.variables["Ch3b_Ce"]) self.assertIsNotNone(ds.variables["Ch4_Ce"]) self.assertIsNotNone(ds.variables["Ch5_Ce"]) self.assertIsNotNone(ds.variables["Ch1_u_Csp"]) self.assertIsNotNone(ds.variables["Ch2_u_Csp"]) self.assertIsNotNone(ds.variables["Ch3a_u_Csp"]) self.assertIsNotNone(ds.variables["Ch3b_u_Csp"]) self.assertIsNotNone(ds.variables["Ch4_u_Csp"]) self.assertIsNotNone(ds.variables["Ch5_u_Csp"]) self.assertIsNotNone(ds.variables["Ch3b_u_Cict"]) self.assertIsNotNone(ds.variables["Ch4_u_Cict"]) self.assertIsNotNone(ds.variables["Ch5_u_Cict"]) self.assertIsNotNone(ds.variables["Ch1_u_Ce"]) self.assertIsNotNone(ds.variables["Ch2_u_Ce"]) self.assertIsNotNone(ds.variables["Ch3a_u_Ce"]) self.assertIsNotNone(ds.variables["Ch3b_u_Ce"]) self.assertIsNotNone(ds.variables["Ch4_u_Ce"]) self.assertIsNotNone(ds.variables["Ch5_u_Ce"]) self.assertIsNotNone(ds.variables["Ch1_u_Refl"]) self.assertIsNotNone(ds.variables["Ch2_u_Refl"]) self.assertIsNotNone(ds.variables["Ch3a_u_Refl"]) self.assertIsNotNone(ds.variables["Ch3b_u_Bt"]) self.assertIsNotNone(ds.variables["Ch4_u_Bt"]) self.assertIsNotNone(ds.variables["Ch5_u_Bt"]) self.assertIsNotNone(ds.variables["Ch3b_ur_Bt"]) self.assertIsNotNone(ds.variables["Ch4_ur_Bt"]) self.assertIsNotNone(ds.variables["Ch5_ur_Bt"]) self.assertIsNotNone(ds.variables["Ch3b_us_Bt"]) self.assertIsNotNone(ds.variables["Ch4_us_Bt"]) self.assertIsNotNone(ds.variables["Ch5_us_Bt"])
def test_add_standard_global_attributes(self): dataset = xr.Dataset() WriterUtils.add_standard_global_attributes(dataset) Assertions.assert_global_attributes(self, dataset.attrs)