def test_phase_rsl_fast(): # read in the data radar = pyart.io.read_rsl(RSLNAME) # hack to make the radar object appear to only have a single sweep radar.sweep_start_ray_index['data'] = np.array([0]) radar.nsweeps = 1 data = radar.fields['dp_phase_shift']['data'] radar.fields['dp_phase_shift']['data'] = data[:360, :] data = radar.fields['copol_coeff']['data'] radar.fields['copol_coeff']['data'] = data[:360, :] # process phase gates = radar.range['data'][1] - radar.range['data'][0] rge = 10.0 * 1000.0 ng = rge / gates reproc_phase, sob_kdp = phase_proc.phase_proc_lp( radar, 8.6, sys_phase=332.0, overide_sys_phase=True, debug=True, nowrap=ng) # compare to known good data ref_sob_kdp = np.load(SOB_SINGLE) ref_reproc_phase = np.load(PHASE_SINGLE) assert_array_equal(ref_reproc_phase, reproc_phase['data']) assert_array_equal(ref_sob_kdp, sob_kdp['data'])
def test_phase_rsl(): # read in the data radar = pyart.io.read_rsl(RSLNAME) # process phase gates = radar.range['data'][1] - radar.range['data'][0] rge = 10.0 * 1000.0 ng = rge / gates reproc_phase, sob_kdp = phase_proc.phase_proc_lp( radar, 8.6, sys_phase=332.0, overide_sys_phase=True, debug=True, nowrap=ng) # compare to known good data ref_sob_kdp = np.load(SOBNAME) ref_reproc_phase = np.load(PHASENAME) assert_array_equal(ref_reproc_phase, reproc_phase['data']) assert_array_equal(ref_sob_kdp, sob_kdp['data'])
print("done") # process Phase gates = myradar.range['data'][1] - myradar.range['data'][0] rge = 20.0 * 1000.0 ng = rge / gates # append a datetime object mydatetime = netCDF4.num2date(myradar.time['data'][0], myradar.time['units'], calendar=myradar.time['calendar']) mydict = dt_to_dict(mydatetime) mydict.update({'scanmode': {'ppi': 'sur', 'rhi': 'rhi'} [myradar.sweep_mode[0]], 'fac': metadata['facility'], 'name':metadata['instrument_name']}) ofilename = outdir + '%(name)s%(scanmode)scmac%(fac)s.c0.%(year)04d%(month)02d%(day)02d.%(hour)02d%(minute)02d%(second)02d.nc' % mydict reproc_phase, sob_kdp = phase_proc.phase_proc_lp( myradar, params['reflectivity_offset'], sys_phase=params['sys_phase'], overide_sys_phase=params['overide_sys_phase'], debug=True, nowrap=ng) myradar.fields.update({'recalculated_diff_phase': sob_kdp, 'proc_dp_phase_shift': reproc_phase}) #attenuation correction spec_at, cor_z = attenuation.calculate_attenuation( myradar, params['reflectivity_offset'], debug=True, a_coef=0.17) myradar.fields.update({'specific_attenuation': spec_at}) myradar.fields.update({'corrected_reflectivity_horizontal': cor_z}) R = 51.3 * (myradar.fields['specific_attenuation']['data']) ** 0.81 rainrate = copy.deepcopy(myradar.fields['diff_phase']) rainrate['data'] = R rainrate['valid_min'] = 0.0 rainrate['valid_max'] = 400.0 rainrate['standard_name'] = 'rainfall_rate' rainrate['long_name'] = 'rainfall_rate'