In [1]:
import harp
import avl
In [2]:
product = harp.import_product("EarthCARE/ECA_EXAA_ACM_CAP_2B_20241231T183450Z_20230131T101806Z_39316D.h5")
print(product)
source product = 'ECA_EXAA_ACM_CAP_2B_20241231T183450Z_20230131T101806Z_39316D.h5' double datetime {time=5039} [seconds since 2000-01-01] double latitude {time=5039} [degree_north] double longitude {time=5039} [degree_east] long orbit_index float altitude {time=5039, vertical=246} [m] float liquid_water_density {time=5039, vertical=246} [kg/m3] float liquid_water_extinction_coefficient {time=5039, vertical=246} [1/m] float liquid_particle_effective_radius {time=5039, vertical=246} [m] float ice_water_density {time=5039, vertical=246} [kg/m3] float ice_particle_effective_radius {time=5039, vertical=246} [m] float ice_water_mass_flux {time=5039, vertical=246} [kg/m2/s] float ice_water_column_density {time=5039} [kg/m2] float rain_rate {time=5039, vertical=246} [mm/h] float rain_water_density {time=5039, vertical=246} [kg/m3] float aerosol_number_density {time=5039, vertical=246} [1/m3] float aerosol_extinction_coefficient {time=5039, vertical=246} [1/m] float aerosol_optical_depth {time=5039} [] float aerosol_density {time=5039, vertical=246} [kg/m3] byte validity {time=5039} long index {time=5039}
In [3]:
avl.Geo(product, value="aerosol_optical_depth")
In [4]:
avl.Geo(product, value="aerosol_optical_depth", pointsize=3, colormap="cmc.batlow", colorrange=(0,0.25))
In [5]:
avl.Scatter(product, value="aerosol_optical_depth")
HARP can derive AOD from extinction profiles: http://stcorp.github.io/harp/doc/html/algorithms/derivations/aerosol_optical_depth.html
In [6]:
filter = "exclude(aerosol_optical_depth);derive(aerosol_optical_depth {time})"
product2 = harp.import_product("EarthCARE/ECA_EXAA_ACM_CAP_2B_20241231T183450Z_20230131T101806Z_39316D.h5", filter)
print(product2)
source product = 'ECA_EXAA_ACM_CAP_2B_20241231T183450Z_20230131T101806Z_39316D.h5' history = "2023-11-15T08:45:36Z [harp-1.20.2] harp.import_product('EarthCARE/ECA_EXAA_ACM_CAP_2B_20241231T183450Z_20230131T101806Z_39316D.h5',operations='exclude(aerosol_optical_depth);derive(aerosol_optical_depth {time})')" double datetime {time=5039} [seconds since 2000-01-01] double latitude {time=5039} [degree_north] double longitude {time=5039} [degree_east] long orbit_index float altitude {time=5039, vertical=246} [m] float liquid_water_density {time=5039, vertical=246} [kg/m3] float liquid_water_extinction_coefficient {time=5039, vertical=246} [1/m] float liquid_particle_effective_radius {time=5039, vertical=246} [m] float ice_water_density {time=5039, vertical=246} [kg/m3] float ice_particle_effective_radius {time=5039, vertical=246} [m] float ice_water_mass_flux {time=5039, vertical=246} [kg/m2/s] float ice_water_column_density {time=5039} [kg/m2] float rain_rate {time=5039, vertical=246} [mm/h] float rain_water_density {time=5039, vertical=246} [kg/m3] float aerosol_number_density {time=5039, vertical=246} [1/m3] float aerosol_extinction_coefficient {time=5039, vertical=246} [1/m] float aerosol_density {time=5039, vertical=246} [kg/m3] byte validity {time=5039} long index {time=5039} double aerosol_optical_depth {time=5039} []
In [7]:
!harpdump --list-derivations -a 'exclude(aerosol_optical_depth)' -t aerosol_optical_depth EarthCARE/ECA_EXAA_ACM_CAP_2B_20241231T183450Z_20230131T101806Z_39316D.h5
aerosol_optical_depth {time} [] (double) from aerosol_optical_depth {time,vertical} [] (double) from aerosol_extinction_coefficient {time,vertical} [1/m] (double) altitude_bounds {time,vertical,independent(2)} [m] (double) from altitude {time,vertical} [m] (double) aerosol_optical_depth {time,vertical} [] (double) from aerosol_extinction_coefficient {time,vertical} [1/m] (double) altitude_bounds {time,vertical,independent(2)} [m] (double) from altitude {time,vertical} [m] (double)
In [8]:
avl.Scatter(product2, value="aerosol_optical_depth")
In [9]:
avl.vis.Scatter(xdata=avl.get_timestamps(product.datetime), ydata=product.aerosol_optical_depth.data - product2.aerosol_optical_depth.data)
In [10]:
print(product.altitude)
type = float dimension = {time=5039, vertical=246} unit = 'm' valid_min = -inf valid_max = inf description = 'joint standard grid height' data = [[39800.043 39300.043 38800.043 ... -300. -400. -500. ] [39800.043 39300.043 38800.043 ... -300. -400. -500. ] [39800.043 39300.043 38800.043 ... -300. -400. -500. ] ... [39800.043 39300.043 38800.043 ... -300. -400. -500. ] [39800.043 39300.043 38800.043 ... -300. -400. -500. ] [39800.043 39300.043 38800.043 ... -300. -400. -500. ]]
In [11]:
filter = "squash(time,altitude)"
product2 = harp.import_product("EarthCARE/ECA_EXAA_ACM_CAP_2B_20241231T183450Z_20230131T101806Z_39316D.h5", filter)
print(product2)
source product = 'ECA_EXAA_ACM_CAP_2B_20241231T183450Z_20230131T101806Z_39316D.h5' history = "2023-11-15T08:45:37Z [harp-1.20.2] harp.import_product('EarthCARE/ECA_EXAA_ACM_CAP_2B_20241231T183450Z_20230131T101806Z_39316D.h5',operations='squash(time,altitude)')" double datetime {time=5039} [seconds since 2000-01-01] double latitude {time=5039} [degree_north] double longitude {time=5039} [degree_east] long orbit_index float altitude {vertical=246} [m] float liquid_water_density {time=5039, vertical=246} [kg/m3] float liquid_water_extinction_coefficient {time=5039, vertical=246} [1/m] float liquid_particle_effective_radius {time=5039, vertical=246} [m] float ice_water_density {time=5039, vertical=246} [kg/m3] float ice_particle_effective_radius {time=5039, vertical=246} [m] float ice_water_mass_flux {time=5039, vertical=246} [kg/m2/s] float ice_water_column_density {time=5039} [kg/m2] float rain_rate {time=5039, vertical=246} [mm/h] float rain_water_density {time=5039, vertical=246} [kg/m3] float aerosol_number_density {time=5039, vertical=246} [1/m3] float aerosol_extinction_coefficient {time=5039, vertical=246} [1/m] float aerosol_optical_depth {time=5039} [] float aerosol_density {time=5039, vertical=246} [kg/m3] byte validity {time=5039} long index {time=5039}
In [12]:
avl.Heatmap(product2, value="aerosol_density")
In [13]:
avl.Heatmap(product2, value="ice_water_density")
In [14]:
filter = ";".join([
"datetime >= 0 [s since 2024-12-31T18:42:47]",
"datetime < 0 [s since 2024-12-31T18:43:10]",
"squash(time,altitude)",
"altitude < 12 [km]",
])
product3 = harp.import_product("EarthCARE/ECA_EXAA_ACM_CAP_2B_20241231T183450Z_20230131T101806Z_39316D.h5", filter)
print(product3)
source product = 'ECA_EXAA_ACM_CAP_2B_20241231T183450Z_20230131T101806Z_39316D.h5' history = "2023-11-15T08:45:38Z [harp-1.20.2] harp.import_product('EarthCARE/ECA_EXAA_ACM_CAP_2B_20241231T183450Z_20230131T101806Z_39316D.h5',operations='datetime >= 0 [s since 2024-12-31T18:42:47];datetime < 0 [s since 2024-12-31T18:43:10];squash(time,altitude);altitude < 12 [km]')" double datetime {time=161} [seconds since 2000-01-01] double latitude {time=161} [degree_north] double longitude {time=161} [degree_east] long orbit_index float altitude {vertical=125} [m] float liquid_water_density {time=161, vertical=125} [kg/m3] float liquid_water_extinction_coefficient {time=161, vertical=125} [1/m] float liquid_particle_effective_radius {time=161, vertical=125} [m] float ice_water_density {time=161, vertical=125} [kg/m3] float ice_particle_effective_radius {time=161, vertical=125} [m] float ice_water_mass_flux {time=161, vertical=125} [kg/m2/s] float ice_water_column_density {time=161} [kg/m2] float rain_rate {time=161, vertical=125} [mm/h] float rain_water_density {time=161, vertical=125} [kg/m3] float aerosol_number_density {time=161, vertical=125} [1/m3] float aerosol_extinction_coefficient {time=161, vertical=125} [1/m] float aerosol_optical_depth {time=161} [] float aerosol_density {time=161, vertical=125} [kg/m3] byte validity {time=161} long index {time=161}
In [15]:
avl.Heatmap(product3, value="ice_water_density")
In [16]:
avl.Heatmap(product3, value="rain_rate")
In [17]:
avl.Scatter(product3, value="ice_water_column_density")