def omfbyo(data=None,return_deps=False): deps = ['omf','obs'] omf = data[ncd.var_to_var('omf')] obs = data[ncd.var_to_var('obs')] val = omf/obs return(val)
def spd_fcst(data=None,return_deps=False): deps = ['u_obs','v_obs','u_omf','v_omf'] u_bkg = data[ncd.var_to_var('u_obs')] - data[ncd.var_to_var('u_omf')] v_bkg = data[ncd.var_to_var('v_obs')] - data[ncd.var_to_var('v_omf')] spd_b = (u_bkg**2 + v_bkg**2) ** (0.5) val = spd_b return(val)
def dist(data=None,return_deps=False): from scipy.spatial.distance import cdist deps = ['lon','lat'] if (data['centroid_lat'] is None or data['centroid_lon'] is None): raise Exception('Distance calculations require a focal lon/lat to be set by ncd.set_centroid(lon,lat)') d = ( (data[ncd.var_to_var('lat')] - data['centroid_lat']) ** 2 + (data[ncd.var_to_var('lon')] - data['centroid_lon']) ** 2 ) ** (0.5) # d = cdist(np.transpose( [data[ncd.var_to_var('lat'), data[ncd.var_to_var('lon')] ), [data['centroid_lat', data['centroid_lon'], 'euclidean') return(d)
def dir_obs(data=None,return_deps=False): deps = ['u_obs','v_obs'] u_obs = data[ncd.var_to_var('u_obs')] v_obs = data[ncd.var_to_var('v_obs')] spd_o = (u_obs**2 + v_obs**2) ** (0.5) dir_o = spd_o * 0.0 + 999. msk = (spd_o > 0.0) dir_o[msk] = np.arctan2(u_obs[msk],v_obs[msk]) * 180.0 / np.pi val = dir_o return(val)
def dir_fcst(data=None,return_deps=False): deps = ['u_obs','v_obs','u_omf','v_omf'] u_bkg = data[ncd.var_to_var('u_obs')] - data[ncd.var_to_var('u_omf')] v_bkg = data[ncd.var_to_var('v_obs')] - data[ncd.var_to_var('v_omf')] spd_b = (u_bkg**2 + v_bkg**2) ** (0.5) dir_b = spd_b*0.0 + 999. msk = (spd_b > 0.0) dir_b[msk] = np.arctan2(u_bkg[msk],v_bkg[msk]) * 180.0 / np.pi val = dir_b return(val)
def rand(data=None,return_deps=False): import numpy.random as rnd deps = ['lon'] nv = data[ncd.var_to_var('lon')].size val = rnd.rand(nv) return(val)
def amb(data=None, return_deps=False): deps = ['omf', 'oma'] val = data[ncd.var_to_var('omf')] - data[ncd.var_to_var('oma')] return (val)
def sigobyf(data=None,return_deps=False): deps = ['omf','obs','sigo'] val = data[ncd.var_to_var('sigo')] / (data[ncd.var_to_var('obs')] - data[ncd.var_to_var('omf')]) return(val)
def angord(data=None,return_deps=False): deps = ['BC_angord'] val = np.sum(data[ncd.var_to_var('BC_angord')],axis=1) return(val)
def spd_obs(data=None,return_deps=False): deps = ['u_obs','v_obs'] spd_o = (data[ncd.var_to_var('u_obs')]**2 + data[ncd.var_to_var('v_obs')]**2) ** (0.5) val = spd_o return(val)
def anl(data=None,return_deps=False): deps = ['oma','obs'] val = data[ncd.var_to_var('obs')]-data[ncd.var_to_var('oma')] return(val)
def fcst(data=None,return_deps=False): deps = ['omf','obs'] val = data[ncd.var_to_var('obs')]-data[ncd.var_to_var('omf')] return(val)
def bc(data=None,return_deps=False): deps = ['omfbc','omfnbc'] val = data[ncd.var_to_var('omfbc')]-data[ncd.var_to_var('omfnbc')] return(val)