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