diff --git a/modules/aeolus/aeolus_amv.py b/modules/aeolus/aeolus_amv.py index 986b91a6559613d9c4753191d56655aab8253549..da90148971474ef208c8ecfe0acc175559e1cb11 100644 --- a/modules/aeolus/aeolus_amv.py +++ b/modules/aeolus/aeolus_amv.py @@ -5,7 +5,7 @@ import numpy as np import xarray as xr from netCDF4 import Dataset, Dimension, Variable from aeolus.geos_nav import GEOSNavigation -from util.util import haversine_np, LatLonTuple +from util.util import haversine_np, LatLonTuple, GenericException from amv.intercompare import best_fit, bin_data_by, get_press_bin_ranges, spd_dir_from_uv, uv_from_spd_dir, \ direction_difference, run_best_fit_gfs import math @@ -22,17 +22,12 @@ num_elems = 5424 num_lines = 5424 -class MyGenericException(Exception): - def __init__(self, message): - self.message = message - - class AMVFiles: def __init__(self, files_path, file_time_span, pattern, band='14'): self.flist = glob.glob(files_path + pattern) if len(self.flist) == 0: - raise MyGenericException('no matching files found in: ' + files_path) + raise GenericException('no matching files found in: ' + files_path) self.band = band self.ftimes = [] self.span_seconds = datetime.timedelta(minutes=file_time_span).seconds @@ -585,71 +580,71 @@ def get_product_at_lat_lons(files, ts, lons, lats, filepath=None): return np.transpose(aaa, axes=[1, 0]) -def run_best_fit2(raob_to_amv_dct, raob_dct, gfs_filename=None): - bfs_dct ={} - keys = list(raob_to_amv_dct.keys()) - - do_gfs_best_fit = False - gfs_press = None - gfs_spd = None - gfs_dir = None - - if gfs_filename is not None: - locs = np.array(keys) - do_gfs_best_fit = True - xr_dataset = xr.open_dataset(gfs_filename) - gfs_press = xr_dataset['pressure levels'] - gfs_press = gfs_press.values - gfs_press = gfs_press[::-1] - - uv_wind = get_vert_profile_s(xr_dataset, ['u-wind', 'v-wind'], locs[:, 1], locs[:, 0], method='nearest') - uv_wind = uv_wind.values - wspd, wdir = spd_dir_from_uv(uv_wind[0, :, :], uv_wind[1, :, :]) - wspd = wspd.magnitude - wdir = wdir.magnitude - gfs_spd = wspd[:, ::-1] - gfs_dir = wdir[:, ::-1] - - for key_idx, key in enumerate(keys): - bf_list = [] - raob_match_list = [] - bf_gfs_list = [] - - raob = raob_dct.get(key) - raob_prs = raob[:, 0] - raob_spd = raob[:, 2] - raob_dir = raob[:, 3] - amvs = raob_to_amv_dct.get(key) - num_amvs = amvs.shape[1] - for i in range(num_amvs): - amv_lon = amvs[0, i] - amv_lat = amvs[1, i] - amv_prs = amvs[4, i] - amv_spd = amvs[5, i] - amv_dir = amvs[6, i] - - bf = best_fit(amv_spd, amv_dir, amv_prs, amv_lat, amv_lon, raob_spd, raob_dir, raob_prs) - bf_list.append(bf) - - pdiff = amv_prs - raob_prs - lev_idx = np.argmin(np.abs(pdiff)) - if np.abs(pdiff[lev_idx]) > 100.0: - tup = (raob_spd[lev_idx], raob_dir[lev_idx], raob_prs[lev_idx], -9) - else: - tup = (raob_spd[lev_idx], raob_dir[lev_idx], raob_prs[lev_idx], 0) - raob_match_list.append(tup) - - if do_gfs_best_fit: - 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) - - bf_nd = np.array(bf_list) - raob_match_nd = np.array(raob_match_list) - bf_gfs_nd = np.array(bf_gfs_list) - - bfs_dct[key] = (bf_nd, raob_match_nd, bf_gfs_nd) - - return bfs_dct +# def run_best_fit2(raob_to_amv_dct, raob_dct, gfs_filename=None): +# bfs_dct ={} +# keys = list(raob_to_amv_dct.keys()) +# +# do_gfs_best_fit = False +# gfs_press = None +# gfs_spd = None +# gfs_dir = None +# +# if gfs_filename is not None: +# locs = np.array(keys) +# do_gfs_best_fit = True +# xr_dataset = xr.open_dataset(gfs_filename) +# gfs_press = xr_dataset['pressure levels'] +# gfs_press = gfs_press.values +# gfs_press = gfs_press[::-1] +# +# uv_wind = get_vert_profile_s(xr_dataset, ['u-wind', 'v-wind'], locs[:, 1], locs[:, 0], method='nearest') +# uv_wind = uv_wind.values +# wspd, wdir = spd_dir_from_uv(uv_wind[0, :, :], uv_wind[1, :, :]) +# wspd = wspd.magnitude +# wdir = wdir.magnitude +# gfs_spd = wspd[:, ::-1] +# gfs_dir = wdir[:, ::-1] +# +# for key_idx, key in enumerate(keys): +# bf_list = [] +# raob_match_list = [] +# bf_gfs_list = [] +# +# raob = raob_dct.get(key) +# raob_prs = raob[:, 0] +# raob_spd = raob[:, 2] +# raob_dir = raob[:, 3] +# amvs = raob_to_amv_dct.get(key) +# num_amvs = amvs.shape[1] +# for i in range(num_amvs): +# amv_lon = amvs[0, i] +# amv_lat = amvs[1, i] +# amv_prs = amvs[4, i] +# amv_spd = amvs[5, i] +# amv_dir = amvs[6, i] +# +# bf = best_fit(amv_spd, amv_dir, amv_prs, amv_lat, amv_lon, raob_spd, raob_dir, raob_prs) +# bf_list.append(bf) +# +# pdiff = amv_prs - raob_prs +# lev_idx = np.argmin(np.abs(pdiff)) +# if np.abs(pdiff[lev_idx]) > 100.0: +# tup = (raob_spd[lev_idx], raob_dir[lev_idx], raob_prs[lev_idx], -9) +# else: +# tup = (raob_spd[lev_idx], raob_dir[lev_idx], raob_prs[lev_idx], 0) +# raob_match_list.append(tup) +# +# if do_gfs_best_fit: +# 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) +# +# bf_nd = np.array(bf_list) +# raob_match_nd = np.array(raob_match_list) +# bf_gfs_nd = np.array(bf_gfs_list) +# +# bfs_dct[key] = (bf_nd, raob_match_nd, bf_gfs_nd) +# +# return bfs_dct def run_best_fit(raob_to_amv_dct, raob_dct, gfs_filename=None): diff --git a/modules/amv/aeolus.py b/modules/amv/aeolus.py index 4d9c6e76f371eda9585f4c8e910cf34ceed2bb23..c406492fb4e8c80bbf18733bb935eb1e04da661f 100644 --- a/modules/amv/aeolus.py +++ b/modules/amv/aeolus.py @@ -16,11 +16,6 @@ from util.util import bin_data_by, get_bin_ranges import math -class MyGenericException(Exception): - def __init__(self, message): - self.message = message - - datapath = '/apollo/cloud/personal/stevew/IWW15/G16/fulldisk/CLAVRX' datadirs = ['20190825', '20190826', '20190827', '20190828', '20190829', '20190830', '20190831', '20190901', '20190902', '20190903', '20190904', '20190905'] diff --git a/modules/deeplearning/amv_raob.py b/modules/deeplearning/amv_raob.py index cdd9682f407ea3f90e15bde48314b6945978b938..2a5f47f7fdae02cc03663d7552cae0856f0cffce 100644 --- a/modules/deeplearning/amv_raob.py +++ b/modules/deeplearning/amv_raob.py @@ -47,11 +47,6 @@ H08_lat_range = [-78, 78] H08_lon_range = [62, 218] -class MyGenericException(Exception): - def __init__(self, message): - self.message = message - - amv_hdr_list = ['lat', 'lon', 'tbox', 'sbox', 'spd', 'dir', 'pres', 'lowl', 'mspd', 'mdir', 'alb', 'corr', 'tmet', 'perr', 'qi', 'cqi', 'qif'] diff --git a/modules/util/util.py b/modules/util/util.py index 5c1314d42f2e455d5258010e6090b98d81e4ff7a..7c7bb2869eb3539375da8d504185db1698a3caf2 100644 --- a/modules/util/util.py +++ b/modules/util/util.py @@ -6,7 +6,7 @@ from collections import namedtuple LatLonTuple = namedtuple('LatLonTuple', ['lat', 'lon']) -class MyGenericException(Exception): +class GenericException(Exception): def __init__(self, message): self.message = message