diff --git a/modules/icing/pirep_goes.py b/modules/icing/pirep_goes.py index 976198a2311287deb38768683c012b6c374eeb44..d1d7fae73824469eb89b502c502b1aa452cb54b4 100644 --- a/modules/icing/pirep_goes.py +++ b/modules/icing/pirep_goes.py @@ -1772,8 +1772,8 @@ def tiles_info(filename): print('Icing 6: ', np.sum(iint == 6)) -def analyze(preds_file, truth_file='/Users/tomrink/data/icing_ml/tiles_202109240000_202111212359_l2_test_v3_DAY.h5'): - h5f = h5py.File(truth_file, 'r') +def analyze(preds_file, test_file='/Users/tomrink/data/icing_ml/tiles_202109240000_202111212359_l2_test_v3_DAY.h5'): + h5f = h5py.File(test_file, 'r') nda = h5f['flight_altitude'][:] iint = h5f['icing_intensity'][:] cld_hgt = h5f['cld_height_acha'][:] @@ -1823,6 +1823,9 @@ def analyze(preds_file, truth_file='/Users/tomrink/data/icing_ml/tiles_202109240 print('----------------------------') print('-----------------------------') + if preds_file is None: + return + labels, prob_avg, cm_avg = pickle.load(open(preds_file, 'rb')) preds = np.where(prob_avg > 0.5, 1, 0) @@ -1830,68 +1833,69 @@ def analyze(preds_file, truth_file='/Users/tomrink/data/icing_ml/tiles_202109240 true_ice = (labels == 1) & (preds == 1) false_ice = (labels == 0) & (preds == 1) - print('True icing: ', np.histogram(nda[true_ice], bins=5)[0]) - print('---------------------------') - print('False icing: ', np.histogram(nda[false_ice], bins=5)[0]) - print('---------------------------') - - true_no_ice = (labels == 0) & (preds == 0) - false_no_ice = (labels == 1) & (preds == 0) - - print('True no icing: ', np.histogram(nda[true_no_ice], bins=5)[0]) - print('---------------------------') - print('False no icing: ', np.histogram(nda[false_no_ice], bins=5)[0]) - print('---------------------------') - + print('Total (Positive/Icing Prediction: ') + print('True icing: ', np.histogram(nda[true_ice], bins=5)[0]) + print('-------------------------') + print('False icing (False Positive/Alarm): ', np.histogram(nda[false_ice], bins=5)[0]) + print('By flight level:') print('level 0: ') - print(np.nanmean(cld_dz[(nda == 0) & false_no_ice]), np.nanmean(cld_hgt[(nda == 0) & false_no_ice])) - print(np.nanmean(cld_dz[(nda == 0) & true_no_ice]), np.nanmean(cld_hgt[(nda == 0) & true_no_ice])) + print(np.nanmean(cld_dz[(nda == 0) & false_ice]), np.nanmean(cld_hgt[(nda == 0) & false_ice])) + print(np.nanmean(cld_dz[(nda == 0) & true_ice]), np.nanmean(cld_hgt[(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])) - print(np.nanmean(cld_dz[(nda == 1) & true_no_ice]), np.nanmean(cld_hgt[(nda == 1) & true_no_ice])) + print(np.nanmean(cld_dz[(nda == 1) & false_ice]), np.nanmean(cld_hgt[(nda == 1) & false_ice])) + print(np.nanmean(cld_dz[(nda == 1) & true_ice]), np.nanmean(cld_hgt[(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])) - print(np.nanmean(cld_dz[(nda == 2) & true_no_ice]), np.nanmean(cld_hgt[(nda == 2) & true_no_ice])) + print(np.nanmean(cld_dz[(nda == 2) & false_ice]), np.nanmean(cld_hgt[(nda == 2) & false_ice])) + print(np.nanmean(cld_dz[(nda == 2) & true_ice]), np.nanmean(cld_hgt[(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])) - print(np.nanmean(cld_dz[(nda == 3) & true_no_ice]), np.nanmean(cld_hgt[(nda == 3) & true_no_ice])) + print(np.nanmean(cld_dz[(nda == 3) & false_ice]), np.nanmean(cld_hgt[(nda == 3) & false_ice])) + print(np.nanmean(cld_dz[(nda == 3) & true_ice]), np.nanmean(cld_hgt[(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])) - print(np.nanmean(cld_dz[(nda == 4) & true_no_ice]), np.nanmean(cld_hgt[(nda == 4) & true_no_ice])) + print(np.nanmean(cld_dz[(nda == 4) & false_ice]), np.nanmean(cld_hgt[(nda == 4) & false_ice])) + print(np.nanmean(cld_dz[(nda == 4) & true_ice]), np.nanmean(cld_hgt[(nda == 4) & true_ice])) + print('-------------') + print('-------------') - print('----------------------------') + true_no_ice = (labels == 0) & (preds == 0) + false_no_ice = (labels == 1) & (preds == 0) + + print('Total (Negative/No Icing Prediction: ') + print('True no icing: ', np.histogram(nda[true_no_ice], bins=5)[0]) + print('-------------------------') + print('* False no icing (False Negative/Miss) *: ', np.histogram(nda[false_no_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])) - print(np.nanmean(cld_dz[(nda == 0) & true_ice]), np.nanmean(cld_hgt[(nda == 0) & true_ice])) + print(np.nanmean(cld_dz[(nda == 0) & false_no_ice]), np.nanmean(cld_hgt[(nda == 0) & false_no_ice])) + print(np.nanmean(cld_dz[(nda == 0) & true_no_ice]), np.nanmean(cld_hgt[(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])) - print(np.nanmean(cld_dz[(nda == 1) & true_ice]), np.nanmean(cld_hgt[(nda == 1) & true_ice])) + print(np.nanmean(cld_dz[(nda == 1) & false_no_ice]), np.nanmean(cld_hgt[(nda == 1) & false_no_ice])) + print(np.nanmean(cld_dz[(nda == 1) & true_no_ice]), np.nanmean(cld_hgt[(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])) - print(np.nanmean(cld_dz[(nda == 2) & true_ice]), np.nanmean(cld_hgt[(nda == 2) & true_ice])) + print(np.nanmean(cld_dz[(nda == 2) & false_no_ice]), np.nanmean(cld_hgt[(nda == 2) & false_no_ice])) + print(np.nanmean(cld_dz[(nda == 2) & true_no_ice]), np.nanmean(cld_hgt[(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])) - print(np.nanmean(cld_dz[(nda == 3) & true_ice]), np.nanmean(cld_hgt[(nda == 3) & true_ice])) + print(np.nanmean(cld_dz[(nda == 3) & false_no_ice]), np.nanmean(cld_hgt[(nda == 3) & false_no_ice])) + print(np.nanmean(cld_dz[(nda == 3) & true_no_ice]), np.nanmean(cld_hgt[(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])) - print(np.nanmean(cld_dz[(nda == 4) & true_ice]), np.nanmean(cld_hgt[(nda == 4) & true_ice])) + print(np.nanmean(cld_dz[(nda == 4) & false_no_ice]), np.nanmean(cld_hgt[(nda == 4) & false_no_ice])) + print(np.nanmean(cld_dz[(nda == 4) & true_no_ice]), np.nanmean(cld_hgt[(nda == 4) & true_no_ice])) def get_training_parameters(day_night='DAY', l1b_andor_l2='BOTH'):