diff --git a/modules/util/viirs_l1b_l2.py b/modules/util/viirs_l1b_l2.py index 949e7f078f4559b358dd380542c62459d392b941..5a21eff5c55be3e4c8e73d6668374ed32101a0af 100644 --- a/modules/util/viirs_l1b_l2.py +++ b/modules/util/viirs_l1b_l2.py @@ -45,39 +45,42 @@ ds_range.update({'cloud_fraction': 'actual_range'}) emis_params = ['temp_10_4um_nom', 'temp_11_0um_nom', 'temp_12_0um_nom', 'temp_13_3um_nom', 'temp_3_9um_nom', 'temp_6_7um_nom'] - # refl_params = ['refl_0_47um_nom', 'refl_0_65um_nom', 'refl_0_86um_nom', 'refl_1_38um_nom', 'refl_1_60um_nom'] - # data_params = refl_params + emis_params # data_params = emis_params -# l2_params = ['temp_11_0um_nom', 'temp_12_0um_nom', 'cloud_fraction'] -l2_params = ['temp_11_0um_nom', 'temp_12_0um_nom', 'refl_0_65um_nom', 'cld_opd_dcomp'] -# l2_params = ['temp_11_0um_nom', 'temp_12_0um_nom', 'refl_0_65um_nom', 'cloud_probability'] -# l2_params = ['temp_11_0um_nom', 'temp_12_0um_nom', 'refl_0_65um_nom', 'cloud_fraction'] +#target_param = 'cloud_probability' +target_param = 'cld_opd_dcomp' + +# group_name = '' +group_name = 'super/' +l2_params = [group_name+'temp_11_0um_nom', group_name+'temp_12_0um_nom', group_name+'refl_0_65um_nom', group_name+target_param] + +# solzen_name = group_name + 'solar_zenith_angle' +solzen_name = group_name + 'solar_zenith' label_params = l2_params data_params = l2_params def keep_tile(param_s, tile): - k = param_s.index('cloud_fraction') - grd_k = tile[k, ].flatten() - keep = np.invert(np.isnan(grd_k)) - total = np.sum(keep) - if total == 0: - return False - np.where(np.invert(keep), 0, grd_k) - - keep = np.where(keep, np.invert(np.logical_and(0.1 < grd_k, grd_k < 0.9)), False) - if np.sum(keep)/total > 0.75: - return True + k = param_s.index(group_name + target_param) + grd_k = tile[k, ].copy() + + if target_param == 'cloud_probability': + grd_k = process_cld_prob_(grd_k) + elif target_param == 'cld_opd_dcomp': + grd_k = process_cld_opd_(grd_k) + + if grd_k is not None: + tile[k, ] = grd_k + return tile else: - return False + return None def process_cld_prob(param_s, tile): - k = param_s.index('cloud_probability') + k = param_s.index(group_name + 'cloud_probability') grd_k = tile[k, ].copy() grd_k = process_cld_prob_(grd_k) if grd_k is not None: @@ -100,7 +103,7 @@ def process_cld_prob_(grd_k): def process_cld_opd(param_s, tile): - k = param_s.index('cld_opd_dcomp') + k = param_s.index(group_name + 'cld_opd_dcomp') grd_k = tile[k, ].copy() grd_k = process_cld_opd_(grd_k) if grd_k is not None: @@ -222,7 +225,8 @@ def run(data_h5f, param_s, train_tiles, valid_tiles, num_keep_x_tiles=8, tile_wi num_lines = data_h5f[param_name].shape[0] num_pixels = data_h5f[param_name].shape[1] - solzen = get_grid_values(data_h5f, 'solar_zenith_angle', 0, 0, None, num_lines, num_pixels) + if day_night != 'BOTH': + solzen = get_grid_values(data_h5f, solzen_name, 0, 0, None, num_lines, num_pixels) grd_s = [] for param in param_s: @@ -261,7 +265,7 @@ def run(data_h5f, param_s, train_tiles, valid_tiles, num_keep_x_tiles=8, tile_wi continue nda = data[:, j_a:j_b, i_a:i_b] - nda = process_cld_opd(param_s, nda) + nda = keep_tile(param_s, nda) if nda is not None: train_tiles.append(nda) @@ -280,7 +284,7 @@ def run(data_h5f, param_s, train_tiles, valid_tiles, num_keep_x_tiles=8, tile_wi continue nda = data[:, j_a:j_b, i_a:i_b] - nda = process_cld_opd(param_s, nda) + nda = keep_tile(param_s, nda) if nda is not None: valid_tiles.append(nda)