Browse Source

Removed unused script directory

main
Bill Ladwig 8 years ago
parent
commit
17cfd4fbbd
  1. 291
      script/plot2d
  2. 32
      script/somplot
  3. 0
      script/td_test.py
  4. 143
      script/wrftest.py

291
script/plot2d

@ -1,291 +0,0 @@
#!/usr/bin/env python
import traceback
import sys
import sqlite3
from datetime import datetime as dt
import numpy as n
import matplotlib
matplotlib.use('agg')
import matplotlib.pyplot as plt
#from wrf.core import Constants
#from wrf.var.temp import calc_temp
#from wrf.plot.matplotlib.defaults import (get_basemap, get_default_map_opts,
# get_null_opts)
#from wrf.plot.matplotlib.helper import (add_plot_info_text, plot_map,
# plot_contourf)
#__all__ = ["plot_2d"]
def get_basemap(wrfnc):
#TODO: handle multiple projections
lat2d = wrfnc.variables["XLAT"][0,:,:]
lon2d = wrfnc.variables["XLONG"][0,:,:]
ny = len(wrfnc.dimensions["south_north"])
nx = len(wrfnc.dimensions["west_east"])
nz = len(wrfnc.dimensions["bottom_top"])
dx = wrfnc.DX
dy = wrfnc.DY
center_lat = wrfnc.CEN_LAT
center_lon = wrfnc.CEN_LON
true_lat1 = wrfnc.TRUELAT1
true_lat2 = wrfnc.TRUELAT2
basemap = Basemap(projection="lcc",
lat_0=center_lat,
lon_0=center_lon,
lat_1=true_lat1,
lat_2=true_lat2,
llcrnrlon=lon2d[0,0],
llcrnrlat=lat2d[0,0],
urcrnrlon=lon2d[ny-1, nx-1],
urcrnrlat=lat2d[ny-1, nx-1],
resolution='i')
return basemap
def get_default_map_opts():
landcolor = (204/255.0, 204/255.0, 153/255.0)
oceancolor = (102/255.0, 204/255.0, 255/255.0)
return MapOptions(
coastargs = {"linewidth":1.0, "linestyle":'solid', "color":'k'},
countryargs = {"linewidth":0.5, "linestyle":'solid', "color":'k'},
stateargs = {"linewidth":0.5, "linestyle":'solid', "color":'k'},
mapboundaryargs = {"color":'k', "linewidth":1.0,
"fill_color":oceancolor},
continentfillargs = {"color":landcolor, "lake_color":oceancolor,
"zorder":0})
def get_null_opts():
return FilledContourOptions(fcontourargs={},
colorbarargs={"location" : "bottom",
"size" : "5%", "pad" : "2%",
"extend" : "both"})
def add_plot_info_text(ax,
top_left_text="", top_right_text="",
bot_left_text="", bot_right_text=""):
plt.ioff()
if top_left_text != "":
plt.text(0.005,.995,top_left_text,
bbox=dict(facecolor="white"),
horizontalalignment="left",
verticalalignment="top",
transform = ax.transAxes,
fontsize=10)
if top_right_text != "":
plt.text(.995,.995,top_right_text,
bbox=dict(facecolor="white"),
horizontalalignment="right",
verticalalignment="top",
transform = ax.transAxes,
fontsize=10)
if bot_left_text != "":
plt.text(0.005,0.005,bot_left_text,
bbox=dict(facecolor="white"),
horizontalalignment="left",
verticalalignment="bottom",
transform = ax.transAxes,
fontsize=10)
if bot_right_text != "":
plt.text(.995,0.005,bot_right_text,
bbox=dict(facecolor="white"),
horizontalalignment="right",
verticalalignment="bottom",
transform = ax.transAxes,
fontsize=10)
def plot_map(basemap, mapoptions):
plt.ioff()
if mapoptions.mapboundaryargs is not None:
basemap.drawmapboundary(**mapoptions.mapboundaryargs)
if mapoptions.continentfillargs is not None:
basemap.fillcontinents(**mapoptions.continentfillargs)
if mapoptions.coastargs is not None:
basemap.drawcoastlines(**mapoptions.coastargs)
if mapoptions.countryargs is not None:
basemap.drawcountries(**mapoptions.countryargs)
if mapoptions.stateargs is not None:
basemap.drawstates(**mapoptions.stateargs)
if mapoptions.countyargs is not None:
basemap.drawcounties(**mapoptions.countyargs)
if mapoptions.riverargs is not None:
basemap.drawrivers(**mapoptions.riverargs)
def plot_contourf(x,y,data,basemap, contourfoptions):
plt.ioff()
cs1 = None
if contourfoptions.contourargs is not None:
cs1 = basemap.contour(x,y,data,**contourfoptions.contourargs)
cs2 = None
if contourfoptions.fcontourargs is not None:
cs2 = basemap.contourf(x,y,data,**contourfoptions.fcontourargs)
cb = None
if contourfoptions.colorbarargs is not None:
cb = basemap.colorbar(cs2, **contourfoptions.colorbarargs)
if contourfoptions.labelargs is not None:
plt.clabel(cs1, **contourfoptions.labelargs)
return cs1, cs2, cb
def get_null_opts():
return FilledContourOptions(fcontourargs={},
colorbarargs={"location" : "bottom",
"size" : "5%", "pad" : "2%",
"extend" : "both"})
class MapOptions(object):
def __init__(self,
coastargs = None,
countyargs = None,
countryargs = None,
riverargs = None,
stateargs = None,
mapboundaryargs = None,
continentfillargs = None):
self.coastargs = coastargs
self.countyargs = countyargs
self.countryargs = countryargs
self.riverargs = riverargs
self.stateargs = stateargs
self.mapboundaryargs = mapboundaryargs
self.continentfillargs = continentfillargs
def plot_2d(wrfnc, varname=None, outfile=None, title=None,
map_opts=None, plot_opts=None,
top_left_info="", top_right_info="",
bot_left_info="", bot_right_info="",
wks_type="png", var=None,
time_in=0):
try:
plt.ioff()
print "generating %s.%s" % (outfile, wks_type)
if var is not None:
field = var
elif varname is not None:
field = wrfnc.variables[varname][time_in,:,:]
lat2d = wrfnc.variables["XLAT"][time_in,:,:]
lon2d = wrfnc.variables["XLONG"][time_in,:,:]
times = wrfnc.variables["Times"][time_in,:]
model_time = "".join(times)
start_date = dt.strptime(model_time, "%Y-%m-%d_%H:%M:%S")
ny = len(wrfnc.dimensions["south_north"])
nx = len(wrfnc.dimensions["west_east"])
nz = len(wrfnc.dimensions["bottom_top"])
fig = plt.figure(figsize=(8,8), dpi=200)
ax = fig.add_axes([0.1,0.1,0.8,0.8])
bm = get_basemap(wrfnc)
if map_opts is None:
map_opts = get_default_map_opts()
if plot_opts is None:
plot_opts = get_null_opts()
x,y = bm(lon2d, lat2d)
plot_map(bm,map_opts)
plt.xticks(rotation=70)
tplot = plot_contourf(x,y,field,bm,plot_opts)
add_plot_info_text(ax,
top_left_info, top_right_info,
bot_left_info, bot_right_info)
ax.set_title(title,fontdict={"fontsize" : 20})
plt.savefig("%s.%s" % (outfile, wks_type))
plt.clf()
plt.close(fig)
except:
# print the stack trace since it will be lost when used in a
# multiprocessing worker.
print traceback.format_exc()
raise
finally:
sys.stdout.flush()
def main():
parser = argparse.ArgumentParser(description="Generate meteorological "
"plots for a specific data file")
parser.add_argument("-v", "--var", required=True,
help="variable name")
parser.add_argument("-f", "--filename", required=True,
help="WRF file to plot")
parser.add_argument("-o", "--outdir", default=".", required=False,
help="output directory for images")
parser.add_argument("-l", "--levels", required=False, type=float,
nargs="+",
default=None,
help=("the start, end, and increment for contour levels"
" as a list of items with spaces between them"
"example: 1 10 2 "))
parser.add_argument("-c", "--customlevels", required=False, type=float,
nargs="+",
default=None,
help=("a list of space delimited contour levels"
"example: 1 2 3 4 5 19 28 200 "))
args = parser.parse_args()
if not os.path.exists(args.filename):
raise RuntimeError ("%s not found" % args.filename)
if not os.path.exists(args.outdir):
os.makedirs(args.outdir)
basename = os.path.basename(args.filename)
wrfnc = NetCDF(args.filename, mode='r')
outfile = os.path.join(args.outdir, domain, args.var, "%s.%s" % (basename,args.var))
if not os.path.exists(os.path.dirname(outfile)):
os.makedirs(os.path.dirname(outfile))
if args.levels is not None or args.customlevels is not None:
plot_opts = get_null_opts()
if args.levels is not None:
if len(args.levels) < 2 or len(args.levels) > 3:
raise RuntimeError("levels argument is invalid")
plot_opts.fcontourargs["levels"] = [x for x in n.arange(args.levels[0],
args.levels[1],
args.levels[2])]
plot_opts.fcontourargs["extend"] = "both"
elif args.customlevels is not None:
plot_opts.fcontourargs["levels"] = args.customlevels
plot_opts.fcontourargs["extend"] = "both"
else:
plot_opts = None
plot_2d(wrfnc, args.var, outfile, "%s"%args.var,
plot_opts = plot_opts)
if __name__ == "__main__":
main()

