diff --git a/modules/deeplearning/cloud_opd_fcn_abi.py b/modules/deeplearning/cloud_opd_fcn_abi.py index 9280e9b07e56a98ac4cbdd02ab35ef8f801a5f34..57182e52662de637821cb0e762226c8f5abe195a 100644 --- a/modules/deeplearning/cloud_opd_fcn_abi.py +++ b/modules/deeplearning/cloud_opd_fcn_abi.py @@ -57,10 +57,10 @@ mean_std_dct.update(mean_std_dct_l2) IMG_DEPTH = 1 -label_param = 'cloud_probability' +label_param = 'cld_opd_dcomp' -params = ['temp_11_0um_nom', 'refl_0_65um_nom', 'refl_submin_ch01', 'refl_submax_ch01', 'refl_substddev_ch01', label_param] -params_i = ['temp_11_0um_nom', 'refl_0_65um_nom', label_param] +params = ['temp_11_0um_nom', 'refl_0_65um_nom', 'refl_submin_ch01', 'refl_submax_ch01', 'refl_substddev_ch01', 'cloud_probability', label_param] +params_i = ['temp_11_0um_nom', 'refl_0_65um_nom', 'cloud_probability', label_param] # data_params_half = ['temp_11_0um_nom'] data_params_half = ['temp_11_0um_nom', 'refl_0_65um_nom'] sub_fields = ['refl_submin_ch01', 'refl_submax_ch01', 'refl_substddev_ch01'] @@ -156,48 +156,25 @@ def get_min_max_std(grd_k): return lo, hi, std, avg -def get_label_data_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) +def get_cldy_frac_opd(cld_prob, opd): + cld_prob = np.where(np.isnan(cld_prob), 0, cld_prob) + cld = np.where(cld_prob < 0.5, 0, 1) + opd[cld == 0] = 0.0 - s[cat_0] = 0 - s[cat_1] = 1 - s[cat_2] = 2 - s[cat_3] = 3 - s[cat_4] = 4 + s = cld[:, 0::4, 0::4] + cld[:, 1::4, 0::4] + cld[:, 2::4, 0::4] + cld[:, 3::4, 0::4] + \ + cld[:, 0::4, 1::4] + cld[:, 1::4, 1::4] + cld[:, 2::4, 1::4] + cld[:, 3::4, 1::4] + \ + cld[:, 0::4, 2::4] + cld[:, 1::4, 2::4] + cld[:, 2::4, 2::4] + cld[:, 3::4, 2::4] + \ + cld[:, 0::4, 3::4] + cld[:, 1::4, 3::4] + cld[:, 2::4, 3::4] + cld[:, 3::4, 3::4] - return s + cldy_opd = np.sum([opd[:, 0::4, 0::4], opd[:, 1::4, 0::4], opd[:, 2::4, 0::4], opd[:, 3::4, 0::4], + opd[:, 0::4, 1::4], opd[:, 1::4, 1::4], opd[:, 2::4, 1::4], opd[:, 3::4, 1::4], + opd[:, 0::4, 2::4], opd[:, 1::4, 2::4], opd[:, 2::4, 2::4], opd[:, 3::4, 2::4], + opd[:, 0::4, 3::4], opd[:, 1::4, 3::4], opd[:, 2::4, 3::4], opd[:, 3::4, 3::4]], axis=0) + s = np.where(s == 0, 1, s) + cldy_opd /= s -def get_label_data(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 < 3) - cat_1 = np.logical_and(s >= 3, s < 14) - cat_2 = np.logical_and(s >= 14, s <= 16) - - s[cat_0] = 0 - s[cat_1] = 1 - s[cat_2] = 2 - - return s + return cldy_opd class SRCNN: @@ -343,10 +320,7 @@ class SRCNN: # ----------------------------------------------------- label = input_label[:, label_idx_i, :, :] label = label[:, y_64, x_64] - if NumClasses == 5: - label = get_label_data_5cat(label) - else: - label = get_label_data(label) + label = get_cldy_frac_opd(label) label = np.where(np.isnan(label), 0, label) label = np.expand_dims(label, axis=3)