In [ ]:
<center><h1> Notebook for processing one file</h1>
*Scott Collis, Jonathan Helmus, Kirk North, Tim Lang*
</center>

In [1]:
#needs to be running under pyart35 environment
import pyart
from matplotlib import pyplot as plt
import matplotlib
import numpy as np
from scipy import ndimage, signal, integrate
import time
import copy
import netCDF4
import skfuzzy as fuzz
import datetime
import platform
import fnmatch
import os
%matplotlib inline


## You are using the Python ARM Radar Toolkit (Py-ART), an open source
## library for working with weather radar data.
##
## If you use this software to prepare a publication, please cite:
##
##     JJ Helmus and SM Collis, JORS 2016, doi: 10.5334/jors.119 

In [5]:
os.environ.keys()
#os.environ['DYLD_LIBRARY_PATH']


Out[5]:
KeysView(environ({'DISPLAY': '/private/tmp/com.apple.launchd.1Z7Rw5OZ4y/org.macosforge.xquartz:0', 'SSH_AUTH_SOCK': '/private/tmp/com.apple.launchd.djbWw4kd4w/Listeners', '__CF_USER_TEXT_ENCODING': '0x57A95B9B:0x0:0x0', 'LSCOLORS': 'Gxfxcxdxbxegedabagacad', 'CONDA_PREFIX': '/Users/scollis/anaconda/envs/pyart35', 'XPC_FLAGS': '0x0', 'USER': 'scollis', 'XPC_SERVICE_NAME': '0', 'CONDA_DEFAULT_ENV': 'pyart35', 'ZSH': '/Users/scollis/.oh-my-zsh', 'SHELL': '/bin/zsh', 'LC_CTYPE': 'en_US.UTF-8', 'TERM_PROGRAM': 'Apple_Terminal', 'Apple_PubSub_Socket_Render': '/private/tmp/com.apple.launchd.4DQHApYHHb/Render', 'LOGNAME': 'scollis', 'TERM_SESSION_ID': '683226A2-A581-4E41-A4FB-B31B6B9CBA19', 'OLDPWD': '/Users/scollis', 'MPLBACKEND': 'module://ipykernel.pylab.backend_inline', 'PATH': '/Users/scollis/anaconda/envs/pyart35/bin:/Users/scollis/anaconda/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/texbin', '_': '/Users/scollis/anaconda/envs/pyart35/bin/jupyter', 'TMPDIR': '/var/folders/_y/mnq6xy3j6zlgnl_kk55wqm7nbtkpwv/T/', 'HOME': '/Users/scollis', 'LANG': 'en_US.UTF-8', 'CONDA_PATH_BACKUP': '/Users/scollis/anaconda/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/texbin', 'LESS': '-R', 'GIT_PAGER': 'cat', 'PWD': '/Users/scollis', 'PAGER': 'cat', 'CONDA_PS1_BACKUP': '${ret_status} %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)', 'SHLVL': '1', 'TERM': 'xterm-color', 'PS1': '(pyart35) ${ret_status} %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)', 'CLICOLOR': '1', 'JPY_PARENT_PID': '38488', 'TERM_PROGRAM_VERSION': '387'}))

In [2]:
my_system = platform.system()
if my_system == 'Darwin':
    top = '/data/sample_sapr_data/sgpstage/sur/'
    soundings_dir = '/data/sample_sapr_data/sgpstage/interp_sonde/'
elif my_system == 'Linux':
    top = '/lcrc/group/earthscience/radar/sgpstage/sur/'
    soundings_dir = '/lcrc/group/earthscience/radar/interp_sonde/'

In [3]:
radar = pyart.io.read('/data/sample_sapr_data/sgpstage/sur/20110520/110635.mdv')
print(radar.fields.keys())


dict_keys(['cross_correlation_ratio', 'velocity', 'differential_reflectivity', 'normalized_coherent_power', 'specific_differential_phase', 'reflectivity', 'differential_phase', 'spectrum_width'])

In [4]:
i_end = 975
radar.range['data']=radar.range['data'][0:i_end]
for key in radar.fields.keys():
    radar.fields[key]['data']= radar.fields[key]['data'][:, 0:i_end]
radar.ngates = i_end

In [6]:
display = pyart.graph.RadarMapDisplay(radar)
fig = plt.figure(figsize = [10,8])
display.plot_ppi_map('reflectivity', sweep = 2, resolution = 'i',
                    vmin = -10, vmax = 64, mask_outside = False,
                    cmap = pyart.graph.cm.NWSRef)


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-6-0a319b7605a4> in <module>()
      1 
----> 2 display = pyart.graph.RadarMapDisplay(radar)
      3 fig = plt.figure(figsize = [10,8])
      4 display.plot_ppi_map('reflectivity', sweep = 2, resolution = 'i',
      5                     vmin = -10, vmax = 64, mask_outside = False,

NameError: name 'radar' is not defined

In [5]:
#guess a whole heap of data
radar_start_date = netCDF4.num2date(radar.time['data'][0], radar.time['units'])
print(radar_start_date)
ymd_string = datetime.datetime.strftime(radar_start_date, '%Y%m%d')
hms_string = datetime.datetime.strftime(radar_start_date, '%H%M%S')
print(ymd_string, hms_string)


2011-05-20 11:01:00
20110520 110100

In [6]:
sonde_pattern = datetime.datetime.strftime(radar_start_date,'sgpinterpolatedsondeC1.c1.%Y%m%d.*.cdf')
all_sonde_files = os.listdir(soundings_dir)
sonde_name = fnmatch.filter(all_sonde_files, sonde_pattern)[0]
print(sonde_pattern,sonde_name)


sgpinterpolatedsondeC1.c1.20110520.*.cdf sgpinterpolatedsondeC1.c1.20110520.000000.cdf

In [ ]:
interp_sonde = netCDF4.Dataset(os.path.join( soundings_dir, sonde_name))
temperatures = interp_sonde.variables['temp'][:]
times = interp_sonde.variables['time'][:]
heights = interp_sonde.variables['height'][:]
my_profile = pyart.retrieve.fetch_radar_time_profile(interp_sonde, radar)
info_dict = {'long_name': 'Sounding temperature at gate',
             'standard_name' : 'temperature',
             'valid_min' : -100,
             'valid_max' : 100,
             'units' : 'degrees Celsius'}
z_dict, temp_dict = pyart.retrieve.map_profile_to_gates( my_profile['temp'], 
                                         my_profile['height']*1000.0, 
                                         radar)
radar.add_field('sounding_temperature', temp_dict, replace_existing = True)
radar.add_field('height', z_dict, replace_existing = True)
snr = pyart.retrieve.calculate_snr_from_reflectivity(radar)
radar.add_field('SNR', snr, replace_existing = True)

In [ ]:
phidp, kdp = pyart.correct.phase_proc_lp(radar, 0.0, debug=True, fzl=3500.0)


Unfolding
/Users/scollis/anaconda/envs/pyart35/lib/python3.5/site-packages/pyart/correct/phase_proc.py:188: RuntimeWarning: invalid value encountered in sqrt
  noise = smooth_and_trim(np.sqrt((line - signal) ** 2), window_len=wl)
Exec time:  14.490247964859009
Doing  0
/Users/scollis/anaconda/envs/pyart35/lib/python3.5/site-packages/pyart/correct/phase_proc.py:589: MaskedArrayFutureWarning: setting an item on a masked array which has a shared mask will not copy the mask and also change the original mask array in the future.
Check the NumPy 1.11 release notes for more information.
  sct[np.where(sct < 0.0)] = 0.0

In [ ]: