diff --git a/modules/util/abi_surfrad.py b/modules/util/abi_surfrad.py index 1a4f1178b2831092fdfe5b1b7b9966d5a2f14d46..4fe2d133c1daaf3be16345eb014f40221f10ad93 100644 --- a/modules/util/abi_surfrad.py +++ b/modules/util/abi_surfrad.py @@ -17,8 +17,9 @@ snow_class_name = group_name_m + 'snow_class' # params_i = [group_name_i+'temp_ch38', group_name_i+'refl_ch01', group_name_i+target_param] params_i = [group_name_i+'temp_ch38', group_name_i+'refl_ch01', group_name_i+'temp_stddev3x3_ch31', group_name_i+'refl_stddev3x3_ch01', group_name_i+target_param] + +# params_m = [group_name_m+'temp_ch38', group_name_m+'refl_ch01', group_name_m+'refl_submin_ch01', group_name_m+'refl_submax_ch01', group_name_m+'refl_substddev_ch01', group_name_m+target_param] params_m = [group_name_m+'temp_ch38', group_name_m+'refl_ch01', group_name_m+'refl_submin_ch01', group_name_m+'refl_submax_ch01', group_name_m+'refl_substddev_ch01', group_name_m+'temp_stddev3x3_ch31', group_name_m+'refl_stddev3x3_ch01', group_name_m+target_param] - # group_name_m+'refl_submax_ch01', group_name_m+'refl_substddev_ch01', group_name_m+target_param] param_idx_m = params_m.index(group_name_m + target_param) param_idx_i = params_i.index(group_name_i + target_param) @@ -39,6 +40,7 @@ def keep_tile(p_idx, tile): if target_param == 'cloud_probability': grd_k = process_cld_prob(grd_k) + # grd_k = process_cloud_frac(grd_k) elif 'cld_opd_dcomp' in target_param: grd_k = process_cld_opd(grd_k) @@ -62,6 +64,34 @@ def process_cld_prob(grd_k): return grd_k +def process_cloud_frac(grd_k): + pass + + +def get_cloud_frac_5cat(grd_k): + grd_k = np.where(np.isnan(grd_k), 0, grd_k) + grd_k = np.where(grd_k < 0.5, 0, 1) + + s = grd_k[:, 0::4, 0::4] + grd_k[:, 1::4, 0::4] + grd_k[:, 2::4, 0::4] + grd_k[:, 3::4, 0::4] + \ + grd_k[:, 0::4, 1::4] + grd_k[:, 1::4, 1::4] + grd_k[:, 2::4, 1::4] + grd_k[:, 3::4, 1::4] + \ + grd_k[:, 0::4, 2::4] + grd_k[:, 1::4, 2::4] + grd_k[:, 2::4, 2::4] + grd_k[:, 3::4, 2::4] + \ + grd_k[:, 0::4, 3::4] + grd_k[:, 1::4, 3::4] + grd_k[:, 2::4, 3::4] + grd_k[:, 3::4, 3::4] + + cat_0 = np.logical_and(s >= 0, s < 2) + cat_1 = np.logical_and(s >= 2, s < 6) + cat_2 = np.logical_and(s >= 6, s < 11) + cat_3 = np.logical_and(s >= 11, s < 15) + cat_4 = np.logical_and(s >= 15, s <= 16) + + s[cat_0] = 0 + s[cat_1] = 1 + s[cat_2] = 2 + s[cat_3] = 3 + s[cat_4] = 4 + + return s + + def process_cld_opd(grd_k): keep = np.invert(np.isnan(grd_k)) num_keep = np.sum(keep)