def avail(self, options=False, internal=False): """ Get the list of available variables and variable paths from the input data product Examples -------- >>> reg_a = ipx.Query('ATL06',[-55, 68, -48, 71],['2019-02-20','2019-02-28'], version='5') # doctest: +SKIP >>> reg_a.earthdata_login(user_id,user_email) # doctest: +SKIP Earthdata Login password: ········ >>> reg_a.order_vars.avail() # doctest: +SKIP ['ancillary_data/atlas_sdp_gps_epoch', 'ancillary_data/control', 'ancillary_data/data_end_utc', 'ancillary_data/data_start_utc', . . . 'quality_assessment/gt3r/signal_selection_source_fraction_3'] """ # if hasattr(self, '_avail'): # return self._avail # else: if not hasattr(self, "_avail") or self._avail == None: if self._vartype == "order": self._avail = is2ref._get_custom_options( self._session, self.product, self._version)["variables"] elif self._vartype == "file": import h5py self._avail = [] def visitor_func(name, node): if isinstance(node, h5py.Group): # node is a Group pass else: # node is a Dataset self._avail.append(name) with h5py.File(self.path, "r") as h5f: h5f.visititems(visitor_func) if options == True: vgrp, paths = self.parse_var_list(self._avail) allpaths = [] [ allpaths.extend(np.unique(np.array(paths[p]))) for p in range(len(paths)) ] allpaths = np.unique(allpaths) if internal == False: print("var_list inputs: " + ", ".join(vgrp.keys())) print("keyword_list and beam_list inputs: " + ", ".join(allpaths)) elif internal == True: return vgrp, allpaths else: return self._avail
def avail(self, options=False, internal=False): """ Get the list of available variables and variable paths from the input dataset Examples -------- >>> reg_a = icepyx.icesat2data.Icesat2Data('ATL06',[-55, 68, -48, 71],['2019-02-20','2019-02-28'], version='1') >>> reg_a.earthdata_login(user_id,user_email) Earthdata Login password: ········ >>> reg_a.order_vars.avail() ['ancillary_data/atlas_sdp_gps_epoch', 'ancillary_data/control', 'ancillary_data/data_end_utc', 'ancillary_data/data_start_utc', . . . 'quality_assessment/gt3r/signal_selection_source_fraction_3'] """ # if hasattr(self, '_avail'): # return self._avail # else: if not hasattr(self, '_avail') or self._avail == None: if self._vartype == 'order': self._avail = is2ref._get_custom_options( self._session, self.dataset, self._version)['variables'] elif self._vartype == 'file': self._avail = None if options == True: vgrp, paths = self.parse_var_list(self._avail) allpaths = [] [ allpaths.extend(np.unique(np.array(paths[p]))) for p in range(len(paths)) ] allpaths = np.unique(allpaths) if internal == False: print('var_list inputs: ' + ', '.join(vgrp.keys())) print('keyword_list and beam_list inputs: ' + ', '.join(allpaths)) elif internal == True: return vgrp, allpaths else: return self._avail
def show_custom_options(self, dictview=False): """ Display customization/subsetting options available for this product. Parameters ---------- dictview : boolean, default False Show the variable portion of the custom options list as a dictionary with key:value pairs representing variable:paths-to-variable rather than as a long list of full variable paths. Examples -------- >>> reg_a = ipx.Query('ATL06',[-55, 68, -48, 71],['2019-02-20','2019-02-28']) # doctest: +SKIP >>> reg_a.earthdata_login(user_id,user_email) # doctest: +SKIP Earthdata Login password: ········ >>> reg_a.show_custom_options(dictview=True) # doctest: +SKIP Subsetting options [{'id': 'ICESAT2', 'maxGransAsyncRequest': '2000', 'maxGransSyncRequest': '100', 'spatialSubsetting': 'true', 'spatialSubsettingShapefile': 'true', 'temporalSubsetting': 'true', 'type': 'both'}] Data File Formats (Reformatting Options) ['TABULAR_ASCII', 'NetCDF4-CF', 'Shapefile', 'NetCDF-3'] Reprojection Options [] Data File (Reformatting) Options Supporting Reprojection ['TABULAR_ASCII', 'NetCDF4-CF', 'Shapefile', 'NetCDF-3', 'No reformatting'] Data File (Reformatting) Options NOT Supporting Reprojection [] Data Variables (also Subsettable) ['ancillary_data/atlas_sdp_gps_epoch', 'ancillary_data/control', 'ancillary_data/data_end_utc', . . . 'quality_assessment/gt3r/signal_selection_source_fraction_3'] """ headers = [ "Subsetting options", "Data File Formats (Reformatting Options)", "Reprojection Options", "Data File (Reformatting) Options Supporting Reprojection", "Data File (Reformatting) Options NOT Supporting Reprojection", "Data Variables (also Subsettable)", ] keys = [ "options", "fileformats", "reprojectionONLY", "formatreproj", "noproj", "variables", ] try: all(key in self._cust_options.keys() for key in keys) except AttributeError or KeyError: self._cust_options = is2ref._get_custom_options( self._session, self.product, self._version ) for h, k in zip(headers, keys): print(h) if k == "variables" and dictview: vgrp, paths = Variables.parse_var_list(self._cust_options[k]) pprint.pprint(vgrp) else: pprint.pprint(self._cust_options[k])
def test_get_custom_options_output(session): obs = is2ref._get_custom_options(session, "ATL06", "004") with open("./ATL06v04_options.json", "r") as exp: assert all(keys in obs.keys() for keys in exp.keys()) assert all(obs[key] == exp[key] for key in exp.keys())
def test_get_custom_options_output(session): obs = is2ref._get_custom_options(session, 'ATL06','002') exp = {'options' : [{'id': 'ICESAT2', 'maxGransAsyncRequest': '2000', 'maxGransSyncRequest': '100', 'spatialSubsetting': 'true', 'spatialSubsettingShapefile': 'true', 'temporalSubsetting': 'true', 'type': 'both'}], 'fileformats' : ['TABULAR_ASCII', 'NetCDF4-CF', 'Shapefile', 'NetCDF-3'], 'formatreproj' : [], 'reprojectionONLY' : ['TABULAR_ASCII', 'NetCDF4-CF', 'Shapefile', 'NetCDF-3', 'No reformatting'], 'noproj' : [], 'variables' : ['ancillary_data/atlas_sdp_gps_epoch', 'ancillary_data/control', 'ancillary_data/data_end_utc', 'ancillary_data/data_start_utc', 'ancillary_data/end_cycle', 'ancillary_data/end_delta_time', 'ancillary_data/end_geoseg', 'ancillary_data/end_gpssow', 'ancillary_data/end_gpsweek', 'ancillary_data/end_orbit', 'ancillary_data/end_region', 'ancillary_data/end_rgt', 'ancillary_data/granule_end_utc', 'ancillary_data/granule_start_utc', 'ancillary_data/qa_at_interval', 'ancillary_data/release', 'ancillary_data/start_cycle', 'ancillary_data/start_delta_time', 'ancillary_data/start_geoseg', 'ancillary_data/start_gpssow', 'ancillary_data/start_gpsweek', 'ancillary_data/start_orbit', 'ancillary_data/start_region', 'ancillary_data/start_rgt', 'ancillary_data/version', 'ancillary_data/land_ice/dt_hist', 'ancillary_data/land_ice/fit_maxiter', 'ancillary_data/land_ice/fpb_maxiter', 'ancillary_data/land_ice/maxiter', 'ancillary_data/land_ice/max_res_ids', 'ancillary_data/land_ice/min_dist', 'ancillary_data/land_ice/min_gain_th', 'ancillary_data/land_ice/min_n_pe', 'ancillary_data/land_ice/min_n_sel', 'ancillary_data/land_ice/min_signal_conf', 'ancillary_data/land_ice/n_hist', 'ancillary_data/land_ice/nhist_bins', 'ancillary_data/land_ice/n_sigmas', 'ancillary_data/land_ice/proc_interval', 'ancillary_data/land_ice/rbin_width', 'ancillary_data/land_ice/sigma_beam', 'ancillary_data/land_ice/sigma_tx', 'ancillary_data/land_ice/t_dead', 'ancillary_data/land_ice/win_nsig', 'gt1l/land_ice_segments/atl06_quality_summary', 'gt1l/land_ice_segments/delta_time', 'gt1l/land_ice_segments/h_li', 'gt1l/land_ice_segments/h_li_sigma', 'gt1l/land_ice_segments/latitude', 'gt1l/land_ice_segments/longitude', 'gt1l/land_ice_segments/segment_id', 'gt1l/land_ice_segments/sigma_geo_h', 'gt1l/land_ice_segments/bias_correction/fpb_mean_corr', 'gt1l/land_ice_segments/bias_correction/fpb_mean_corr_sigma', 'gt1l/land_ice_segments/bias_correction/fpb_med_corr', 'gt1l/land_ice_segments/bias_correction/fpb_med_corr_sigma', 'gt1l/land_ice_segments/bias_correction/fpb_n_corr', 'gt1l/land_ice_segments/bias_correction/med_r_fit', 'gt1l/land_ice_segments/bias_correction/tx_mean_corr', 'gt1l/land_ice_segments/bias_correction/tx_med_corr', 'gt1l/land_ice_segments/dem/dem_flag', 'gt1l/land_ice_segments/dem/dem_h', 'gt1l/land_ice_segments/dem/geoid_h', 'gt1l/land_ice_segments/fit_statistics/dh_fit_dx', 'gt1l/land_ice_segments/fit_statistics/dh_fit_dx_sigma', 'gt1l/land_ice_segments/fit_statistics/dh_fit_dy', 'gt1l/land_ice_segments/fit_statistics/h_expected_rms', 'gt1l/land_ice_segments/fit_statistics/h_mean', 'gt1l/land_ice_segments/fit_statistics/h_rms_misfit', 'gt1l/land_ice_segments/fit_statistics/h_robust_sprd', 'gt1l/land_ice_segments/fit_statistics/n_fit_photons', 'gt1l/land_ice_segments/fit_statistics/n_seg_pulses', 'gt1l/land_ice_segments/fit_statistics/sigma_h_mean', 'gt1l/land_ice_segments/fit_statistics/signal_selection_source', 'gt1l/land_ice_segments/fit_statistics/signal_selection_source_status', 'gt1l/land_ice_segments/fit_statistics/snr', 'gt1l/land_ice_segments/fit_statistics/snr_significance', 'gt1l/land_ice_segments/fit_statistics/w_surface_window_final', 'gt1l/land_ice_segments/geophysical/bckgrd', 'gt1l/land_ice_segments/geophysical/bsnow_conf', 'gt1l/land_ice_segments/geophysical/bsnow_h', 'gt1l/land_ice_segments/geophysical/bsnow_od', 'gt1l/land_ice_segments/geophysical/cloud_flg_asr', 'gt1l/land_ice_segments/geophysical/cloud_flg_atm', 'gt1l/land_ice_segments/geophysical/dac', 'gt1l/land_ice_segments/geophysical/e_bckgrd', 'gt1l/land_ice_segments/geophysical/msw_flag', 'gt1l/land_ice_segments/geophysical/neutat_delay_total', 'gt1l/land_ice_segments/geophysical/r_eff', 'gt1l/land_ice_segments/geophysical/solar_azimuth', 'gt1l/land_ice_segments/geophysical/solar_elevation', 'gt1l/land_ice_segments/geophysical/tide_earth', 'gt1l/land_ice_segments/geophysical/tide_equilibrium', 'gt1l/land_ice_segments/geophysical/tide_load', 'gt1l/land_ice_segments/geophysical/tide_ocean', 'gt1l/land_ice_segments/geophysical/tide_pole', 'gt1l/land_ice_segments/ground_track/ref_azimuth', 'gt1l/land_ice_segments/ground_track/ref_coelv', 'gt1l/land_ice_segments/ground_track/seg_azimuth', 'gt1l/land_ice_segments/ground_track/sigma_geo_at', 'gt1l/land_ice_segments/ground_track/sigma_geo_xt', 'gt1l/land_ice_segments/ground_track/x_atc', 'gt1l/land_ice_segments/ground_track/y_atc', 'gt1l/residual_histogram/bckgrd_per_bin', 'gt1l/residual_histogram/count', 'gt1l/residual_histogram/delta_time', 'gt1l/residual_histogram/dh', 'gt1l/residual_histogram/ds_segment_id', 'gt1l/residual_histogram/lat_mean', 'gt1l/residual_histogram/lon_mean', 'gt1l/residual_histogram/pulse_count', 'gt1l/residual_histogram/segment_id_list', 'gt1l/residual_histogram/x_atc_mean', 'gt1l/segment_quality/delta_time', 'gt1l/segment_quality/record_number', 'gt1l/segment_quality/reference_pt_lat', 'gt1l/segment_quality/reference_pt_lon', 'gt1l/segment_quality/segment_id', 'gt1l/segment_quality/signal_selection_source', 'gt1l/segment_quality/signal_selection_status/signal_selection_status_all', 'gt1l/segment_quality/signal_selection_status/signal_selection_status_backup', 'gt1l/segment_quality/signal_selection_status/signal_selection_status_confident', 'gt1r/land_ice_segments/atl06_quality_summary', 'gt1r/land_ice_segments/delta_time', 'gt1r/land_ice_segments/h_li', 'gt1r/land_ice_segments/h_li_sigma', 'gt1r/land_ice_segments/latitude', 'gt1r/land_ice_segments/longitude', 'gt1r/land_ice_segments/segment_id', 'gt1r/land_ice_segments/sigma_geo_h', 'gt1r/land_ice_segments/bias_correction/fpb_mean_corr', 'gt1r/land_ice_segments/bias_correction/fpb_mean_corr_sigma', 'gt1r/land_ice_segments/bias_correction/fpb_med_corr', 'gt1r/land_ice_segments/bias_correction/fpb_med_corr_sigma', 'gt1r/land_ice_segments/bias_correction/fpb_n_corr', 'gt1r/land_ice_segments/bias_correction/med_r_fit', 'gt1r/land_ice_segments/bias_correction/tx_mean_corr', 'gt1r/land_ice_segments/bias_correction/tx_med_corr', 'gt1r/land_ice_segments/dem/dem_flag', 'gt1r/land_ice_segments/dem/dem_h', 'gt1r/land_ice_segments/dem/geoid_h', 'gt1r/land_ice_segments/fit_statistics/dh_fit_dx', 'gt1r/land_ice_segments/fit_statistics/dh_fit_dx_sigma', 'gt1r/land_ice_segments/fit_statistics/dh_fit_dy', 'gt1r/land_ice_segments/fit_statistics/h_expected_rms', 'gt1r/land_ice_segments/fit_statistics/h_mean', 'gt1r/land_ice_segments/fit_statistics/h_rms_misfit', 'gt1r/land_ice_segments/fit_statistics/h_robust_sprd', 'gt1r/land_ice_segments/fit_statistics/n_fit_photons', 'gt1r/land_ice_segments/fit_statistics/n_seg_pulses', 'gt1r/land_ice_segments/fit_statistics/sigma_h_mean', 'gt1r/land_ice_segments/fit_statistics/signal_selection_source', 'gt1r/land_ice_segments/fit_statistics/signal_selection_source_status', 'gt1r/land_ice_segments/fit_statistics/snr', 'gt1r/land_ice_segments/fit_statistics/snr_significance', 'gt1r/land_ice_segments/fit_statistics/w_surface_window_final', 'gt1r/land_ice_segments/geophysical/bckgrd', 'gt1r/land_ice_segments/geophysical/bsnow_conf', 'gt1r/land_ice_segments/geophysical/bsnow_h', 'gt1r/land_ice_segments/geophysical/bsnow_od', 'gt1r/land_ice_segments/geophysical/cloud_flg_asr', 'gt1r/land_ice_segments/geophysical/cloud_flg_atm', 'gt1r/land_ice_segments/geophysical/dac', 'gt1r/land_ice_segments/geophysical/e_bckgrd', 'gt1r/land_ice_segments/geophysical/msw_flag', 'gt1r/land_ice_segments/geophysical/neutat_delay_total', 'gt1r/land_ice_segments/geophysical/r_eff', 'gt1r/land_ice_segments/geophysical/solar_azimuth', 'gt1r/land_ice_segments/geophysical/solar_elevation', 'gt1r/land_ice_segments/geophysical/tide_earth', 'gt1r/land_ice_segments/geophysical/tide_equilibrium', 'gt1r/land_ice_segments/geophysical/tide_load', 'gt1r/land_ice_segments/geophysical/tide_ocean', 'gt1r/land_ice_segments/geophysical/tide_pole', 'gt1r/land_ice_segments/ground_track/ref_azimuth', 'gt1r/land_ice_segments/ground_track/ref_coelv', 'gt1r/land_ice_segments/ground_track/seg_azimuth', 'gt1r/land_ice_segments/ground_track/sigma_geo_at', 'gt1r/land_ice_segments/ground_track/sigma_geo_xt', 'gt1r/land_ice_segments/ground_track/x_atc', 'gt1r/land_ice_segments/ground_track/y_atc', 'gt1r/residual_histogram/bckgrd_per_bin', 'gt1r/residual_histogram/count', 'gt1r/residual_histogram/delta_time', 'gt1r/residual_histogram/dh', 'gt1r/residual_histogram/ds_segment_id', 'gt1r/residual_histogram/lat_mean', 'gt1r/residual_histogram/lon_mean', 'gt1r/residual_histogram/pulse_count', 'gt1r/residual_histogram/segment_id_list', 'gt1r/residual_histogram/x_atc_mean', 'gt1r/segment_quality/delta_time', 'gt1r/segment_quality/record_number', 'gt1r/segment_quality/reference_pt_lat', 'gt1r/segment_quality/reference_pt_lon', 'gt1r/segment_quality/segment_id', 'gt1r/segment_quality/signal_selection_source', 'gt1r/segment_quality/signal_selection_status/signal_selection_status_all', 'gt1r/segment_quality/signal_selection_status/signal_selection_status_backup', 'gt1r/segment_quality/signal_selection_status/signal_selection_status_confident', 'gt2l/land_ice_segments/atl06_quality_summary', 'gt2l/land_ice_segments/delta_time', 'gt2l/land_ice_segments/h_li', 'gt2l/land_ice_segments/h_li_sigma', 'gt2l/land_ice_segments/latitude', 'gt2l/land_ice_segments/longitude', 'gt2l/land_ice_segments/segment_id', 'gt2l/land_ice_segments/sigma_geo_h', 'gt2l/land_ice_segments/bias_correction/fpb_mean_corr', 'gt2l/land_ice_segments/bias_correction/fpb_mean_corr_sigma', 'gt2l/land_ice_segments/bias_correction/fpb_med_corr', 'gt2l/land_ice_segments/bias_correction/fpb_med_corr_sigma', 'gt2l/land_ice_segments/bias_correction/fpb_n_corr', 'gt2l/land_ice_segments/bias_correction/med_r_fit', 'gt2l/land_ice_segments/bias_correction/tx_mean_corr', 'gt2l/land_ice_segments/bias_correction/tx_med_corr', 'gt2l/land_ice_segments/dem/dem_flag', 'gt2l/land_ice_segments/dem/dem_h', 'gt2l/land_ice_segments/dem/geoid_h', 'gt2l/land_ice_segments/fit_statistics/dh_fit_dx', 'gt2l/land_ice_segments/fit_statistics/dh_fit_dx_sigma', 'gt2l/land_ice_segments/fit_statistics/dh_fit_dy', 'gt2l/land_ice_segments/fit_statistics/h_expected_rms', 'gt2l/land_ice_segments/fit_statistics/h_mean', 'gt2l/land_ice_segments/fit_statistics/h_rms_misfit', 'gt2l/land_ice_segments/fit_statistics/h_robust_sprd', 'gt2l/land_ice_segments/fit_statistics/n_fit_photons', 'gt2l/land_ice_segments/fit_statistics/n_seg_pulses', 'gt2l/land_ice_segments/fit_statistics/sigma_h_mean', 'gt2l/land_ice_segments/fit_statistics/signal_selection_source', 'gt2l/land_ice_segments/fit_statistics/signal_selection_source_status', 'gt2l/land_ice_segments/fit_statistics/snr', 'gt2l/land_ice_segments/fit_statistics/snr_significance', 'gt2l/land_ice_segments/fit_statistics/w_surface_window_final', 'gt2l/land_ice_segments/geophysical/bckgrd', 'gt2l/land_ice_segments/geophysical/bsnow_conf', 'gt2l/land_ice_segments/geophysical/bsnow_h', 'gt2l/land_ice_segments/geophysical/bsnow_od', 'gt2l/land_ice_segments/geophysical/cloud_flg_asr', 'gt2l/land_ice_segments/geophysical/cloud_flg_atm', 'gt2l/land_ice_segments/geophysical/dac', 'gt2l/land_ice_segments/geophysical/e_bckgrd', 'gt2l/land_ice_segments/geophysical/msw_flag', 'gt2l/land_ice_segments/geophysical/neutat_delay_total', 'gt2l/land_ice_segments/geophysical/r_eff', 'gt2l/land_ice_segments/geophysical/solar_azimuth', 'gt2l/land_ice_segments/geophysical/solar_elevation', 'gt2l/land_ice_segments/geophysical/tide_earth', 'gt2l/land_ice_segments/geophysical/tide_equilibrium', 'gt2l/land_ice_segments/geophysical/tide_load', 'gt2l/land_ice_segments/geophysical/tide_ocean', 'gt2l/land_ice_segments/geophysical/tide_pole', 'gt2l/land_ice_segments/ground_track/ref_azimuth', 'gt2l/land_ice_segments/ground_track/ref_coelv', 'gt2l/land_ice_segments/ground_track/seg_azimuth', 'gt2l/land_ice_segments/ground_track/sigma_geo_at', 'gt2l/land_ice_segments/ground_track/sigma_geo_xt', 'gt2l/land_ice_segments/ground_track/x_atc', 'gt2l/land_ice_segments/ground_track/y_atc', 'gt2l/residual_histogram/bckgrd_per_bin', 'gt2l/residual_histogram/count', 'gt2l/residual_histogram/delta_time', 'gt2l/residual_histogram/dh', 'gt2l/residual_histogram/ds_segment_id', 'gt2l/residual_histogram/lat_mean', 'gt2l/residual_histogram/lon_mean', 'gt2l/residual_histogram/pulse_count', 'gt2l/residual_histogram/segment_id_list', 'gt2l/residual_histogram/x_atc_mean', 'gt2l/segment_quality/delta_time', 'gt2l/segment_quality/record_number', 'gt2l/segment_quality/reference_pt_lat', 'gt2l/segment_quality/reference_pt_lon', 'gt2l/segment_quality/segment_id', 'gt2l/segment_quality/signal_selection_source', 'gt2l/segment_quality/signal_selection_status/signal_selection_status_all', 'gt2l/segment_quality/signal_selection_status/signal_selection_status_backup', 'gt2l/segment_quality/signal_selection_status/signal_selection_status_confident', 'gt2r/land_ice_segments/atl06_quality_summary', 'gt2r/land_ice_segments/delta_time', 'gt2r/land_ice_segments/h_li', 'gt2r/land_ice_segments/h_li_sigma', 'gt2r/land_ice_segments/latitude', 'gt2r/land_ice_segments/longitude', 'gt2r/land_ice_segments/segment_id', 'gt2r/land_ice_segments/sigma_geo_h', 'gt2r/land_ice_segments/bias_correction/fpb_mean_corr', 'gt2r/land_ice_segments/bias_correction/fpb_mean_corr_sigma', 'gt2r/land_ice_segments/bias_correction/fpb_med_corr', 'gt2r/land_ice_segments/bias_correction/fpb_med_corr_sigma', 'gt2r/land_ice_segments/bias_correction/fpb_n_corr', 'gt2r/land_ice_segments/bias_correction/med_r_fit', 'gt2r/land_ice_segments/bias_correction/tx_mean_corr', 'gt2r/land_ice_segments/bias_correction/tx_med_corr', 'gt2r/land_ice_segments/dem/dem_flag', 'gt2r/land_ice_segments/dem/dem_h', 'gt2r/land_ice_segments/dem/geoid_h', 'gt2r/land_ice_segments/fit_statistics/dh_fit_dx', 'gt2r/land_ice_segments/fit_statistics/dh_fit_dx_sigma', 'gt2r/land_ice_segments/fit_statistics/dh_fit_dy', 'gt2r/land_ice_segments/fit_statistics/h_expected_rms', 'gt2r/land_ice_segments/fit_statistics/h_mean', 'gt2r/land_ice_segments/fit_statistics/h_rms_misfit', 'gt2r/land_ice_segments/fit_statistics/h_robust_sprd', 'gt2r/land_ice_segments/fit_statistics/n_fit_photons', 'gt2r/land_ice_segments/fit_statistics/n_seg_pulses', 'gt2r/land_ice_segments/fit_statistics/sigma_h_mean', 'gt2r/land_ice_segments/fit_statistics/signal_selection_source', 'gt2r/land_ice_segments/fit_statistics/signal_selection_source_status', 'gt2r/land_ice_segments/fit_statistics/snr', 'gt2r/land_ice_segments/fit_statistics/snr_significance', 'gt2r/land_ice_segments/fit_statistics/w_surface_window_final', 'gt2r/land_ice_segments/geophysical/bckgrd', 'gt2r/land_ice_segments/geophysical/bsnow_conf', 'gt2r/land_ice_segments/geophysical/bsnow_h', 'gt2r/land_ice_segments/geophysical/bsnow_od', 'gt2r/land_ice_segments/geophysical/cloud_flg_asr', 'gt2r/land_ice_segments/geophysical/cloud_flg_atm', 'gt2r/land_ice_segments/geophysical/dac', 'gt2r/land_ice_segments/geophysical/e_bckgrd', 'gt2r/land_ice_segments/geophysical/msw_flag', 'gt2r/land_ice_segments/geophysical/neutat_delay_total', 'gt2r/land_ice_segments/geophysical/r_eff', 'gt2r/land_ice_segments/geophysical/solar_azimuth', 'gt2r/land_ice_segments/geophysical/solar_elevation', 'gt2r/land_ice_segments/geophysical/tide_earth', 'gt2r/land_ice_segments/geophysical/tide_equilibrium', 'gt2r/land_ice_segments/geophysical/tide_load', 'gt2r/land_ice_segments/geophysical/tide_ocean', 'gt2r/land_ice_segments/geophysical/tide_pole', 'gt2r/land_ice_segments/ground_track/ref_azimuth', 'gt2r/land_ice_segments/ground_track/ref_coelv', 'gt2r/land_ice_segments/ground_track/seg_azimuth', 'gt2r/land_ice_segments/ground_track/sigma_geo_at', 'gt2r/land_ice_segments/ground_track/sigma_geo_xt', 'gt2r/land_ice_segments/ground_track/x_atc', 'gt2r/land_ice_segments/ground_track/y_atc', 'gt2r/residual_histogram/bckgrd_per_bin', 'gt2r/residual_histogram/count', 'gt2r/residual_histogram/delta_time', 'gt2r/residual_histogram/dh', 'gt2r/residual_histogram/ds_segment_id', 'gt2r/residual_histogram/lat_mean', 'gt2r/residual_histogram/lon_mean', 'gt2r/residual_histogram/pulse_count', 'gt2r/residual_histogram/segment_id_list', 'gt2r/residual_histogram/x_atc_mean', 'gt2r/segment_quality/delta_time', 'gt2r/segment_quality/record_number', 'gt2r/segment_quality/reference_pt_lat', 'gt2r/segment_quality/reference_pt_lon', 'gt2r/segment_quality/segment_id', 'gt2r/segment_quality/signal_selection_source', 'gt2r/segment_quality/signal_selection_status/signal_selection_status_all', 'gt2r/segment_quality/signal_selection_status/signal_selection_status_backup', 'gt2r/segment_quality/signal_selection_status/signal_selection_status_confident', 'gt3l/land_ice_segments/atl06_quality_summary', 'gt3l/land_ice_segments/delta_time', 'gt3l/land_ice_segments/h_li', 'gt3l/land_ice_segments/h_li_sigma', 'gt3l/land_ice_segments/latitude', 'gt3l/land_ice_segments/longitude', 'gt3l/land_ice_segments/segment_id', 'gt3l/land_ice_segments/sigma_geo_h', 'gt3l/land_ice_segments/bias_correction/fpb_mean_corr', 'gt3l/land_ice_segments/bias_correction/fpb_mean_corr_sigma', 'gt3l/land_ice_segments/bias_correction/fpb_med_corr', 'gt3l/land_ice_segments/bias_correction/fpb_med_corr_sigma', 'gt3l/land_ice_segments/bias_correction/fpb_n_corr', 'gt3l/land_ice_segments/bias_correction/med_r_fit', 'gt3l/land_ice_segments/bias_correction/tx_mean_corr', 'gt3l/land_ice_segments/bias_correction/tx_med_corr', 'gt3l/land_ice_segments/dem/dem_flag', 'gt3l/land_ice_segments/dem/dem_h', 'gt3l/land_ice_segments/dem/geoid_h', 'gt3l/land_ice_segments/fit_statistics/dh_fit_dx', 'gt3l/land_ice_segments/fit_statistics/dh_fit_dx_sigma', 'gt3l/land_ice_segments/fit_statistics/dh_fit_dy', 'gt3l/land_ice_segments/fit_statistics/h_expected_rms', 'gt3l/land_ice_segments/fit_statistics/h_mean', 'gt3l/land_ice_segments/fit_statistics/h_rms_misfit', 'gt3l/land_ice_segments/fit_statistics/h_robust_sprd', 'gt3l/land_ice_segments/fit_statistics/n_fit_photons', 'gt3l/land_ice_segments/fit_statistics/n_seg_pulses', 'gt3l/land_ice_segments/fit_statistics/sigma_h_mean', 'gt3l/land_ice_segments/fit_statistics/signal_selection_source', 'gt3l/land_ice_segments/fit_statistics/signal_selection_source_status', 'gt3l/land_ice_segments/fit_statistics/snr', 'gt3l/land_ice_segments/fit_statistics/snr_significance', 'gt3l/land_ice_segments/fit_statistics/w_surface_window_final', 'gt3l/land_ice_segments/geophysical/bckgrd', 'gt3l/land_ice_segments/geophysical/bsnow_conf', 'gt3l/land_ice_segments/geophysical/bsnow_h', 'gt3l/land_ice_segments/geophysical/bsnow_od', 'gt3l/land_ice_segments/geophysical/cloud_flg_asr', 'gt3l/land_ice_segments/geophysical/cloud_flg_atm', 'gt3l/land_ice_segments/geophysical/dac', 'gt3l/land_ice_segments/geophysical/e_bckgrd', 'gt3l/land_ice_segments/geophysical/msw_flag', 'gt3l/land_ice_segments/geophysical/neutat_delay_total', 'gt3l/land_ice_segments/geophysical/r_eff', 'gt3l/land_ice_segments/geophysical/solar_azimuth', 'gt3l/land_ice_segments/geophysical/solar_elevation', 'gt3l/land_ice_segments/geophysical/tide_earth', 'gt3l/land_ice_segments/geophysical/tide_equilibrium', 'gt3l/land_ice_segments/geophysical/tide_load', 'gt3l/land_ice_segments/geophysical/tide_ocean', 'gt3l/land_ice_segments/geophysical/tide_pole', 'gt3l/land_ice_segments/ground_track/ref_azimuth', 'gt3l/land_ice_segments/ground_track/ref_coelv', 'gt3l/land_ice_segments/ground_track/seg_azimuth', 'gt3l/land_ice_segments/ground_track/sigma_geo_at', 'gt3l/land_ice_segments/ground_track/sigma_geo_xt', 'gt3l/land_ice_segments/ground_track/x_atc', 'gt3l/land_ice_segments/ground_track/y_atc', 'gt3l/residual_histogram/bckgrd_per_bin', 'gt3l/residual_histogram/count', 'gt3l/residual_histogram/delta_time', 'gt3l/residual_histogram/dh', 'gt3l/residual_histogram/ds_segment_id', 'gt3l/residual_histogram/lat_mean', 'gt3l/residual_histogram/lon_mean', 'gt3l/residual_histogram/pulse_count', 'gt3l/residual_histogram/segment_id_list', 'gt3l/residual_histogram/x_atc_mean', 'gt3l/segment_quality/delta_time', 'gt3l/segment_quality/record_number', 'gt3l/segment_quality/reference_pt_lat', 'gt3l/segment_quality/reference_pt_lon', 'gt3l/segment_quality/segment_id', 'gt3l/segment_quality/signal_selection_source', 'gt3l/segment_quality/signal_selection_status/signal_selection_status_all', 'gt3l/segment_quality/signal_selection_status/signal_selection_status_backup', 'gt3l/segment_quality/signal_selection_status/signal_selection_status_confident', 'gt3r/land_ice_segments/atl06_quality_summary', 'gt3r/land_ice_segments/delta_time', 'gt3r/land_ice_segments/h_li', 'gt3r/land_ice_segments/h_li_sigma', 'gt3r/land_ice_segments/latitude', 'gt3r/land_ice_segments/longitude', 'gt3r/land_ice_segments/segment_id', 'gt3r/land_ice_segments/sigma_geo_h', 'gt3r/land_ice_segments/bias_correction/fpb_mean_corr', 'gt3r/land_ice_segments/bias_correction/fpb_mean_corr_sigma', 'gt3r/land_ice_segments/bias_correction/fpb_med_corr', 'gt3r/land_ice_segments/bias_correction/fpb_med_corr_sigma', 'gt3r/land_ice_segments/bias_correction/fpb_n_corr', 'gt3r/land_ice_segments/bias_correction/med_r_fit', 'gt3r/land_ice_segments/bias_correction/tx_mean_corr', 'gt3r/land_ice_segments/bias_correction/tx_med_corr', 'gt3r/land_ice_segments/dem/dem_flag', 'gt3r/land_ice_segments/dem/dem_h', 'gt3r/land_ice_segments/dem/geoid_h', 'gt3r/land_ice_segments/fit_statistics/dh_fit_dx', 'gt3r/land_ice_segments/fit_statistics/dh_fit_dx_sigma', 'gt3r/land_ice_segments/fit_statistics/dh_fit_dy', 'gt3r/land_ice_segments/fit_statistics/h_expected_rms', 'gt3r/land_ice_segments/fit_statistics/h_mean', 'gt3r/land_ice_segments/fit_statistics/h_rms_misfit', 'gt3r/land_ice_segments/fit_statistics/h_robust_sprd', 'gt3r/land_ice_segments/fit_statistics/n_fit_photons', 'gt3r/land_ice_segments/fit_statistics/n_seg_pulses', 'gt3r/land_ice_segments/fit_statistics/sigma_h_mean', 'gt3r/land_ice_segments/fit_statistics/signal_selection_source', 'gt3r/land_ice_segments/fit_statistics/signal_selection_source_status', 'gt3r/land_ice_segments/fit_statistics/snr', 'gt3r/land_ice_segments/fit_statistics/snr_significance', 'gt3r/land_ice_segments/fit_statistics/w_surface_window_final', 'gt3r/land_ice_segments/geophysical/bckgrd', 'gt3r/land_ice_segments/geophysical/bsnow_conf', 'gt3r/land_ice_segments/geophysical/bsnow_h', 'gt3r/land_ice_segments/geophysical/bsnow_od', 'gt3r/land_ice_segments/geophysical/cloud_flg_asr', 'gt3r/land_ice_segments/geophysical/cloud_flg_atm', 'gt3r/land_ice_segments/geophysical/dac', 'gt3r/land_ice_segments/geophysical/e_bckgrd', 'gt3r/land_ice_segments/geophysical/msw_flag', 'gt3r/land_ice_segments/geophysical/neutat_delay_total', 'gt3r/land_ice_segments/geophysical/r_eff', 'gt3r/land_ice_segments/geophysical/solar_azimuth', 'gt3r/land_ice_segments/geophysical/solar_elevation', 'gt3r/land_ice_segments/geophysical/tide_earth', 'gt3r/land_ice_segments/geophysical/tide_equilibrium', 'gt3r/land_ice_segments/geophysical/tide_load', 'gt3r/land_ice_segments/geophysical/tide_ocean', 'gt3r/land_ice_segments/geophysical/tide_pole', 'gt3r/land_ice_segments/ground_track/ref_azimuth', 'gt3r/land_ice_segments/ground_track/ref_coelv', 'gt3r/land_ice_segments/ground_track/seg_azimuth', 'gt3r/land_ice_segments/ground_track/sigma_geo_at', 'gt3r/land_ice_segments/ground_track/sigma_geo_xt', 'gt3r/land_ice_segments/ground_track/x_atc', 'gt3r/land_ice_segments/ground_track/y_atc', 'gt3r/residual_histogram/bckgrd_per_bin', 'gt3r/residual_histogram/count', 'gt3r/residual_histogram/delta_time', 'gt3r/residual_histogram/dh', 'gt3r/residual_histogram/ds_segment_id', 'gt3r/residual_histogram/lat_mean', 'gt3r/residual_histogram/lon_mean', 'gt3r/residual_histogram/pulse_count', 'gt3r/residual_histogram/segment_id_list', 'gt3r/residual_histogram/x_atc_mean', 'gt3r/segment_quality/delta_time', 'gt3r/segment_quality/record_number', 'gt3r/segment_quality/reference_pt_lat', 'gt3r/segment_quality/reference_pt_lon', 'gt3r/segment_quality/segment_id', 'gt3r/segment_quality/signal_selection_source', 'gt3r/segment_quality/signal_selection_status/signal_selection_status_all', 'gt3r/segment_quality/signal_selection_status/signal_selection_status_backup', 'gt3r/segment_quality/signal_selection_status/signal_selection_status_confident', 'orbit_info/crossing_time', 'orbit_info/cycle_number', 'orbit_info/lan', 'orbit_info/orbit_number', 'orbit_info/rgt', 'orbit_info/sc_orient', 'orbit_info/sc_orient_time', 'quality_assessment/qa_granule_fail_reason', 'quality_assessment/qa_granule_pass_fail', 'quality_assessment/gt1l/delta_time', 'quality_assessment/gt1l/lat_mean', 'quality_assessment/gt1l/lon_mean', 'quality_assessment/gt1l/signal_selection_source_fraction_0', 'quality_assessment/gt1l/signal_selection_source_fraction_1', 'quality_assessment/gt1l/signal_selection_source_fraction_2', 'quality_assessment/gt1l/signal_selection_source_fraction_3', 'quality_assessment/gt1r/delta_time', 'quality_assessment/gt1r/lat_mean', 'quality_assessment/gt1r/lon_mean', 'quality_assessment/gt1r/signal_selection_source_fraction_0', 'quality_assessment/gt1r/signal_selection_source_fraction_1', 'quality_assessment/gt1r/signal_selection_source_fraction_2', 'quality_assessment/gt1r/signal_selection_source_fraction_3', 'quality_assessment/gt2l/delta_time', 'quality_assessment/gt2l/lat_mean', 'quality_assessment/gt2l/lon_mean', 'quality_assessment/gt2l/signal_selection_source_fraction_0', 'quality_assessment/gt2l/signal_selection_source_fraction_1', 'quality_assessment/gt2l/signal_selection_source_fraction_2', 'quality_assessment/gt2l/signal_selection_source_fraction_3', 'quality_assessment/gt2r/delta_time', 'quality_assessment/gt2r/lat_mean', 'quality_assessment/gt2r/lon_mean', 'quality_assessment/gt2r/signal_selection_source_fraction_0', 'quality_assessment/gt2r/signal_selection_source_fraction_1', 'quality_assessment/gt2r/signal_selection_source_fraction_2', 'quality_assessment/gt2r/signal_selection_source_fraction_3', 'quality_assessment/gt3l/delta_time', 'quality_assessment/gt3l/lat_mean', 'quality_assessment/gt3l/lon_mean', 'quality_assessment/gt3l/signal_selection_source_fraction_0', 'quality_assessment/gt3l/signal_selection_source_fraction_1', 'quality_assessment/gt3l/signal_selection_source_fraction_2', 'quality_assessment/gt3l/signal_selection_source_fraction_3', 'quality_assessment/gt3r/delta_time', 'quality_assessment/gt3r/lat_mean', 'quality_assessment/gt3r/lon_mean', 'quality_assessment/gt3r/signal_selection_source_fraction_0', 'quality_assessment/gt3r/signal_selection_source_fraction_1', 'quality_assessment/gt3r/signal_selection_source_fraction_2', 'quality_assessment/gt3r/signal_selection_source_fraction_3']} assert all(keys in obs.keys() for keys in exp.keys()) assert obs[key] == exp[key] for key in exp.keys()