From 6d485e07b1e6f393302b7dfb285f0887e8bbe205 Mon Sep 17 00:00:00 2001 From: tomrink <rink@ssec.wisc.edu> Date: Mon, 2 Nov 2020 13:04:05 -0600 Subject: [PATCH] snapshot... --- modules/amv/intercompare.py | 67 ++++++++++++++++++++++++------------- 1 file changed, 44 insertions(+), 23 deletions(-) diff --git a/modules/amv/intercompare.py b/modules/amv/intercompare.py index 60208a15..1cda6083 100644 --- a/modules/amv/intercompare.py +++ b/modules/amv/intercompare.py @@ -69,6 +69,8 @@ amv_qi_idx = amv_hdr_list.index('qi') amv_cqi_idx = amv_hdr_list.index('cqi') amv_qif_idx = amv_hdr_list.index('qif') +amv_centers_list = ['EUM', 'BRZ', 'JMA', 'KMA', 'NOA', 'NWC'] + # AMV inter-compare stuff -------------------------------------------------------- @@ -731,12 +733,12 @@ def direction_difference(dir_a, dir_b): def get_amv_winds_match(dist_threshold=150, qitype=amv_cqi_idx, qival=50, lat_range=[-60, 60]): #----- match all to EUM - amvs_eum = get_amv_nd('/Users/rink/data/amv_intercompare/EUM321_csv.csv') - amvs_brz = get_amv_nd('/Users/rink/data/amv_intercompare/BRZCPTECfin_121_csv.csv') - amvs_jma = get_amv_nd('/Users/rink/data/amv_intercompare/JMA421_csv.csv') - amvs_kma = get_amv_nd('/Users/rink/data/amv_intercompare/KMA521NI_csv.csv') - amvs_noa = get_amv_nd('/Users/rink/data/amv_intercompare/NOA621_csv.csv') - amvs_nwc = get_amv_nd('/Users/rink/data/amv_intercompare/NWC721_csv.csv') + amvs_eum = get_amv_nd('/Users/tomrink/data/amv_intercompare/EUM321_csv.csv') + amvs_brz = get_amv_nd('/Users/tomrink/data/amv_intercompare/BRZCPTECfin_121_csv.csv') + amvs_jma = get_amv_nd('/Users/tomrink/data/amv_intercompare/JMA421_csv.csv') + amvs_kma = get_amv_nd('/Users/tomrink/data/amv_intercompare/KMA521NI_csv.csv') + amvs_noa = get_amv_nd('/Users/tomrink/data/amv_intercompare/NOA621_csv.csv') + amvs_nwc = get_amv_nd('/Users/tomrink/data/amv_intercompare/NWC721_csv.csv') amvs_eum = filter_amvs(amvs_eum, qitype=qitype, qival=qival, lat_range=lat_range) amvs_brz = filter_amvs(amvs_brz, qitype=qitype, qival=qival, lat_range=lat_range) @@ -803,18 +805,36 @@ def get_amv_winds_match(dist_threshold=150, qitype=amv_cqi_idx, qival=50, lat_ra noa_idxs = np.array(noa_idxs) nwc_idxs = np.array(nwc_idxs) - - amvs_all = [] - - amvs_all.append(amvs_eum[eum_idxs, :]) - amvs_all.append(amvs_brz[brz_idxs, :]) - amvs_all.append(amvs_kma[kma_idxs, :]) - amvs_all.append(amvs_jma[jma_idxs, :]) - amvs_all.append(amvs_noa[noa_idxs, :]) - amvs_all.append(amvs_nwc[nwc_idxs, :]) - - return amvs_all - + # amvs_all = [] + # amvs_all.append(amvs_eum[eum_idxs, :]) + # amvs_all.append(amvs_brz[brz_idxs, :]) + # amvs_all.append(amvs_kma[kma_idxs, :]) + # amvs_all.append(amvs_jma[jma_idxs, :]) + # amvs_all.append(amvs_noa[noa_idxs, :]) + # amvs_all.append(amvs_nwc[nwc_idxs, :]) + + amvs_dict = {} + amvs_dict['EUM'] = amvs_eum[eum_idxs, :] + amvs_dict['BRZ'] = amvs_brz[brz_idxs, :] + amvs_dict['KMA'] = amvs_kma[kma_idxs, :] + amvs_dict['JMA'] = amvs_jma[jma_idxs, :] + amvs_dict['NOA'] = amvs_noa[noa_idxs, :] + amvs_dict['NWC'] = amvs_nwc[nwc_idxs, :] + + return amvs_dict + +def run_best_fit_all(amvs_dict, raobs_pathname, dist_threshold=200, min_num_levs=20): + raob_dct = get_raob_dict(raobs_pathname) + print('got raobs') + + bfs_dct = {} + for key in amv_centers_list: + amvs = amvs_dict.get(key) + bfs = run_best_fit(amvs, raob_dct, dist_threshold=dist_threshold, min_num_levs=min_num_levs) + print('done: ', key) + bfs_dct[key] = bfs + + return bfs_dct def best_fit(amv_spd, amv_dir, amv_prs, amv_lat, amv_lon, fcst_spd, fcst_dir, fcst_prs, verbose=False): @@ -1143,9 +1163,7 @@ def get_press_bin_ranges(lop, hip, bin_size=100): return bin_ranges -def analyze_best_fit_all(amvs, bfs, bin_size=200): - num_centers = len(amvs) - +def analyze_best_fit_all(amvs_dct, bfs_dct, bin_size=200): pres_mad = [] pres_bias = [] spd_mad = [] @@ -1153,8 +1171,10 @@ def analyze_best_fit_all(amvs, bfs, bin_size=200): dir_mad = [] dir_bias = [] - for k in range(num_centers): - x_values, bin_pres, num_pres, bin_spd, num_spd, bin_dir, num_dir = analyze_best_fit_single(amvs[k], bfs[k], bin_size=bin_size) + for key in amv_centers_list: + amvs = amvs_dct.get(key) + bfs = bfs_dct.get(key) + x_values, bin_pres, num_pres, bin_spd, num_spd, bin_dir, num_dir = analyze_best_fit_single(amvs, bfs, bin_size=bin_size) pres_mad_c = [] pres_bias_c = [] @@ -1188,6 +1208,7 @@ def analyze_best_fit_single(amvs, bfs, bin_size=200): # keep_idxs = bfs[keep, 0] # keep_idxs = keep_idxs.astype(np.int32) keep_idxs = bfs[:, 0] + keep_idxs = keep_idxs.astype(np.int32) amv_p = amvs[keep_idxs, amv_pres_idx] bf_p = bfs[:, 3] -- GitLab