Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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"])
Exemplo n.º 4
0
    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"])
Exemplo n.º 5
0
    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"])
Exemplo n.º 6
0
    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"])
Exemplo n.º 7
0
    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"])
Exemplo n.º 8
0
    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"])
Exemplo n.º 9
0
    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"])
Exemplo n.º 10
0
    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)
Exemplo n.º 11
0
    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)
Exemplo n.º 12
0
    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)
Exemplo n.º 13
0
    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"])
Exemplo n.º 14
0
    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"])
Exemplo n.º 15
0
    def test_add_standard_global_attributes(self):
        dataset = xr.Dataset()

        WriterUtils.add_standard_global_attributes(dataset)
        Assertions.assert_global_attributes(self, dataset.attrs)