32
script/somplot

@ -1,32 +0,0 @@
#!/usr/bin/env python
import os
import argparse
import Ngl
from wrf.system import SOMMemberPlotSystem
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Generate meteorological "
"plots for SOM members")
parser.add_argument("-c", "--casename", required=True,
help="the case name (e.g. 'site1-october')")
parser.add_argument("-s", "--somid", required=True,
help="the SOM ID to use (e.g. 'SOM001')")
parser.add_argument("-p", "--caseparent", required=False,
default="/projectw/reanalyses/1.2",
help=("the case parent directory "
"[default: /projectw/reanalyses/1.2]"))
args = parser.parse_args()
parentdir = os.path.expanduser(os.path.expandvars(args.caseparent))
casename = args.casename
somid = args.somid
sys = SOMMemberPlotSystem(parentdir, casename, somid)
try:
sys.run()
finally:
Ngl.end()

0
script/td_test.py

143
script/wrftest.py

@ -1,143 +0,0 @@
import wrf.var as w
import numpy as n
from netCDF4 import Dataset as NetCDF
def main():
wrfnc = NetCDF("/Users/bladwig/wrfout_d03_2003-05-07_09:00:00")
# Cape NO RESULTS FOR LCL OR LFC
cape, cin, lcl, lfc = w.getvar(wrfnc, "cape2d")
#cape, cin = w.getvar(wrfnc, "cape3d")
print n.amax(cape)
print n.amax(cin)
print n.amax(lcl)
print n.amax(lfc)
# DBZ
dbz = w.getvar(wrfnc, "dbz")
print n.amax(dbz)
# DP
dp = w.getvar(wrfnc, "dp", units="f")
print n.amax(dp)
dp2 = w.getvar(wrfnc, "dp2m", units="f")
print n.amax(dp2)
# Height
ht = w.getvar(wrfnc, "height", msl=False, units="m")
print n.amax(ht)
geopt = w.getvar(wrfnc, "geopt")
print n.amax(geopt)
# Helicity
srh = w.getvar(wrfnc, "srh")
print n.amax(srh)
uhel = w.getvar(wrfnc, "uhel")
print n.amax(uhel)
# Omega (Not sure if this is correct, and units aren't C)
omega = w.getvar(wrfnc, "omega")
print n.amax(omega)
# Precip Water (NOT SURE)
pw = w.getvar(wrfnc, "pw")
print n.amax(pw)
# RH
rh = w.getvar(wrfnc, "rh")
print n.amax(rh)
rh2 = w.getvar(wrfnc, "rh2m")
print n.amax(rh2)
# SLP
slp = w.getvar(wrfnc, "slp", units="hpa")
print n.amax(slp)
# TEMP
t = w.getvar(wrfnc, "temp", units="f")
print n.amax(t)
# ETH VALUES SEEM HIGH....
eth = w.getvar(wrfnc, "theta_e", units="k")
print n.amax(eth)
tv = w.getvar(wrfnc, "tv", units="k")
print n.amax(tv)
# Note: NCL says this is in 'C', but appears to be 'K'
tw = w.getvar(wrfnc, "tw", units="f")
print n.amax(tw)
# WIND
umet,vmet = w.getvar(wrfnc, "uvmet", units="kts")
print n.amax(umet)
print n.amax(vmet)
umet10,vmet10 = w.getvar(wrfnc, "uvmet10", units="kts")
print n.amax(umet10)
print n.amax(vmet10)
# TERRAIN
ter = w.getvar(wrfnc, "terrain", units="dm")
print n.amax(ter)
# VORTICITY
avo = w.getvar(wrfnc, "avo")
print n.amax(avo)
pvo = w.getvar(wrfnc, "pvo")
print n.amax(pvo)
# LAT/LON
lat = w.getvar(wrfnc, "lat")
print n.amax(lat)
print n.amin(lat)
lon = w.getvar(wrfnc, "lon")
print n.amax(lon)
print n.amin(lon)
i,j = w.get_ij(wrfnc, -97.516540, 35.467787)
print i,j
lon, lat = w.get_ll(wrfnc, 33.5, 33.5)
print lon, lat
#ETA -- Result somewhat different than geopt
z = w.convert_eta(wrfnc, msl=False, units="m")
print n.amax(z)
diff = n.abs(z - ht)/ht * 100.0
print n.amin(diff), n.amax(diff)
if __name__ == "__main__":
main()
Loading…
Cancel
Save