Beispiel #1
0
    def test_compare_column_and_integrated_profile(self):
        from CALIOPy.utils import integrate_profile, mask_data
        ext_data = cis.read_data(self.TEST_FILENAME,
                                 "Extinction_Coefficient_532",
                                 "Caliop_V4_QC_NO_PRESSURE")
        col_data = cis.read_data(
            self.TEST_FILENAME,
            "Column_Optical_Depth_Tropospheric_Aerosols_532", "Caliop_V4_QC")
        backscatter = cis.read_data(self.TEST_FILENAME,
                                    "Total_Backscatter_Coefficient_532",
                                    "Caliop_V4_QC_NO_PRESSURE")
        int_backscatter = cis.read_data(
            self.TEST_FILENAME, "Column_Integrated_Attenuated_Backscatter_532",
            "Caliop_V4_QC")

        # Integrate the profile
        int_data = integrate_profile(ext_data)
        my_int_back = integrate_profile(backscatter)

        assert np.abs((my_int_back.data - int_backscatter.data[:, 0]
                       ).mean()) < 0.016, "Backscatter integrations differ"
        print(np.abs((my_int_back.data - int_backscatter.data[:, 0]).mean()))
        #-0.0154302524737

        # There are a *few* values which are quite different, but I really don't know why, and they also have fairly
        # large uncertainty. On average the differences are very small.
        print(np.abs(np.mean(int_data.data - col_data.data[:, 0])))
        assert np.abs(np.mean(int_data.data - col_data.data[:, 0])
                      ) < 0.015, 'Extinction integrations are different'
        assert np.array_equal(
            int_data.data.mask,
            col_data.data[:, 0].mask), 'Arrays have different masks'
Beispiel #2
0
 def test_integrate_profile(self):
     from CALIOPy.utils import integrate_profile
     from cf_units import Unit
     int_data = integrate_profile(mock_extinction,
                                  spacing=mock_vertical_spacing)
     assert_almost_equal(int_data.data, mock_col_aod.data[:, 0])
     assert int_data.units == Unit(1)
Beispiel #3
0
 def compare_column_and_integrated_profile(self):
     from CALIOPy.utils import integrate_profile
     ext_data = cis.read_data(self.TEST_FILENAME,
                              "Extinction_Coefficient_532")
     col_data = cis.read_data(self.TEST_FILENAME,
                              "Column_Optical_Depth_Aerosols_532")
     int_data = integrate_profile(ext_data)
     assert_almost_equal(int_data.data, col_data.data, delta=0.05)
Beispiel #4
0
    def test_compare_column_and_integrated_profile(self):
        from CALIOPy.utils import integrate_profile, mask_data, remove_air_pressure
        ext_data = cis.read_data(self.TEST_FILENAME,
                                 "Extinction_Coefficient_532",
                                 "Caliop_V4_NO_PRESSURE")
        col_data = cis.read_data(
            self.TEST_FILENAME,
            "Column_Optical_Depth_Tropospheric_Aerosols_532")
        cum_prob = cis.read_data(self.TEST_FILENAME,
                                 "Column_IAB_Cumulative_Probability")
        backscatter = cis.read_data(self.TEST_FILENAME,
                                    "Total_Backscatter_Coefficient_532")
        int_backscatter = cis.read_data(
            self.TEST_FILENAME, "Column_Integrated_Attenuated_Backscatter_532")

        remove_air_pressure(ext_data)
        remove_air_pressure(col_data)
        remove_air_pressure(cum_prob)
        remove_air_pressure(backscatter)
        remove_air_pressure(int_backscatter)

        # Mask both datasets
        col_data, cum_data, int_backscatter = mask_data(
            [col_data, cum_prob, int_backscatter], self.cad_score,
            self.extinction_qc)
        ext_data, backscatter = mask_data([ext_data, backscatter],
                                          self.cad_score, self.extinction_qc)

        # Integrate the profile
        int_data = integrate_profile(ext_data)
        my_int_back = integrate_profile(backscatter)

        assert np.abs((my_int_back.data - int_backscatter.data[:, 0]
                       ).mean()) < 0.016, "Backscatter integrations differ"
        #-0.0154302524737
        print(np.abs((my_int_back.data - int_backscatter.data[:, 0]).mean()))

        # There are a *few* values which are quite different, but I really don't know why, and they also have fairly
        # large uncertainty. On average the differences are very small.
        print(np.abs(np.mean(int_data.data - col_data.data[:, 0])))
        assert np.abs(np.mean(int_data.data - col_data.data[:, 0])
                      ) < 0.015, 'Extinction integrations are different'
        assert np.array_equal(
            int_data.data.mask,
            col_data.data[:, 0].mask), 'Arrays have different masks'
Beispiel #5
0
 def test_integrate_profile(self):
     from CALIOPy.utils import integrate_profile, mask_data
     ext_data = cis.read_data(self.TEST_FILENAME,
                              "Extinction_Coefficient_532",
                              "Caliop_V4_QC_NO_PRESSURE")
     int_data = integrate_profile(ext_data)
     assert np.all(int_data.data > 0.0)
     assert int_data.data.count() == 639
     # This isn't the same as the above test because we're doing the masking before the integration
     assert_almost_equal(int_data.data.mean(), 0.15009987)
Beispiel #6
0
 def test_integrate_profile(self):
     from CALIOPy.utils import integrate_profile, remove_air_pressure, mask_data
     ext_data = cis.read_data(self.TEST_FILENAME,
                              "Extinction_Coefficient_532",
                              "Caliop_V4_NO_PRESSURE")
     remove_air_pressure(ext_data)
     int_data = integrate_profile(ext_data)
     assert np.all(int_data.data > 0.0)
     assert int_data.data.shape == (4224, )
     # Now check that masking this data produces something sensible
     masked_int_data, = mask_data([int_data], self.cad_score,
                                  self.extinction_qc)
     assert masked_int_data.data.count() == 639
     assert_almost_equal(masked_int_data.data.mean(), 0.1535116)
Beispiel #7
0
    def test_compare_column_and_integrated_profile(self):
        from CALIOPy.utils import integrate_profile, mask_data

        # Mask the Column data first, so the air_pressure gets popped off the cad score and extinction_qc
        col_data, = mask_data([mock_col_aod], self.cad_score,
                              self.extinction_qc)
        ext_data, = mask_data([mock_extinction], self.cad_score,
                              self.extinction_qc)

        # To match the pain of the original CALIOP data :-)
        col_data.data = col_data.data[:, 0]

        # Integrate the profile, set the spacing to one for this unit test
        int_data = integrate_profile(ext_data, spacing=mock_vertical_spacing)

        assert_array_equal(int_data.data, col_data.data)