From 6f6ac7e642317adba35ccb6a335d0afd59a8a658 Mon Sep 17 00:00:00 2001 From: tomrink <rink@ssec.wisc.edu> Date: Tue, 10 Jan 2023 14:48:49 -0600 Subject: [PATCH] snapshot... --- modules/icing/pirep_goes.py | 234 ++++-------------------------------- 1 file changed, 21 insertions(+), 213 deletions(-) diff --git a/modules/icing/pirep_goes.py b/modules/icing/pirep_goes.py index 31610465..51b99f7c 100644 --- a/modules/icing/pirep_goes.py +++ b/modules/icing/pirep_goes.py @@ -2422,138 +2422,6 @@ def tiles_info(filename): print('Icing 6: ', np.sum(iint == 6)) -# def analyze(preds_file, labels, prob_avg, test_file): -# -# if preds_file is not None: -# labels, prob_avg, cm_avg = pickle.load(open(preds_file, 'rb')) -# -# h5f = h5py.File(test_file, 'r') -# nda = h5f['flight_altitude'][:] -# iint = h5f['icing_intensity'][:] -# cld_hgt = h5f['cld_height_acha'][:] -# cld_dz = h5f['cld_geo_thick'][:] -# cld_tmp = h5f['cld_temp_acha'][:] -# -# print('report altitude (m): ', np.histogram(nda, bins=12)) -# -# iint = np.where(iint == -1, 0, iint) -# iint = np.where(iint != 0, 1, iint) -# -# nda[np.logical_and(nda >= 0, nda < 2000)] = 0 -# nda[np.logical_and(nda >= 2000, nda < 4000)] = 1 -# nda[np.logical_and(nda >= 4000, nda < 6000)] = 2 -# nda[np.logical_and(nda >= 6000, nda < 8000)] = 3 -# nda[np.logical_and(nda >= 8000, nda < 15000)] = 4 -# -# print(np.sum(nda == 0), np.sum(nda == 1), np.sum(nda == 2), np.sum(nda == 3), np.sum(nda == 4)) -# print('No icing: ', np.histogram(nda[iint == 0], bins=5)[0]) -# print('---------------------------') -# print('Icing: ', np.histogram(nda[iint == 1], bins=5)[0]) -# print('---------------------------') -# -# print('No Icing(Negative): mean cld_dz, cld_hgt') -# print('Icing(Positive): ", "') -# print('level 0: ') -# print(np.nanmean(cld_dz[(nda == 0) & (iint == 0)]), np.nanmean(cld_hgt[(nda == 0) & (iint == 0)]), np.nanmean(cld_tmp[(nda == 0) & (iint == 0)])) -# print(np.nanmean(cld_dz[(nda == 0) & (iint == 1)]), np.nanmean(cld_hgt[(nda == 0) & (iint == 1)]), np.nanmean(cld_tmp[(nda == 0) & (iint == 1)])) -# print('------------') -# -# print('level 1: ') -# print(np.nanmean(cld_dz[(nda == 1) & (iint == 0)]), np.nanmean(cld_hgt[(nda == 1) & (iint == 0)]), np.nanmean(cld_tmp[(nda == 1) & (iint == 0)])) -# print(np.nanmean(cld_dz[(nda == 1) & (iint == 1)]), np.nanmean(cld_hgt[(nda == 1) & (iint == 1)]), np.nanmean(cld_tmp[(nda == 1) & (iint == 1)])) -# print('------------') -# -# print('level 2: ') -# print(np.nanmean(cld_dz[(nda == 2) & (iint == 0)]), np.nanmean(cld_hgt[(nda == 2) & (iint == 0)]), np.nanmean(cld_tmp[(nda == 2) & (iint == 0)])) -# print(np.nanmean(cld_dz[(nda == 2) & (iint == 1)]), np.nanmean(cld_hgt[(nda == 2) & (iint == 1)]), np.nanmean(cld_tmp[(nda == 2) & (iint == 1)])) -# print('------------') -# -# print('level 3: ') -# print(np.nanmean(cld_dz[(nda == 3) & (iint == 0)]), np.nanmean(cld_hgt[(nda == 3) & (iint == 0)]), np.nanmean(cld_tmp[(nda == 3) & (iint == 0)])) -# print(np.nanmean(cld_dz[(nda == 3) & (iint == 1)]), np.nanmean(cld_hgt[(nda == 3) & (iint == 1)]), np.nanmean(cld_tmp[(nda == 3) & (iint == 1)])) -# print('------------') -# -# print('level 4: ') -# print(np.nanmean(cld_dz[(nda == 4) & (iint == 0)]), np.nanmean(cld_hgt[(nda == 4) & (iint == 0)]), np.nanmean(cld_tmp[(nda == 4) & (iint == 0)])) -# print(np.nanmean(cld_dz[(nda == 4) & (iint == 1)]), np.nanmean(cld_hgt[(nda == 4) & (iint == 1)]), np.nanmean(cld_tmp[(nda == 4) & (iint == 1)])) -# print('----------------------------------------------------------') -# print('----------------------------------------------------------') -# -# if prob_avg is None: -# return -# -# preds = np.where(prob_avg > 0.5, 1, 0) -# -# true_ice = (labels == 1) & (preds == 1) -# false_ice = (labels == 0) & (preds == 1) -# -# true_no_ice = (labels == 0) & (preds == 0) -# false_no_ice = (labels == 1) & (preds == 0) -# -# print('Total (Positive/Icing Prediction: ') -# print('True icing: ', np.histogram(nda[true_ice], bins=5)[0]) -# print('-------------------------') -# print('False no icing (False Negative/Miss): ', np.histogram(nda[false_no_ice], bins=5)[0]) -# print('By flight level:') -# print('No Icing(Negative): mean cld_dz, cld_hgt') -# print('Icing(Positive): ", "') -# print('level 0: ') -# print(np.nanmean(cld_dz[(nda == 0) & false_no_ice]), np.nanmean(cld_hgt[(nda == 0) & false_no_ice]), np.nanmean(cld_tmp[(nda == 0) & false_no_ice])) -# print(np.nanmean(cld_dz[(nda == 0) & true_ice]), np.nanmean(cld_hgt[(nda == 0) & true_ice]), np.nanmean(cld_tmp[(nda == 0) & true_ice])) -# print('------------') -# -# print('level 1: ') -# print(np.nanmean(cld_dz[(nda == 1) & false_no_ice]), np.nanmean(cld_hgt[(nda == 1) & false_no_ice]), np.nanmean(cld_tmp[(nda == 1) & false_no_ice])) -# print(np.nanmean(cld_dz[(nda == 1) & true_ice]), np.nanmean(cld_hgt[(nda == 1) & true_ice]), np.nanmean(cld_tmp[(nda == 1) & true_ice])) -# print('------------') -# -# print('level 2: ') -# print(np.nanmean(cld_dz[(nda == 2) & false_no_ice]), np.nanmean(cld_hgt[(nda == 2) & false_no_ice]), np.nanmean(cld_tmp[(nda == 2) & false_no_ice])) -# print(np.nanmean(cld_dz[(nda == 2) & true_ice]), np.nanmean(cld_hgt[(nda == 2) & true_ice]), np.nanmean(cld_tmp[(nda == 2) & true_ice])) -# print('------------') -# -# print('level 3: ') -# print(np.nanmean(cld_dz[(nda == 3) & false_no_ice]), np.nanmean(cld_hgt[(nda == 3) & false_no_ice]), np.nanmean(cld_tmp[(nda == 3) & false_no_ice])) -# print(np.nanmean(cld_dz[(nda == 3) & true_ice]), np.nanmean(cld_hgt[(nda == 3) & true_ice]), np.nanmean(cld_tmp[(nda == 3) & true_ice])) -# print('------------') -# -# print('level 4: ') -# print(np.nanmean(cld_dz[(nda == 4) & false_no_ice]), np.nanmean(cld_hgt[(nda == 4) & false_no_ice]), np.nanmean(cld_tmp[(nda == 4) & false_no_ice])) -# print(np.nanmean(cld_dz[(nda == 4) & true_ice]), np.nanmean(cld_hgt[(nda == 4) & true_ice]), np.nanmean(cld_tmp[(nda == 4) & true_ice])) -# print('---------------------------------------------------') -# print('---------------------------------------------------') -# -# print('Total (Negative/No Icing Prediction: ') -# print('True no icing: ', np.histogram(nda[true_no_ice], bins=5)[0]) -# print('-------------------------') -# print('* False icing (False Positive/False Alarm) *: ', np.histogram(nda[false_ice], bins=5)[0]) -# print('-------------------------') -# -# print('level 0: ') -# print(np.nanmean(cld_dz[(nda == 0) & false_ice]), np.nanmean(cld_hgt[(nda == 0) & false_ice]), np.nanmean(cld_tmp[(nda == 0) & false_ice])) -# print(np.nanmean(cld_dz[(nda == 0) & true_no_ice]), np.nanmean(cld_hgt[(nda == 0) & true_no_ice]), np.nanmean(cld_tmp[(nda == 0) & true_no_ice])) -# print('------------') -# -# print('level 1: ') -# print(np.nanmean(cld_dz[(nda == 1) & false_ice]), np.nanmean(cld_hgt[(nda == 1) & false_ice]), np.nanmean(cld_tmp[(nda == 1) & false_ice])) -# print(np.nanmean(cld_dz[(nda == 1) & true_no_ice]), np.nanmean(cld_hgt[(nda == 1) & true_no_ice]), np.nanmean(cld_tmp[(nda == 1) & true_no_ice])) -# print('------------') -# -# print('level 2: ') -# print(np.nanmean(cld_dz[(nda == 2) & false_ice]), np.nanmean(cld_hgt[(nda == 2) & false_ice]), np.nanmean(cld_tmp[(nda == 2) & false_ice])) -# print(np.nanmean(cld_dz[(nda == 2) & true_no_ice]), np.nanmean(cld_hgt[(nda == 2) & true_no_ice]), np.nanmean(cld_tmp[(nda == 2) & true_no_ice])) -# print('------------') -# -# print('level 3: ') -# print(np.nanmean(cld_dz[(nda == 3) & false_ice]), np.nanmean(cld_hgt[(nda == 3) & false_ice]), np.nanmean(cld_tmp[(nda == 3) & false_ice])) -# print(np.nanmean(cld_dz[(nda == 3) & true_no_ice]), np.nanmean(cld_hgt[(nda == 3) & true_no_ice]), np.nanmean(cld_tmp[(nda == 3) & true_no_ice])) -# print('------------') -# -# print('level 4: ') -# print(np.nanmean(cld_dz[(nda == 4) & false_ice]), np.nanmean(cld_hgt[(nda == 4) & false_ice]), np.nanmean(cld_tmp[(nda == 4) & false_ice])) -# print(np.nanmean(cld_dz[(nda == 4) & true_no_ice]), np.nanmean(cld_hgt[(nda == 4) & true_no_ice]), np.nanmean(cld_tmp[(nda == 4) & true_no_ice])) -# - def analyze(preds_file, labels, prob_avg, test_file): if preds_file is not None: @@ -2573,42 +2441,20 @@ def analyze(preds_file, labels, prob_avg, test_file): iint = np.where(iint == -1, 0, iint) iint = np.where(iint != 0, 1, iint) - # nda[np.logical_and(nda >= 0, nda < 2000)] = 0 - # nda[np.logical_and(nda >= 2000, nda < 4000)] = 1 - # nda[np.logical_and(nda >= 4000, nda < 15000)] = 2 - - nda[np.logical_and(nda >= 0, nda < 3000)] = 0 - nda[np.logical_and(nda >= 3000, nda < 6000)] = 1 - # nda[np.logical_and(nda >= 5200, nda < 6000)] = 2 + nda[np.logical_and(nda >= 300, nda < 4000)] = 0 + nda[np.logical_and(nda >= 4000, nda < 7000)] = 1 + nda[np.logical_and(nda >= 7000, nda < 15000)] = 2 # nda[np.logical_and(nda >= 6000, nda < 8000)] = 3 # nda[np.logical_and(nda >= 8000, nda < 15000)] = 4 print(np.sum(nda == 0), np.sum(nda == 1), np.sum(nda == 2)) - print('No icing: ', np.sum((iint == 0) & (nda == 0)), np.sum((iint == 0) & (nda == 1))) + print('No icing: ', np.sum((iint == 0) & (nda == 0)), np.sum((iint == 0) & (nda == 1)), np.sum((iint == 0) & (nda == 2))) print('---------------------------') - print('Icing: ', np.sum((iint == 1) & (nda == 0)), np.sum((iint == 1) & (nda == 1))) + print('Icing: ', np.sum((iint == 1) & (nda == 0)), np.sum((iint == 1) & (nda == 1)), np.sum((iint == 1) & (nda == 2))) print('---------------------------') - print('No Icing(Negative): mean cld_dz, cld_hgt') - print('Icing(Positive): ", "') - print('level 0: ') - print(np.nanmean(cld_dz[(nda == 0) & (iint == 0)]), np.nanmean(cld_hgt[(nda == 0) & (iint == 0)]), np.nanmean(cld_tmp[(nda == 0) & (iint == 0)])) - print(np.nanmean(cld_dz[(nda == 0) & (iint == 1)]), np.nanmean(cld_hgt[(nda == 0) & (iint == 1)]), np.nanmean(cld_tmp[(nda == 0) & (iint == 1)])) - print('------------') - - print('level 1: ') - print(np.nanmean(cld_dz[(nda == 1) & (iint == 0)]), np.nanmean(cld_hgt[(nda == 1) & (iint == 0)]), np.nanmean(cld_tmp[(nda == 1) & (iint == 0)])) - print(np.nanmean(cld_dz[(nda == 1) & (iint == 1)]), np.nanmean(cld_hgt[(nda == 1) & (iint == 1)]), np.nanmean(cld_tmp[(nda == 1) & (iint == 1)])) - print('------------') - - # print('level 2: ') - # print(np.nanmean(cld_dz[(nda == 2) & (iint == 0)]), np.nanmean(cld_hgt[(nda == 2) & (iint == 0)]), np.nanmean(cld_tmp[(nda == 2) & (iint == 0)])) - # print(np.nanmean(cld_dz[(nda == 2) & (iint == 1)]), np.nanmean(cld_hgt[(nda == 2) & (iint == 1)]), np.nanmean(cld_tmp[(nda == 2) & (iint == 1)])) - # print('------------') - print('----------------------------------------------------------') print('----------------------------------------------------------') - # return flt_alt[iint == 0], flt_alt[iint == 1] if prob_avg is None: return @@ -2621,91 +2467,53 @@ def analyze(preds_file, labels, prob_avg, test_file): true_no_ice = (labels == 0) & (preds == 0) false_no_ice = (labels == 1) & (preds == 0) - # tp = true_ice - # tn = true_no_ice - # fp = false_ice - # fn = false_no_ice - tp_0 = np.sum(true_ice & (nda == 0)) tp_1 = np.sum(true_ice & (nda == 1)) + tp_2 = np.sum(true_ice & (nda == 2)) tn_0 = np.sum(true_no_ice & (nda == 0)) tn_1 = np.sum(true_no_ice & (nda == 1)) + tn_2 = np.sum(true_no_ice & (nda == 2)) fp_0 = np.sum(false_ice & (nda == 0)) fp_1 = np.sum(false_ice & (nda == 1)) + fp_2 = np.sum(false_ice & (nda == 2)) fn_0 = np.sum(false_no_ice & (nda == 0)) fn_1 = np.sum(false_no_ice & (nda == 1)) + fn_2 = np.sum(false_no_ice & (nda == 2)) recall_0 = tp_0 / (tp_0 + fn_0) recall_1 = tp_1 / (tp_1 + fn_1) + recall_2 = tp_2 / (tp_2 + fn_2) precision_0 = tp_0 / (tp_0 + fp_0) precision_1 = tp_1 / (tp_1 + fp_1) + precision_2 = tp_2 / (tp_2 + fp_2) mcc_0 = ((tp_0 * tn_0) - (fp_0 * fn_0)) / np.sqrt((tp_0 + fp_0) * (tp_0 + fn_0) * (tn_0 + fp_0) * (tn_0 + fn_0)) mcc_1 = ((tp_1 * tn_1) - (fp_1 * fn_1)) / np.sqrt((tp_1 + fp_1) * (tp_1 + fn_1) * (tn_1 + fp_1) * (tn_1 + fn_1)) - - - # precision = true_ice / (true_ice + false_ice) - # recall = true_ice / (true_ice + false_no_ice) - # f1 = 2 * (precision * recall) / (precision + recall) - # tp = true_ice - # tn = true_no_ice - # fp = false_ice - # fn = false_no_ice - # mcc = ((tp * tn) - (fp * fn)) / np.sqrt((tp + fp) * (tp + fn) * (tn + fp) * (tn + fn)) + mcc_2 = ((tp_2 * tn_2) - (fp_2 * fn_2)) / np.sqrt((tp_2 + fp_2) * (tp_2 + fn_2) * (tn_2 + fp_2) * (tn_2 + fn_2)) print('Total (Positive/Icing Prediction: ') - print('True icing: ', np.sum(true_ice & (nda == 0)), np.sum(true_ice & (nda == 1))) + print('True icing: ', np.sum(true_ice & (nda == 0)), np.sum(true_ice & (nda == 1)), np.sum(true_ice & (nda == 2))) print('-------------------------') - print('False no icing (False Negative/Miss): ', np.sum(false_no_ice & (nda == 0)), np.sum(false_no_ice & (nda == 1))) - # print('By flight level:') - # print('No Icing(Negative): mean cld_dz, cld_hgt') - # print('Icing(Positive): ", "') - # print('level 0: ') - # print(np.nanmean(cld_dz[(nda == 0) & false_no_ice]), np.nanmean(cld_hgt[(nda == 0) & false_no_ice]), np.nanmean(cld_tmp[(nda == 0) & false_no_ice])) - # print(np.nanmean(cld_dz[(nda == 0) & true_ice]), np.nanmean(cld_hgt[(nda == 0) & true_ice]), np.nanmean(cld_tmp[(nda == 0) & true_ice])) - # print('------------') - # - # print('level 1: ') - # print(np.nanmean(cld_dz[(nda == 1) & false_no_ice]), np.nanmean(cld_hgt[(nda == 1) & false_no_ice]), np.nanmean(cld_tmp[(nda == 1) & false_no_ice])) - # print(np.nanmean(cld_dz[(nda == 1) & true_ice]), np.nanmean(cld_hgt[(nda == 1) & true_ice]), np.nanmean(cld_tmp[(nda == 1) & true_ice])) - # print('------------') - # - # # print('level 2: ') - # # print(np.nanmean(cld_dz[(nda == 2) & false_no_ice]), np.nanmean(cld_hgt[(nda == 2) & false_no_ice]), np.nanmean(cld_tmp[(nda == 2) & false_no_ice])) - # # print(np.nanmean(cld_dz[(nda == 2) & true_ice]), np.nanmean(cld_hgt[(nda == 2) & true_ice]), np.nanmean(cld_tmp[(nda == 2) & true_ice])) - # # print('------------') - + print('False no icing (False Negative/Miss): ', np.sum(false_no_ice & (nda == 0)), np.sum(false_no_ice & (nda == 1)), np.sum(false_no_ice & (nda == 2))) print('---------------------------------------------------') print('---------------------------------------------------') print('Total (Negative/No Icing Prediction: ') - print('True no icing: ', np.sum(true_no_ice & (nda == 0)), np.sum(true_no_ice & (nda == 1))) + print('True no icing: ', np.sum(true_no_ice & (nda == 0)), np.sum(true_no_ice & (nda == 1)), np.sum(true_no_ice & (nda == 2))) print('-------------------------') - print('* False icing (False Positive/False Alarm) *: ', np.sum(false_ice & (nda == 0)), np.sum(false_ice & (nda == 1))) + print('* False icing (False Positive/False Alarm) *: ', np.sum(false_ice & (nda == 0)), np.sum(false_ice & (nda == 1)), np.sum(false_ice & (nda == 2))) print('-------------------------') - print('Recall: ', recall_0, recall_1) - print('Precision: ', precision_0, precision_1) - print('MCC: ', mcc_0, mcc_1) + print('Recall: ', recall_0, recall_1, recall_2) + print('Precision: ', precision_0, precision_1, precision_2) + print('MCC: ', mcc_0, mcc_1, mcc_2) + + return labels[nda == 0], prob_avg[nda == 0], labels[nda == 1], prob_avg[nda == 1], labels[nda == 2], prob_avg[nda == 2] - # print('level 0: ') - # print(np.nanmean(cld_dz[(nda == 0) & false_ice]), np.nanmean(cld_hgt[(nda == 0) & false_ice]), np.nanmean(cld_tmp[(nda == 0) & false_ice])) - # print(np.nanmean(cld_dz[(nda == 0) & true_no_ice]), np.nanmean(cld_hgt[(nda == 0) & true_no_ice]), np.nanmean(cld_tmp[(nda == 0) & true_no_ice])) - # print('------------') - # - # print('level 1: ') - # print(np.nanmean(cld_dz[(nda == 1) & false_ice]), np.nanmean(cld_hgt[(nda == 1) & false_ice]), np.nanmean(cld_tmp[(nda == 1) & false_ice])) - # print(np.nanmean(cld_dz[(nda == 1) & true_no_ice]), np.nanmean(cld_hgt[(nda == 1) & true_no_ice]), np.nanmean(cld_tmp[(nda == 1) & true_no_ice])) - # print('------------') - # - # # print('level 2: ') - # # print(np.nanmean(cld_dz[(nda == 2) & false_ice]), np.nanmean(cld_hgt[(nda == 2) & false_ice]), np.nanmean(cld_tmp[(nda == 2) & false_ice])) - # # print(np.nanmean(cld_dz[(nda == 2) & true_no_ice]), np.nanmean(cld_hgt[(nda == 2) & true_no_ice]), np.nanmean(cld_tmp[(nda == 2) & true_no_ice])) - # # print('------------') def get_training_parameters(day_night='DAY', l1b_andor_l2='both'): -- GitLab