diff --git a/modules/aeolus/aeolus_amv.py b/modules/aeolus/aeolus_amv.py index 642d2114e4dc4036b97f9185754e5fafc314e5a9..867a3fe8deed81bd7a61999851c6c400507ed913 100644 --- a/modules/aeolus/aeolus_amv.py +++ b/modules/aeolus/aeolus_amv.py @@ -465,18 +465,15 @@ def run_best_fit_all(): 'gfs.19112812_F012.h5', 'gfs.19112912_F012.h5'] - amvs_list = [] - bf_list = [] - raob_match_list = [] - bf_gfs_list = [] - amv_prod_list = [] + out_list = [] for k, file in enumerate(raob_files): raob_dct, ts = get_raob_dict_cdf(raob_dir+file) m_d = match_amvs_to_raobs(raob_dct, ts, amv_files=amv_files) - amvs_list, bf_list, raob_match_list, bf_gfs_list = run_best_fit(m_d, raob_dct, gfs_dir+gfs_files[k], - amvs_list=amvs_list, bf_list=bf_list, raob_match_list=raob_match_list, bf_gfs_list=bf_gfs_list) - prd_dct = get_product_at_locs(m_d, ts, prd_files, amv_prod_list=amv_prod_list) - analyze2(amvs_list, bf_list, raob_match_list, bf_gfs_list, amv_prod_list) + dct = run_best_fit(m_d, raob_dct, gfs_dir+gfs_files[k]) + out_list.append(dct) + prd_dct = get_product_at_locs(m_d, ts, prd_files) + + #analyze2(amvs_list, bf_list, raob_match_list, bf_gfs_list, amv_prod_list) # amvs = get_amvs(amv_files, ts) # amvs_list.append(amvs) @@ -484,12 +481,12 @@ def run_best_fit_all(): # bf_list.append(bfs) # bin_ranges, bin_pres, bin_spd, bin_dir = analyze2(amvs_list, bf_list, raob_match_list, bf_gfs_list, amv_prod_list) - bin_ranges, bin_pres, bin_spd, bin_dir = compare_amvs_bestfit_all(amvs_list, bf_list, bin_size=100) + # bin_ranges, bin_pres, bin_spd, bin_dir = compare_amvs_bestfit_all(amvs_list, bf_list, bin_size=100) - return bin_ranges, bin_pres, bin_spd, bin_dir + return out_list -def get_product_at_locs(raob_to_amv_dct, ts, files, amv_prod_list=[], filepath=None): +def get_product_at_locs(raob_to_amv_dct, ts, files, filepath=None): keys = list(raob_to_amv_dct.keys()) m_dct = {} @@ -521,7 +518,6 @@ def get_product_at_locs(raob_to_amv_dct, ts, files, amv_prod_list=[], filepath=N aaa[:, k] = param_nd[:, ll[k], cc[k]] m_dct[key] = aaa - amv_prod_list.append(aaa) ds.close() @@ -632,7 +628,8 @@ def run_best_fit2(raob_to_amv_dct, raob_dct, gfs_filename=None): return bfs_dct -def run_best_fit(raob_to_amv_dct, raob_dct, gfs_filename=None, amvs_list=[], bf_list=[], raob_match_list=[], bf_gfs_list=[]): +def run_best_fit(raob_to_amv_dct, raob_dct, gfs_filename=None): + out_dct = {} keys = list(raob_to_amv_dct.keys()) do_gfs_best_fit = False @@ -667,6 +664,9 @@ def run_best_fit(raob_to_amv_dct, raob_dct, gfs_filename=None, amvs_list=[], bf_ amvs = raob_to_amv_dct.get(key) amvs_list.append(amvs) num_amvs = amvs.shape[1] + bf_list = [] + raob_match_list = [] + bf_gfs_list = [] for i in range(num_amvs): amv_lon = amvs[0, i] amv_lat = amvs[1, i] @@ -689,7 +689,9 @@ def run_best_fit(raob_to_amv_dct, raob_dct, gfs_filename=None, amvs_list=[], bf_ bf = best_fit(amv_spd, amv_dir, amv_prs, amv_lat, amv_lon, gfs_spd[key_idx], gfs_dir[key_idx], gfs_press) bf_gfs_list.append(bf) - return amvs_list, bf_list, raob_match_list, bf_gfs_list + out_dct[key] = (np.transpose(amvs, axes=[1, 0]), np.array(bf_list), np.array(raob_match_list), np.array(bf_gfs_list)) + + return out_dct def analyze2(amvs_list, bf_list, raob_match_list, bf_gfs_list, amv_prod_list): @@ -704,6 +706,12 @@ def analyze2(amvs_list, bf_list, raob_match_list, bf_gfs_list, amv_prod_list): amv_prd = np.concatenate(amv_prod_list, axis=1) amv_prd = np.transpose(amv_prd, axes=[1, 0]) + vld = amv_prd[:, 2] > 0 + + #print(np.histogram(amv_prd[:, 0])) + #print(np.histogram(amv_prd[:, 1])) + print(np.histogram(amv_prd[vld, 2], bins=20)) + good_amvs = amvs num_good = good_amvs.shape[0] didx = 6 @@ -1028,7 +1036,7 @@ def analyze2(amvs_list, bf_list, raob_match_list, bf_gfs_list, amv_prod_list): .format(int(x_values[i]), num_pres[i], np.average(np.abs(bin_pres[i])), np.average(bin_pres[i]), np.average(np.abs(bin_spd[i])), np.average(bin_spd[i]), np.average(np.abs(bin_dir[i])), np.average(bin_dir[i]))) - return bin_ranges, bin_pres, bin_spd, bin_dir + #return bin_ranges, bin_pres, bin_spd, bin_dir def compare_amvs_bestfit_all(amvs_list, bfs_list, bin_size=200):