WRF Python
WRF Python
Release 1.2.0
Bill Ladwig
1 Documentation 3
1.1 What’s New . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3 Table of Available Diagnostics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4 How To Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.5 Plotting Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
1.6 API Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
1.7 Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
1.8 Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
1.9 Citation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
1.10 License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
1.11 Tutorials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
i
ii
wrf-python Documentation, Release 1.2.0
A collection of diagnostic and interpolation routines for use with output from the Weather Research and Forecasting
(WRF-ARW) Model.
This package provides over 30 diagnostic calculations, several interpolation routines, and utilities to help with plotting
via cartopy, basemap, or PyNGL. The functionality is similar to what is provided by the NCL WRF package.
When coupled with either matplotlib or PyNGL, users can create plots like this:
Contents 1
wrf-python Documentation, Release 1.2.0
2 Contents
CHAPTER 1
Documentation
1.1.1 Releases
v1.2.0
• Release 1.2.0
• Previous versions of wrf-python promoted the strings used in xarray (e.g. name, attributes) to Unicode strings
for Python 2.7. This caused problems when porting examples for PyNGL to use wrf-python in Python 3.x. All
strings are now the native string type for the Python version being used. While this change should be transparent
to most users, any users that worked with the xarray name or attribute values on Python 2.7 may run in to string
related errors, so we’ve decided to bump the major version number.
v1.1.3
• Release 1.1.3
• Fixed/Enhanced the cloud top temperature diagnostic.
– Optical depth was not being calculated correctly when cloud ice mixing ratio was not available.
– Fixed an indexing bug that caused crashes on Windows, but should have been crashing on all plat-
forms.
– Users can now specify if they want cloud free regions to use fill values, rather than the default behavior
of using the surface temperature.
– Users can now specify the optical depth required to trigger the cloud top temperature calculation.
However, the default value of 1.0 should be sufficient for most users.
• Added ‘th’ alias for the theta product.
• Fixed a crash issue related to updraft helicity when a dictionary is used as the input.
3
wrf-python Documentation, Release 1.2.0
v1.1.2
• Release 1.1.2
• Fix OpenMP directive issue with cloud top temperature.
v1.1.1
• Release 1.1.1
• Added script for building on Cheyenne with maxed out Intel settings, which also required a patch for
numpy.distutils.
• Fixed a few unicode characters hiding in a docstring that were causing problems on Cheyenne, and also building
the docs with Sphinx on Python 2.x.
• Fix issue with np.amax not working with xarray on Cheyenne, causing an error with the mdbz product.
• Fix cape_2d private variable bug when running with multiple CPUs.
v1.1.0
• Release 1.1.0
• Computational routines now support multiple cores using OpenMP. See Using OpenMP for details on how to
use this new feature.
• The CAPE routines should be noticeably faster, even in the single threaded case (thank you supreethms1809!).
• wrf.getvar() now works correctly with non-gridded NetCDF variables
• The cloud fraction diagnostic has changed:
– Users can now select their own cloud threshold levels, and can choose between a vertical coordinate
defined as height (AGL), height (MSL), or pressure.
– The default vertical coordinate type has been changed to be height (AGL). This ensures that clouds
appear over mountainous regions. If you need the old behavior, set the vert_type argument to ‘pres-
sure’.
– Fixed a bug involving the cloud threshold search algorithm, where if the surface was higher than the
threshold for a cloud level, the algorithm would use whatever was there before (uninitialized variable
bug). This caused some interesting visualization issues when plotted. Now, whenever the surface is
above a cloud level threshold, a fill value is used to indicate that data is unavailable for that location.
• The cartopy object for LambertConformal should now work correctly in the southern hemisphere.
• Fixed a bug with the PolarStereographic projection missing a geobounds argument (thank you hanschen!).
• Renamed the modules containing the ‘get_product’ routines used by wrf.getvar() to avoid naming conflicts
with the raw computational routine names. Users should be using wrf.getvar() instead of these routines,
but for those that imported the ‘get_product’ routines directly, you will need to modify your code.
• Fixed a uniqueness issue with the internal coordinate cache that was causing crashes when input data is changed
to a different file in a jupyter notebook cell.
• Added code to better support building wheels on Windows (thank you letmaik!)
4 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
v1.0.5
• Release 1.0.5
• Reduced the CI test file sizes by half.
v1.0.4
• Release 1.0.4
• Fix warnings with CI tests which were caused by fill values being written as NaN to the NetCDF result file.
• Added the __eq__ operator to the WrfProj projection base class.
• Fixed array order issue when using the raw CAPE routine with 1D arrays.
v1.0.3
• Relase 1.0.3
• Fixed an issue with the cartopy Mercator subclass where the xlimits were being calculated to the same value (or
very close), causing blank plots.
v1.0.2
• Release 1.0.2
• Fixed issue with the wspd_wdir product types when sequences of files are used.
v1.0.1
• Release 1.0.1
• Fixed issue with initialization of PolarStereographic and LatLon map projection objects.
• Fixed issue where XTIME could be included in the coordinate list of a variable, but the actual XTIME variable
could be missing. NCL allows this, so wrf-python should as well.
v1.0.0
• Release 1.0.0.
• Fixed issue with not being able to set the thread-local coordinate cache to 0 to disable it. Also, the cache will
now correctly resize itself when the size is reduced to less than its current setting.
• Fixed an issue with the ‘0000-00-00 00:00:00’ time used in geo_em files causing crashes due to the invalid time.
The time is now set to numpy.datetime64(‘NaT’).
• Fixed issue with wrf.cape_3d not working correctly with a single column of data.
v1.0b3
• Beta release 3.
• Improvements made for conda-forge integration testing.
• Fixed an incorrectly initialized variable issue with vinterp. This issue mainly impacts the unit tests for continu-
ous integration testing with conda-forge, since the data set used for these tests is heavily cropped.
• Back-ported the inspect.BoundArguments.apply_defaults so that Python 3.4 works. Windows users that want to
try out wrf-python with Python 3.4 can use the bladwig conda channel to get it.
v1.0b2
• Beta release 2.
• xarray 0.9 no longer includes default index dimensions in the coordinate mappings. This was causing a crash in
the routines that cause a reduction in dimension shape, mainly the interpolation routines. This has been fixed.
• Documentation updated to show the new output from xarray.
v1.0b1
• Beta release 1.
• Added more packaging boilerplate.
• Note: Currently unable to build with Python 3.5 on Windows, due to issues with distutils, numpy distutils, and
mingw compiler. Will attempt to find a workaround before the next release. Windows users should use Python
2.7 or Python 3.4 for now.
v1.0a3
• Alpha release 3.
• Added docstrings.
• The mapping API has changed.
6 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
v1.0.0
• Currently unable to build on Windows with Python 3.5+ using open source mingw compiler. The mingwpy
project is working on resolving the incompatibilities between mingw and Visual Studio 2015 that was used to
build Python 3.5+. Numpy 1.13 also has improved f2py support for Python 3.5+ on Windows, so this will be
revisited when it is released.
1.2 Installation
1.2. Installation 7
wrf-python Documentation, Release 1.2.0
Note: If you use conda to install wrf-python on a supercomputer like Yellowstone or Cheyenne, we recommend that
you do not load any python related modules via the ‘module load’ command. The packages installed by the ‘module
load’ system will not play nicely with packages installed via conda.
Further, some systems will install python packages to a ~/.local directory, which will be found by the miniconda
python interpreter and cause various import problems. If you have a ~/.local directory, we strongly suggest renaming
it (mv ~/.local ~/.local_backup).
On Yellowstone, wrf-python can also be installed using the module load system, if this is preferred over using conda.
Unfortunately, because wrf-python requires newer dependencies, it is not available using the ‘all-python-libs’ module,
so many of the dependencies need to be manually installed (most are for xarray).
Also, make sure you are running in the gnu/4.8.2 compiler environment or you will get import errors for a missing
libquadmath library when you go to import wrf-python.
To install:
Installation via source code will require a Fortran and C compiler in order to run f2py. You can get them here.
The source code is available via github:
https://github.com/NCAR/wrf-python
Or PyPI:
https://pypi.python.org/pypi/wrf-python
To install, if you do not need OpenMP support, change your working directory to the wrf-python source directory and
run:
$ pip install .
Beginning with wrf-python 1.1, OpenMP is supported, but preprocessing the ompgen.F90 file is required, which also
requires running f2py to build the .pyf file. To simplify this process, you can use the build scripts in the build_scripts
directory as a guide, or just call the script directly.
Below is a sample from a build script for GNU compiler with OpenMP enabled:
8 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
cd ../fortran/build_help
python sub_sizes.py
cd ..
cd ..
pip install .
Beginning with numpy 1.14, f2py extensions can now be built using the MSVC compiler and mingw gfortran compiler.
Numpy 1.14 is required to build wrf-python for Python 3.5+.
Note: If you are building on a supercomputer and receiving linker related errors (e.g. missing symbols, undefined
references, etc), you probably need to unset the LDFLAGS environment variable. System administrators on super-
computing systems often define LDFLAGS for you so that you don’t need to worry about where libraries like NetCDF
are installed. Unfortunately, this can cause problems with the numpy.distutils build system. To fix, using the build
command from above:
10 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
12 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
1.4.1 Introduction
The API for wrf-python can be summarized as a variable computation/extraction routine, several interpolation routines,
and a few plotting helper utilities. The API is kept as simple as possible to help minimize the learning curve for new
programmers, students, and scientists. In the future, we plan to extend xarray for programmers desiring a more object
oriented API, but this remains a work in progress.
The five most commonly used routines can be summarized as:
• wrf.getvar() - Extracts WRF-ARW NetCDF variables and computes diagnostic variables that WRF does
not compute (e.g. storm relative helicity). This is the routine that you will use most often.
• wrf.interplevel() - Interpolates a three-dimensional field to a horizontal plane at a specified level using
simple (fast) linear interpolation (e.g. 850 hPa temperature).
• wrf.vertcross() - Interpolates a three-dimensional field to a vertical plane through a user-specified hori-
zontal line (i.e. a cross section).
• wrf.interpline() - Interpolates a two-dimensional field to a user-specified line.
• wrf.vinterp() - Interpolates a three-dimensional field to user-specified ‘surface’ levels (e.g. theta-e levels).
This is a smarter, albeit slower, version of wrf.interplevel().
The primary use for the wrf.getvar() function is to return diagnostic variables that require a calculation, since
WRF does not produce these variables natively. These diagnostics include CAPE, storm relative helicity, omega, sea
level pressure, etc. A table of all available diagnostics can be found here: Table of Available Diagnostics.
In the example below, sea level pressure is calculated and printed.
from __future__ import print_function
ncfile = Dataset("wrfout_d01_2016-10-07_00_00_00")
print(slp)
Result:
<xarray.DataArray u'slp' (south_north: 1059, west_east: 1799)>
array([[ 1012.220337, 1012.298157, 1012.247864, ..., 1010.132019,
1009.932312, 1010.067078],
[ 1012.432861, 1012.444763, 1012.33667 , ..., 1010.1073 ,
1010.108459, 1010.047607],
[ 1012.395447, 1012.380859, 1012.417053, ..., 1010.22937 ,
1010.055969, 1010.026794],
...,
[ 1009.042358, 1009.069214, 1008.987793, ..., 1019.19281 ,
1019.144348, 1019.110596],
[ 1009.224854, 1009.075134, 1008.986389, ..., 1019.071899,
1019.042664, 1019.061279],
[ 1009.188965, 1009.107117, 1008.979797, ..., 1018.917786,
1018.956848, 1019.047485]], dtype=float32)
Coordinates:
XLONG (south_north, west_east) float32 -122.72 -122.693 -122.666 ...
XLAT (south_north, west_east) float32 21.1381 21.1451 21.1521 ...
Time datetime64[ns] 2016-10-07
Dimensions without coordinates: south_north, west_east
Attributes:
FieldType: 104
(continues on next page)
14 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
In addition to computing diagnostic variables (see Computing Diagnostic Variables), the wrf.getvar() function
can be used to extract regular WRF-ARW output NetCDF variables.
ncfile = Dataset("wrfout_d01_2016-10-07_00_00_00")
p = getvar(ncfile, "P")
print(p)
Result:
...,
[[ 7.233154e+00, 7.224121e+00, ..., 3.627930e+00, 3.613770e+00],
[ 7.226318e+00, 7.358154e+00, ..., 3.725098e+00, 3.634033e+00],
...,
[ 5.354248e+00, 5.406006e+00, ..., 1.282715e+01, 1.264844e+01],
[ 5.295410e+00, 5.177490e+00, ..., 1.256274e+01, 1.257642e+01]],
Coordinates:
XLONG (south_north, west_east) float32 -122.72 -122.693 -122.666 ...
(continues on next page)
Sometimes you just want a regular numpy array and don’t care about metadata. This is often the case when you are
working with compiled extensions. Metadata can be disabled in one of two ways.
1. disable xarray completely
2. set the meta function parameter to False.
The example below illustrates both.
ncfile = Dataset("wrfout_d01_2016-10-07_00_00_00")
Result:
<type 'numpy.ndarray'>
<type 'numpy.ndarray'>
16 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
ncfile = Dataset("wrfout_d01_2016-10-07_00_00_00")
print(type(cape_3d_ndarray))
Result:
<class 'numpy.ma.core.MaskedArray'>
The ‘cat’ (concatenate) method aggregates all files in the sequence along the ‘Time’ dimension, which will be the
leftmost dimension for the output array. To include all of the times, in all of the files, in the output array, set the
timeidx parameter to wrf.ALL_TIMES (an alias for None). If a single value is specified for timeidx, then the time
index is assumed to be taken from the concatenation of all times for all files.
It is import to note that no sorting is performed in the wrf.getvar() routine, so all files in the sequence must be
sorted prior to calling this function.
print(p_cat)
Result:
The ‘join’ method combines a sequence of files by adding a new leftmost dimension for the file/sequence index. In
situations where there are multiple files with multiple times, and the last file contains less times than the previous
files, the remaining arrays will be arrays filled with missing values. There are checks in place within the wrf-python
algorithms to look for these missing arrays, but be careful when calling compiled routines outside of wrf-python.
In most cases, timeidx parameter should be set to wrf.ALL_TIMES. If a timeidx value is specified, then this time
index is used when extracting the variable from each file. In cases where there are multiple files with multiple time
steps, this is probably nonsensical, since the nth time index for each file represents a different time.
In general, join is rarely used, so the concatenate method should be used for most cases.
18 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
print(p_join)
Result:
Note how the ‘Time’ dimension was replaced with the ‘file’ dimension, due to numpy’s automatic squeezing of the
single element ‘Time’ dimension. To maintain the ‘Time’ dimension, set the squeeze parameter to False.
print(p_join)
Result
...,
[[ 2.362061e+00, ..., 1.156982e+00],
...,
[ 1.715332e+00, ..., 4.047852e+00]]]]], dtype=float32)
Coordinates:
XLONG (south_north, west_east) float32 -122.72 -122.693 -122.666 ...
XLAT (south_north, west_east) float32 21.1381 21.1451 21.1521 ...
* file (file) int64 0 1 2
datetime (file, Time) datetime64[ns] 2016-10-07 2016-10-07 2016-10-07
Dimensions without coordinates: Time, bottom_top, south_north, west_east
Attributes:
FieldType: 104
MemoryOrder: XYZ
description: perturbation pressure
units: Pa
stagger:
coordinates: XLONG XLAT
projection: LambertConformal(stand_lon=-97.5, moad_cen_lat=38.5000038147,
truelat1=38.5, truelat2=38.5, pole_lat=90.0,
pole_lon=0.0)
Dictionaries can also be used as input to the wrf.getvar() functions. This can be useful when working with
ensembles. However, all WRF files in the dictionary must have the same dimensions. The result is an array where the
leftmost dimension is the keys from the dictionary. Nested dictionaries are allowed.
The method argument is used to describe how each sequence in the dictionary will be combined.
print(p)
Result:
20 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
...,
[[ 2.362061e+00, ..., 1.156982e+00],
...,
[ 1.715332e+00, ..., 4.047852e+00]]]]], dtype=float32)
Coordinates:
XLONG (south_north, west_east) float32 -122.72 -122.693 -122.666 ...
XLAT (south_north, west_east) float32 21.1381 21.1451 21.1521 ...
* Time (Time) datetime64[ns] 2016-10-07 ...
datetime (Time) datetime64[ns] 2016-10-07 ...
* key_0 (key_0) <U6 u'label1' u'label2'
Dimensions without coordinates: bottom_top, south_north, west_east
Attributes:
FieldType: 104
MemoryOrder: XYZ
description: perturbation pressure
units: Pa
stagger:
coordinates: XLONG XLAT
projection: LambertConformal(stand_lon=-97.5, moad_cen_lat=38.5000038147,
truelat1=38.5, truelat2=38.5, pole_lat=90.0,
pole_lon=0.0)
The wrf.interplevel() function is used to interpolate a 3D field to a specific horizontal level, usually pressure
or height.
ncfile = Dataset("wrfout_d01_2016-10-07_00_00_00")
print(ht_500mb)
Result:
The wrf.vertcross() function is used to create vertical cross sections. To define a cross section, a start point
and an end point needs to be specified. Alternatively, a pivot point and an angle may be used. The start point, end
point, and pivot point are specified using a wrf.CoordPair object, and coordinates can either be in grid (x,y)
coordinates or (latitude,longitude) coordinates. When using (latitude,longitude) coordinates, a NetCDF file object or
a wrf.WrfProj object must be provided.
The vertical levels can also be specified using the levels parameter. If not specified, then approximately 100 levels will
be chosen in 1% increments.
ncfile = Dataset("wrfout_d01_2016-10-07_00_00_00")
22 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
print(p_vert)
Result:
* vertical (vertical) float32 0.0 261.828 523.656 785.484 1047.31 1309.14 ...
Dimensions without coordinates: idx
Attributes:
FieldType: 104
description: pressure
units: hPa
stagger:
coordinates: XLONG XLAT
projection: LambertConformal(stand_lon=-97.5, moad_cen_lat=38.5000038147,
truelat1=38.5, truelat2=38.5, pole_lat=90.0,
pole_lon=0.0)
orientation: (0.0, 529.0) to (1797.0, 529.0)
missing_value: 9.96920996839e+36
_FillValue: 9.96920996839e+36
ncfile = Dataset("wrfout_d01_2016-10-07_00_00_00")
print (p_vert)
Result:
* vertical (vertical) float32 0.0 261.828 523.656 785.484 1047.31 1309.14 ...
Dimensions without coordinates: idx
Attributes:
FieldType: 104
description: pressure
units: hPa
stagger:
coordinates: XLONG XLAT
projection: LambertConformal(stand_lon=-97.5, moad_cen_lat=38.5000038147,
truelat1=38.5, truelat2=38.5, pole_lat=90.0,
pole_lon=0.0)
orientation: (0.0, 529.0) to (1797.0, 529.0) ; center=CoordPair(x=899.0, y=529.0)
˓→; angle=90.0
missing_value: 9.96920996839e+36
_FillValue: 9.96920996839e+36
24 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
ncfile = Dataset("wrfout_d01_2016-10-07_00_00_00")
# When using lat/lon coordinates, you must supply a WRF netcdf file object,
# or a projection object with the lower left latitude and lower left
# longitude points.
p_vert = vertcross(p, z, wrfin=ncfile, start_point=start_point, end_point=end_point,
˓→latlon=True)
print(p_vert)
Result:
<xarray.DataArray u'pressure_cross' (vertical: 100, idx: 1798)>
array([[ nan, nan, nan, ..., nan,
nan, nan],
[ 989.66168213, 989.66802979, 989.66351318, ..., 988.05737305,
987.99151611, 987.96917725],
[ 959.49450684, 959.50109863, 959.50030518, ..., 958.96948242,
958.92980957, 958.89294434],
...,
[ 24.28092003, 24.27359581, 24.27034378, ..., 24.24800491,
24.2486496 , 24.24947357],
[ 23.2868309 , 23.27933884, 23.27607918, ..., 23.25231361,
23.2530098 , 23.25384521],
[ nan, nan, nan, ..., nan,
nan, nan]], dtype=float32)
Coordinates:
Time datetime64[ns] 2016-10-07
xy_loc (idx) object CoordPair(x=0.0, y=529.0, lat=34.5279502869, lon=-127.
˓→398925781) ...
* vertical (vertical) float32 0.0 261.828 523.656 785.484 1047.31 1309.14 ...
Dimensions without coordinates: idx
Attributes:
FieldType: 104
description: pressure
units: hPa
stagger:
coordinates: XLONG XLAT
projection: LambertConformal(stand_lon=-97.5, moad_cen_lat=38.5000038147,
truelat1=38.5, truelat2=38.5, pole_lat=90.0,
(continues on next page)
ncfile = Dataset("wrfout_d01_2016-10-07_00_00_00")
print(p_vert)
Result:
26 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
Two-dimensional fields can be interpolated along a line, in a manner similar to the vertical cross section (see Vertical
Cross Sections), using the wrf.interpline() function. To define the line to interpolate along, a start point and
an end point needs to be specified. Alternatively, a pivot point and an angle may be used. The start point, end
point, and pivot point are specified using a wrf.CoordPair object, and coordinates can either be in grid (x,y)
coordinates or (latitude,longitude) coordinates. When using (latitude,longitude) coordinates, a NetCDF file object or
a wrf.WrfProj object must also be provided.
ncfile = Dataset("wrfout_d01_2016-10-07_00_00_00")
print(t2_line, "\n")
Result:
<xarray.DataArray u'T2_line' (line_idx: 1058)>
array([ 302.07214355, 302.08505249, 302.08688354, ..., 279.18557739,
279.1998291 , 279.23132324], dtype=float32)
Coordinates:
Time datetime64[ns] 2016-10-07
(continues on next page)
ncfile = Dataset("wrfout_d01_2016-10-07_00_00_00")
print(t2_line, "\n")
Result:
28 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
ncfile = Dataset("wrfout_d01_2016-10-07_00_00_00")
t2 = getvar(ncfile, "T2")
lats = getvar(ncfile, "lat")
lons = getvar(ncfile, "lon")
print (t2_line)
Result:
The wrf.vinterp() is used to interpolate a field to a type of surface. The available surfaces are pressure, geopo-
tential height, theta, and theta-e. The surface levels to interpolate also need to be specified.
ncfile = Dataset("wrfout_d01_2016-10-07_00_00_00")
tk = getvar(ncfile, "tk")
# Interpolate tk to theta-e levels
interp_levels = [200, 300, 500, 1000]
interp_field = vinterp(ncfile,
field=tk,
vert_coord="eth",
interp_levels=interp_levels,
extrapolate=True,
field_type="tk",
log_p=True)
print(interp_field)
Result:
30 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
wrf-python includes a set of routines for converting back and forth between latitude,longitude space and x,y space. The
methods are wrf.xy_to_ll(), wrf.xy_to_ll_proj(), wrf.ll_to_xy(), wrf.ll_to_xy_proj().
The latitude, longitude, x, and y parameters to these methods can contain sequences if multiple points are desired to
be converted.
ncfile = Dataset("wrfout_d01_2016-10-07_00_00_00")
print(lat_lon)
print (x_y)
Result:
ncfile = Dataset("wrfout_d01_2016-10-07_00_00_00")
print(lat_lon)
print (x_y)
Result:
wrf-python includes several routines to assist with plotting, primarily for obtaining the mapping object used for car-
topy, basemap, and PyNGL. For all three plotting systems, the mapping object can be determined directly from a
variable when using xarray, or can be obtained from the WRF output file(s) if xarray is turned off.
Also included are utilities for extracting the geographic boundaries directly from xarray variables. This can be useful
in situations where you only want to work with subsets (slices) of a large domain, but don’t want to define the map
projection over the subset region.
In this example, we’re going to extract the cartopy mapping object from a diagnostic variable (slp), the lat,lon coor-
dinates, and the geographic boundaries. Next, we’re going to take a subset of the diagnostic variable and extract the
geographic boundaries. Some of the variables will be printed for demonstration.
32 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
ncfile = Dataset("wrfout_d01_2016-10-07_00_00_00")
print (cart_proj)
# Get the latitude and longitude coordinate. This is usually needed for plotting.
lats, lons = latlon_coords(slp)
print (bounds)
print (slp_subset_bounds)
Result:
In this example, the cartopy mapping object and geographic boundaries will be extracted directly from the netcdf
variable.
ncfile = Dataset("wrfout_d01_2016-10-07_00_00_00")
print (cart_proj)
# Get the geobounds from the netcdf file (by default, uses XLAT, XLONG)
# You can supply a variable name to get the staggered boundaries
bounds = geo_bounds(wrfin=ncfile)
(continues on next page)
print (bounds)
Result:
In this example, we’re going to extract the basemap mapping object from a diagnostic variable (slp), the lat,lon coor-
dinates, and the geographic boundaries. Next, we’re going to take a subset of the diagnostic variable and extract the
geographic boundaries. Some of the variables will be printed for demonstration.
ncfile = Dataset("wrfout_d01_2016-10-07_00_00_00")
print (bm)
# Get the latitude and longitude coordinate. This is usually needed for plotting.
lats, lons = latlon_coords(slp)
print(bounds)
print (slp_subset_bounds)
Result:
34 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
In this example, the basemap mapping object and geographic boundaries will be extracted directly from the netcdf
variable.
ncfile = Dataset("wrfout_d01_2016-10-07_00_00_00")
print (bm)
print (bounds)
Result:
In this example, we’re going to extract the basemap mapping object from a diagnostic variable (slp), the lat,lon coor-
dinates, and the geographic boundaries. Next, we’re going to take a subset of the diagnostic variable and extract the
geographic boundaries. Some of the variables will be printed for demonstration.
ncfile = Dataset("wrfout_d01_2016-10-07_00_00_00")
print (pyngl_resources)
# Get the latitude and longitude coordinate. This is needed for plotting.
lats, lons = latlon_coords(slp)
print(bounds)
(continues on next page)
print (slp_subset_bounds)
Result:
In this example, the basemap mapping object and geographic boundaries will be extracted directly from the netcdf
variable.
ncfile = Dataset("wrfout_d01_2016-10-07_00_00_00")
print (pyngl_resources)
print (bounds)
Result:
Moving Nests
When a domain nest is moving, the domain boundaries become a function of time when combining the files using
the ‘cat’ method. When using ‘join’, the domain boundaries become a function of both file and time. As a result, the
methods that depend on geographic boundaries (wrf.geo_bounds(), wrf.get_basemap(), etc) will return
arrays of objects rather than a single object when multiple times and/or files are detected in the underlying coordinate
variables.
An exception is wrf.get_cartopy(), which contains no geographic boundary information in the mapping ob-
ject. Instead, the wrf.cartopy_xlim() and wrf.cartopy_ylim() methods can be used to get the array of
matplotlib axes boundaries (returned in the axes projection coordinates).
36 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
In this example, the geographic boundaries are extracted from a sequence of files that use a moving nest. The result
will be an array of wrf.GeoBounds objects.
Result:
In this example, a cartopy mapping object is extracted from a variable that uses a moving nest. Since cartopy objects
do not include geographic boundary information, only a single cartopy object is returned. However, if the axes xlimits
and ylimits are desired, the wrf.cartopy_xlim() and wrf.cartopy_ylim() functions can be used to obtain
the array of moving boundaries in the axes projected coordinate space.
Result:
<wrf.projection.MercatorWithLatTS object at 0x13893c9b0>
[[-174999.8505754546, 774999.5806103835]
[-145000.11853874932, 805000.1608638937]
[-204999.58261215844, 744999.8485736783]
[-235000.16286567, 715000.1165369744]
[-294998.77872227144, 654999.804246759]
[-355001.6356629085, 595000.34017335]
[-415000.25151950994, 535000.0278831345]
[-444999.98355621524, 505000.29584642925]
[-474999.7155929191, 474999.7155929177]]
[[2424828.507236154, 3374828.14098255]
[2424828.507236154, 3374828.14098255]
[2424828.507236154, 3374828.14098255]
[2424828.507236154, 3374828.14098255]
[2484829.1182174017, 3434828.972518358]
[2514829.1041871575, 3464828.196283651]
[2574829.0041584675, 3524828.8880928173]
[2604829.1786526926, 3554829.5610342724]
[2634828.9016262344, 3584828.016406863]]
In this example, basemap objects are extracted from a variable that uses a moving nest. An array of basemap objects
is returned because the basemap object includes geographic boundary information.
from __future__ import print_function
38 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
Result:
In this example, pyngl resource objects are extracted from a variable that uses a moving nest. An array of pyngl
resource objects is returned because the pyngl object includes geographic boundary information.
Result:
Beginning in version 1.1, the Fortran computational routines in wrf-python make use of OpenMP directives. OpenMP
enables the calculations to use multiple CPU cores, which can improve performance. In order to use OpenMP features,
wrf-python has to be compiled with OpenMP enabled (most pre-built binary installations will have this enabled).
The Fortran computational routines have all been built using runtime scheduling, instead of compile time scheduling,
so that the user can choose the scheduler type within their Python application. By default, the scheduling type is set to
wrf.OMP_SCHED_STATIC using only 1 CPU core, so wrf-python will behave similarly to the non-OpenMP built
versions. For the most part, the difference between the scheduling types is minimal, with the exception being the
wrf.OMP_SCHED_DYNAMIC scheduler that is much slower due to the additional overhead associated with it. For
new users, using the default scheduler should be sufficient.
To take advantage of the performance improvements offered by OpenMP, wrf-python needs to have been compiled
with OpenMP features enabled. The example below shows how you can determine if OpenMP is enabled in your build
of wrf-python.
print(omp_enabled())
Result:
True
The example below shows how you can get the maximum number of processors that are available on your system.
print(omp_get_num_procs())
Result:
40 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
To enable multicore support via OpenMP, specifying the maximum number of OpenMP threads (i.e. CPU cores) is
the only step that you need to take.
In the example below, wrf.omp_set_num_threads() is used to set the maximum number of threads to use, and
wrf.omp_get_max_threads() is used to retrieve (and print) the maximum number of threads used.
Note: Although there is an OpenMP routine named wrf.omp_get_num_threads(), this routine will always
return 1 when called from the sequential part of the program. Use wrf.omp_get_max_threads() to return the
value set by wrf.omp_set_num_threads().
omp_set_num_threads(4)
print (omp_get_max_threads())
Result:
When an OpenMP directive is encountered in the Fortran code, a scheduler is used to determine how the work is
divided among the threads. All of the Fortran routines are compiled to use a ‘runtime’ scheduler, which indicates that
the scheduler type (from the four listed below) is to be chosen at runtime (i.e. inside a Python script)
By default, the scheduler chosen is the wrf.OMP_SCHED_STATIC scheduler, which should be sufficient for most
users. However, OpenMP and wrf-python include the following options for the scheduler type:
• wrf.OMP_SCHED_STATIC
• wrf.OMP_SCHED_DYNAMIC
• wrf.OMP_SCHED_GUIDED
• wrf.OMP_SCHED_AUTO
Refer to the OpenMP Specification. for more information about these scheduler types. In local testing, wrf.
OMP_SCHED_GUIDED produced the best results, but differences between wrf.OMP_SCHED_STATIC, wrf.
OMP_SCHED_GUIDED, and wrf.OMP_SCHED_AUTO were minor. However, wrf.OMP_SCHED_DYNAMIC pro-
duced noticeably slower results due to the overhead of using a dynamic scheduler.
When setting a scheduler type, the wrf.omp_set_schedule() takes two arguments. The first is the sched-
uler type (one from the list above), and the second optional argument is a modifier, which is usually referred as the
chunk size. If the modifier/chunk_size is set to 0, then the OpenMP default implementation is used. For wrf.
OMP_SCHED_AUTO, the modifier is ignored.
If you are new to OpenMP and all this sounds confusing, don’t worry about setting a scheduler type. The default static
scheduler will be good enough.
In the example below, the scheduler type is set to wrf.OMP_SCHED_GUIDED and uses the default chunk size of 0.
The scheduler type is then read back using wrf.omp_get_schedule() and printed.
omp_set_schedule(OMP_SCHED_GUIDED, 0)
print(sched, modifier)
Result:
3 1
Notice that the printed scheduler type (sched variable) is set to a value of 3, which is the actual integer constant value
for the wrf.OMP_SCHED_GUIDED scheduler type. The modifier is returned as a value of 1, which is different than
the 0 that was supplied to the wrf.omp_set_schedule() routine. This is because the 0 tells OpenMP to use its
own default value for the scheduler, which is 1 for this type of scheduler.
The use of wrf.ALL_TIMES for the timeidx parameter to wrf.getvar() is convenient for computing diagnostic
variables across multiple files/times, but there is something that users should be aware of. When wrf.ALL_TIMES
is set as the timeidx argument, all arrays used in the computation are extracted for all times before the computation is
started. This can cause serious memory issues on smaller hardware systems like laptops.
In this example, the user wants to use a data set that is 289 x 39 x 300 x 300 and compute z for the entire data set. The
user is using a laptop with 8 GB of memory.
42 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
To fix this situation, it is better to allocate the output array yourself and run the calculation for each time step in a loop
(“loop-and-fill”). The required memory requirements change to:
(Note: only need to store the result in a 4-byte REAL)
FINAL_RESULT: 289 x 39 x 300 x 300 x 4 = 4,057560,000 bytes (~4 GB)
(Note: the numbers below are for each loop iteration)
P: 39 x 300 x 300 x 8 = 28,080,000 bytes (~28 MB)
PHB: 39 x 300 x 300 x 8 = 28,080,000 bytes (~28 MB)
HGT: 300 x 300 x 8 = 720,000 bytes (720 KB)
RESULT: 39 x 300 x 300 x 8 = 28,080,000 bytes (~28 MB)
Since the memory for the computation is deleted after each loop iteration, the total memory usage drops to approxi-
mately 4.1 GB.
The moral of the story is that you need to make sure that your system has enough memory to extract everything it
needs up front if you want to use wrf.ALL_TIMES, otherwise it is better to “loop-and-fill” yourself.
Here is an example of the “loop-and-fill” technique:
import numpy as np
from netCDF4 import Dataset
from wrf import getvar, ALL_TIMES
f = Dataset(filename_list[fileidx])
z = getvar(f, "z", file_timeidx)
z_final[timeidx,:] = z[:]
f.close()
If you have read through the documentation, you may have noticed that the wrf.getvar() routine contains a cache
argument. What is this for?
Internally, if metadata is turned on, a variable is extracted from the NetCDF file and its metadata is copied to form
the result’s metadata. Often this variable is one of the computation’s function arguments, so rather than spend time
extracting the variable again for the computation, it is placed in a cache (dictionary) and passed on to the computational
function.
What isn’t widely known is that this cache argument can also be supplied by end users wishing to speed up their
application. This can be useful in situations where numerous calculations are being performed on the same data set.
For many algorithms, the time needed to extract the arrays from the NetCDF file is on par with the time needed to
perform the calculation. If you are computing numerous diagnostics, extracting the variables up front allows you to
only pay this extraction penalty once, rather than inside of each call to wrf.getvar().
The cache is nothing more than a dictionary where each key is the variable name (e.g. “P”) and the value is
the xarray.DataArray or numpy.ndarray variable. Creating the cache dictionary is easy, since the wrf.
extract_vars() routine returns a dictionary for a sequence of variables.
Note: The timeidx parameter supplied to extract_vars() must be the same timeidx parameter that you plan to
use for wrf.getvar(). Otherwise, it will crash with dimension mismatch errors.
Some common variables that you can use to create an effective cache are: P, PB, PH, PHB, T, QVAPOR, HGT, PSFC,
U, V, W.
Below is an example showing the same computation done with and without the cache. The execution time is printed.
The hardware used is a 2.8 GHz Intel Core i7, which contains 4 CPU cores with 2 hyper threads (8 total threads). This
will be interpreted as 8 CPUs for OpenMP.
from __future__ import print_function
import time
from netCDF4 import Dataset
from wrf import getvar, ALL_TIMES, extract_vars
# The first two files contain four times, the last file contains only one.
wrf_filenames = ["/path/to/wrfout_d02_2005-08-28_00:00:00",
"/path/to/wrfout_d02_2005-08-28_12:00:00",
"/path/to/wrfout_d02_2005-08-29_00:00:00"]
start = time.time()
my_cache = extract_vars(wrfin, ALL_TIMES, ("P", "PSFC", "PB", "PH", "PHB",
"T", "QVAPOR", "HGT", "U", "V",
"W"))
end = time.time()
print ("Time taken to build cache: ", (end-start), "s")
# No cache
start = time.time()
for var in vars:
v = getvar(wrfin, var, ALL_TIMES)
end = time.time()
no_cache_time = (end-start)
44 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
# With a cache
start = time.time()
for var in vars:
v = getvar(wrfin, var, ALL_TIMES, cache=my_cache)
end = time.time()
cache_time = (end-start)
Result:
Time taken to build cache: 0.28154706955 s
Time taken without variable cache: 11.0905270576 s
Time taken with variable cache: 8.25931215286 s
The cache decreased computation time by: 25.5282268378 %
By removing the repeated extraction of common variables in the wrf.getvar() routine, for the single threaded
case, the computation time has been reduced by 25.5% in this particular example.
Things get more interesting when OpenMP is turned on and set to use the maximum number of processors (in this
case 8 threads are used).
from __future__ import print_function
import time
from netCDF4 import Dataset
from wrf import (getvar, ALL_TIMES, extract_vars,
omp_set_num_threads, omp_get_num_procs)
# The first two files contain four times, the last file contains only one.
wrf_filenames = ["/path/to/wrfout_d02_2005-08-28_00:00:00",
"/path/to/wrfout_d02_2005-08-28_12:00:00",
"/path/to/wrfout_d02_2005-08-29_00:00:00"]
start = time.time()
my_cache = extract_vars(wrfin, ALL_TIMES, ("P", "PSFC", "PB", "PH", "PHB",
"T", "QVAPOR", "HGT", "U", "V",
"W"))
end = time.time()
print ("Time taken to build cache: ", (end-start), "s")
omp_set_num_threads(omp_get_num_procs())
# No cache
start = time.time()
(continues on next page)
# With a cache
start = time.time()
for var in vars:
v = getvar(wrfin, var, ALL_TIMES, cache=my_cache)
end = time.time()
cache_time = (end-start)
Result:
In this example, 4 CPU cores (8 total threads) are used. When the cache is used, the computation time drops by 45%,
so almost half the time was spent simply extracting variables from the NetCDF file. When compared to the 11.09
s needed to compute the single threaded case with no variable cache, the computation time drops by roughly 70%
(compared to 45% with 8 threads but no cache).
In summary, if you are computing a lot of diagnostic variables, consider using the cache argument to improve perfor-
mance, particularly if you want to maximize your multithreaded performance with OpenMP.
The examples below show how wrf-python can be used to make plots with matplotlib (with basemap and cartopy) and
PyNGL. None of these examples make use of xarray’s builtin plotting functions, since additional work is most likely
needed to extend xarray in order to work correctly. This is planned for a future release.
Cartopy is becoming the main tool for base mapping with matplotlib, but you should be aware of a few shortcomings
when working with WRF data.
• The builtin transformations of coordinates when calling the contouring functions do not work correctly with the
rotated pole projection. The transform_points method needs to be called manually on the latitude and longitude
arrays.
• The rotated pole projection requires the x and y limits to be set manually using set_xlim and set_ylim.
• You can’t place latitude and longitude labels on the axes when using any projection other than Mercator or
LatLon.
46 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
# Smooth the sea level pressure since it tends to be noisy near the mountains
smooth_slp = smooth2d(slp, 3)
# Create a figure
fig = plt.figure(figsize=(12,9))
# Set the GeoAxes to the projection used by WRF
ax = plt.axes(projection=cart_proj)
# Make the contour outlines and filled contours for the smoothed sea level pressure.
plt.contour(to_np(lons), to_np(lats), to_np(smooth_slp), 10, colors="black",
transform=crs.PlateCarree())
plt.contourf(to_np(lons), to_np(lats), to_np(smooth_slp), 10, transform=crs.
˓→PlateCarree(),
cmap=get_cmap("jet"))
# Set the map limits. Not really necessary, but used for demonstration.
ax.set_xlim(cartopy_xlim(smooth_slp))
ax.set_ylim(cartopy_ylim(smooth_slp))
plt.show()
48 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
transform=crs.PlateCarree())
plt.clabel(contours, inline=1, fontsize=10, fmt="%i")
# Add the 500 hPa wind barbs, only plotting every 125th data point.
plt.barbs(to_np(lons[::125,::125]), to_np(lats[::125,::125]), to_np(u_500[::125,
˓→::125]),
ax.gridlines()
plt.show()
This lengthy example shows how to make the panel plots on the first page of the documentation. For a simpler example
of how to make a cross section plot, see Vertical Cross Section.
50 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.cm import get_cmap
import cartopy.crs as crs
import cartopy.feature as cfeature
from netCDF4 import Dataset
from wrf import (getvar, to_np, vertcross, smooth2d, CoordPair, GeoBounds, get_
˓→cartopy,
# Set the start point and end point for the cross section
start_point = CoordPair(lat=26.76, lon=-80.0)
end_point = CoordPair(lat=26.76, lon=-77.8)
latlon=True, meta=True)
dbz_cross = 10.0 * np.log10(z_cross)
# Download and create the states, land, and oceans using cartopy features
states = cfeature.NaturalEarthFeature(category='cultural', scale='50m', facecolor=
˓→'none',
name='admin_1_states_provinces_shp')
land = cfeature.NaturalEarthFeature(category='physical', name='land', scale='50m',
facecolor=cfeature.COLORS['land'])
ocean = cfeature.NaturalEarthFeature(category='physical', name='ocean', scale='50m',
facecolor=cfeature.COLORS['water'])
52 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
# Add a title
ax_ctt.set_title("Cloud Top Temperature (degC)", {"fontsize" : 7})
ax_wspd.set_title("Cross-Section of Wind Speed (kt)", {"fontsize" : 7})
ax_dbz.set_title("Cross-Section of Reflectivity (dBZ)", {"fontsize" : 7})
plt.show()
Although basemap is in maintenance mode only and becoming deprecated, it is still widely used by many program-
mers. Cartopy is becoming the preferred package for mapping, however it suffers from growing pains in some areas
(can’t use latitude/longitude labels for many map projections). If you run in to these issues, basemap is likely to
# Smooth the sea level pressure since it tends to be noisy near the mountains
smooth_slp = smooth2d(slp, 3)
# Create a figure
fig = plt.figure(figsize=(12,9))
54 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
# Convert the lats and lons to x and y. Make sure you convert the lats and lons to
# numpy arrays via to_np, or basemap crashes with an undefined RuntimeError.
x, y = bm(to_np(lons), to_np(lats))
plt.show()
# Add the 500 hPa wind barbs, only plotting every 125th data point.
bm.barbs(x[::125,::125], y[::125,::125], to_np(u_500[::125, ::125]),
to_np(v_500[::125, ::125]), length=6)
plt.show()
56 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
This lengthy example shows how to make the panel plots on the first page of the documentation. For a simpler example
of how to make a cross section plot, see Vertical Cross Section.
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.cm import get_cmap
from netCDF4 import Dataset
from wrf import getvar, to_np, vertcross, smooth2d, CoordPair, get_basemap, latlon_
˓→coords
# Set the start point and end point for the cross section
start_point = CoordPair(lat=26.76, lon=-80.0)
end_point = CoordPair(lat=26.76, lon=-77.8)
# Compute the vertical cross-section interpolation. Also, include the lat/lon points
# along the cross-section in the metadata by setting latlon to True.
z_cross = vertcross(Z, z, wrfin=ncfile, start_point=start_point, end_point=end_point,
latlon=True, meta=True)
wspd_cross = vertcross(wspd, z, wrfin=ncfile, start_point=start_point, end_point=end_
˓→point,
latlon=True, meta=True)
dbz_cross = 10.0 * np.log10(z_cross)
58 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
# Draw Parallels
parallels = np.arange(np.amin(lats), 30., 2.5)
bm.drawparallels(parallels, ax=ax_ctt, color="white")
ax_ctt.set_xlim([x_start, x_end])
ax_ctt.set_ylim([y_start, y_end])
# Add titles
ax_ctt.set_title("Cloud Top Temperature (degC)", {"fontsize" : 7})
ax_wspd.set_title("Cross-Section of Wind Speed (kt)", {"fontsize" : 7})
ax_dbz.set_title("Cross-Section of Reflectivity (dBZ)", {"fontsize" : 7})
plt.show()
Vertical cross sections require no mapping software package and can be plotted using the standard matplotlib API.
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.cm import get_cmap
import cartopy.crs as crs
from cartopy.feature import NaturalEarthFeature
from netCDF4 import Dataset
# Create the start point and end point for the cross section
start_point = CoordPair(lat=26.76, lon=-80.0)
end_point = CoordPair(lat=26.76, lon=-77.8)
latlon=True, meta=True)
(continues on next page)
60 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
plt.show()
Routines
Diagnostic Routine
The routine below is the primary routine for extracting variables from a WRF-ARW NetCDF file (or sequence of files)
and performing diagnostic calculations.
wrf.getvar
62 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
64 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
Parameters
• wrfin (netCDF4.Dataset, Nio.NioFile, or an iterable) – WRF-ARW NetCDF
data as a netCDF4.Dataset, Nio.NioFile or an iterable sequence of the aforemen-
tioned types.
• varname (str) – The variable name.
• timeidx (int or wrf.ALL_TIMES, optional) – The desired time index. This value can
be a positive integer, negative integer, or wrf.ALL_TIMES (an alias for None) to return all
times in the file or sequence. The default is 0.
• method (str, optional) – The aggregation method to use for sequences. Must be either
‘cat’ or ‘join’. ‘cat’ combines the data along the Time dimension. ‘join’ creates a new
dimension for the file index. The default is ‘cat’.
• squeeze (bool, optional) – Set to False to prevent dimensions with a size of 1 from being
automatically removed from the shape of the output. Default is True.
• cache (dict, optional) – A dictionary of (varname, ndarray) that can be used to supply
pre-extracted NetCDF variables to the computational routines. It is primarily used for in-
ternal purposes, but can also be used to improve performance by eliminating the need to
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
• **kwargs – Optional keyword arguments for certain diagnostics. See table above.
Returns If xarray is enabled and the meta parameter is True, then the result will be a xarray.
DataArray object. Otherwise, the result will be a numpy.ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
Raises
66 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
See also:
numpy.ndarray, xarray.DataArray
Examples
Using netCDF4
wrfnc = Dataset("wrfout_d02_2010-06-13_21:00:00")
slp = getvar(wrfnc, "slp")
Using PyNIO
Using Iterables:
import os
from netCDF4 import Dataset
from wrf import getvar
filedir = "/path/to/wrf/files"
wrfin = [Dataset(f) for f in os.listdir(filedir)
if f.startswith("wrfout_d02_")]
Interpolation Routines
The routines below are the primary routines used for performing interpolation calculations.
wrf.interplevel
Example
Interpolate Geopotential Height to 500 hPa
wrfin = Dataset("wrfout_d02_2010-06-13_21:00:00")
p = getvar(wrfin, "pressure")
ht = getvar(wrfin, "z", units="dm")
wrf.vertcross
68 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
Otherwise, the levels argument can be used to specify specific vertical levels. If all vertical levels are desired,
use the raw wrf.interp2dxy() function.
See also:
wrf.interp2dxy()
Parameters
• field3d (xarray.DataArray or numpy.ndarray) – A three-dimensional field to
interpolate, whose rightmost dimensions are nz x ny x nx.
• vert (xarray.DataArray or numpy.ndarray) – A three-dimensional variable for
the vertical coordinate, typically pressure or height. This array must have the same dimen-
sionality as field3d
• levels (sequence, optional) – A sequence of float for the desired vertical levels
in the output array. Must be in the same units as vert. If None, a fixed set of vertical levels
is provided. Default is None.
• missing (float) – The fill value to use for the output. Default is wrf.
default_fill(numpy.float64).
• wrfin (netCDF4.Dataset, Nio.NioFile, or an iterable, optional) – WRF-ARW
NetCDF data as a netCDF4.Dataset, Nio.NioFile or an iterable sequence of
the aforementioned types. This is used to obtain the map projection when using lati-
tude,longitude coordinates. Default is None.
• timeidx (int, optional) – The desired time index when obtaining map boundary informa-
tion from moving nests. This value can be a positive or negative integer. Only required when
wrfin is specified and the nest is moving. Currently, wrf.ALL_TIMES is not supported.
Default is 0.
• stagger (str) – If using latitude, longitude coordinate pairs for start_point, end_point,
or pivot_point, set the appropriate grid staggering type for field3d. By default, the mass grid
is used. The options are:
– ’m’: Use the mass grid (default).
– ’u’: Use the same staggered grid as the u wind component, which has a staggered
west_east (x) dimension.
– ’v’: Use the same staggered grid as the v wind component, which has a staggered
south_north (y) dimension.
• projection (wrf.WrfProj subclass, optional) – The map projection object to use
when working with latitude, longitude coordinates, and must be specified if wrfin is None.
Default is None.
• ll_point (wrf.CoordPair, sequence of wrf.CoordPair, optional) – The lower
left latitude, longitude point for your domain, and must be specified if wrfin is None. If the
domain is a moving nest, this should be a sequence of wrf.CoordPair. Default is None.
• pivot_point (wrf.CoordPair, optional) – A coordinate pair for the pivot point,
which indicates the location through which the plane will pass. Must also specify angle.
The coordinate pair can be in x,y grid coordinates or latitude, longitude coordinates. If us-
ing latitude, longitude coordinates, then either wrfin or projection must be specified to obtain
the map projection. Default is None.
• angle (float, optional) – Only valid for cross sections where a plane will be plotted
through a given point on the model domain. 0.0 represents a S-N cross section. 90.0 is a
W-E cross section.
• cache (dict, optional) – A dictionary of (varname, ndarray) that can be used to supply
pre-extracted NetCDF variables to the computational routines. It is primarily used for in-
ternal purposes, but can also be used to improve performance by eliminating the need to
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
Returns The interpolated variable. If xarray is enabled and the meta parameter is True, then the re-
sult will be a xarray.DataArray object. Otherwise, the result will be a numpy.ndarray
object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.interpline
70 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
• timeidx (int, optional) – The desired time index when obtaining map boundary informa-
tion from moving nests. This value can be a positive or negative integer. Only required when
wrfin is specified and the nest is moving. Currently, wrf.ALL_TIMES is not supported.
Default is 0.
• stagger (str) – If using latitude, longitude coordinate pairs for start_point, end_point,
or pivot_point, set the appropriate grid staggering type for field2d. By default, the mass grid
is used. The options are:
– ’m’: Use the mass grid (default).
– ’u’: Use the same staggered grid as the u wind component, which has a staggered
west_east (x) dimension.
– ’v’: Use the same staggered grid as the v wind component, which has a staggered
south_north (y) dimension.
• projection (wrf.WrfProj, optional) – The map projection object to use when work-
ing with latitude, longitude coordinates, and must be specified if wrfin is None. Should not
be used when working with x,y coordinates. Default is None.
• ll_point (wrf.CoordPair, sequence of wrf.CoordPair, optional) – The lower
left latitude, longitude point for your domain, and must be specified if wrfin is None. If the
domain is a moving nest, this should be a sequence of wrf.CoordPair. Default is None.
• pivot_point (wrf.CoordPair, optional) – A coordinate pair for the pivot point,
which indicates the location through which the plane will pass. Must also specify angle.
The coordinate pair can be in x,y grid coordinates or latitude, longitude coordinates. If us-
ing latitude, longitude coordinates, then either wrfin or projection must be specified to obtain
the map projection. Default is None.
• angle (float, optional) – Only valid for cross sections where a plane will be plotted
through a given point on the model domain. 0.0 represents a S-N cross section. 90.0 is a
W-E cross section.
• start_point (wrf.CoordPair, optional) – A coordinate pair which indicates the start
location through which the plane will pass. Must also specify end_point. The coordinate pair
can be in x,y grid coordinates or latitude, longitude coordinates. If using latitude, longitude
coordinates, then either wrfin or projection must be specified to obtain the map projection.
Default is None.
• end_point (wrf.CoordPair, optional) – A coordinate pair which indicates the end
location through which the plane will pass. Must also specify end_point. The coordinate
pair can be in x,y grid coordinates or latitude, longitude coordinates. If using latitude,
longitude coordinates, then either wrfin or projection must be specified to obtain the map
projection. Default is None.
• latlon (bool, optional) – Set to True to also interpolate the two-dimensional latitude
and longitude coordinates along the same horizontal line and include this information in the
metadata (if enabled). This can be helpful for plotting. Default is False.
• cache (dict, optional) – A dictionary of (varname, ndarray) that can be used to supply
pre-extracted NetCDF variables to the computational routines. It is primarily used for in-
ternal purposes, but can also be used to improve performance by eliminating the need to
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
Returns The interpolated variable. If xarray is enabled and the meta parameter is True, then the re-
sult will be a xarray.DataArray object. Otherwise, the result will be a numpy.ndarray
object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.vinterp
72 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
• timeidx (int, optional) – The time index to use when extracting auxiallary variables
used in the interpolation. This value must be set to match the same value used when the
field variable was extracted. Default is 0.
• method (str, optional) – The aggregation method to use for sequences. Must be either
‘cat’ or ‘join’. ‘cat’ combines the data along the Time dimension. ‘join’ creates a new
dimension for the file index. The default is ‘cat’.
• squeeze (bool, optional) – Set to False to prevent dimensions with a size of 1 from being
automatically removed from the shape of the output. Default is True.
• cache (dict, optional) – A dictionary of (varname, ndarray) that can be used to supply
pre-extracted NetCDF variables to the computational routines. It is primarily used for in-
ternal purposes, but can also be used to improve performance by eliminating the need to
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
Returns The interpolated variable. If xarray is enabled and the meta parameter is True, then the re-
sult will be a xarray.DataArray object. Otherwise, the result will be a numpy.ndarray
object with no metadata.
Return type xarray.DataArray or numpy.ndarray
The routines below are used for converting back and forth between xy-grid space and latitude-longitude space.
wrf.ll_to_xy
Parameters
• wrfin (netCDF4.Dataset, Nio.NioFile, or an iterable) – WRF-ARW NetCDF
wrf.xy_to_ll
Parameters
• wrfin (netCDF4.Dataset, Nio.NioFile, or an iterable) – WRF-ARW NetCDF
data as a netCDF4.Dataset, Nio.NioFile or an iterable sequence of the aforemen-
tioned types.
• x (float or sequence) – A single x-coordinate or a sequence of x-coordinate values to be
converted.
74 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
wrf.ll_to_xy_proj
Parameters
• latitude (float or sequence) – A single latitude or a sequence of latitude values to be
converted.
• longitude (float or sequence) – A single longitude or a sequence of latitude values to
be converted.
• squeeze (bool, optional) – Set to False to prevent dimensions with a size of 1 from being
automatically removed from the shape of the output. Default is True.
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
• as_int (bool) – Set to True to return the x,y values as int, otherwise they will be
returned as float.
• map_proj (int) – Model projection [1=Lambert Conformal, 2=Polar Stereographic,
3=Mercator, 6=Lat-Lon]. Required.
• truelat1 (float) – True latitude 1. Required for map_proj = 1, 2, 3 (defaults to 0
otherwise).
• truelat2 (float) – True latitude 2. Optional for map_proj = 1 (defaults to 0 otherwise).
• stand_lon (float) – Standard longitude. Required.
• ref_lat (float) – A reference latitude. Required.
• ref_lon (float) – A reference longitude. Required.
• known_x (float) – The known x-coordinate associated with ref_lon. Required.
• known_y (float) – The known y-coordinate associated with ref_lat. Required.
• pole_lat (float) – Pole latitude. Optional for map_proj = 6 (defaults to 90 otherwise).
• pole_lon (float) – Pole longitude. Optional for map_proj = 6 (defaults to 0 otherwise).
• dx (float) – The x spacing in meters at the true latitude. Required for map_proj = 1, 2, 3
(defaults to 0 otherwise).
• dy (float) – Required for map_proj = 1, 2, 3 (defaults to 0 otherwise).
• latinc (float) – Required for map_proj = 6. Defined as:
latinc = (dy*360.0)/2.0/Constants.PI/Constants.WRF_EARTH_RADIUS
loninc = (dx*360.0)/2.0/Constants.PI/Constants.WRF_EARTH_RADIUS
Returns The x,y coordinate value(s) whose leftmost dimension is 2 (0=X, 1=Y). If xarray is en-
abled and the meta parameter is True, then the result will be a xarray.DataArray object.
Otherwise, the result will be a numpy.ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.xy_to_ll_proj
Parameters
76 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
latinc = (dy*360.0)/2.0/Constants.PI/Constants.WRF_EARTH_RADIUS
loninc = (dx*360.0)/2.0/Constants.PI/Constants.WRF_EARTH_RADIUS
Returns The latitude and longitude values whose leftmost dimension is 2 (0=latitude, 1=longi-
tude). If xarray is enabled and the meta parameter is True, then the result will be a xarray.
DataArray object. Otherwise, the result will be a numpy.ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
The routine below is used to convert a variable on a staggered grid to the unstaggered grid.
wrf.destagger
The routine below is used to extract a numpy.ndarray from a xarray.DataArray. This routine must be used
before passing the array object to a compiled extension.
wrf.to_np
wrf.to_np(array)
Return the numpy.ndarray contained in an xarray.DataArray instance.
If the xarray.DataArray instance does not contain a _FillValue or missing_value attribute, then this routine
simply returns the xarray.DataArray.values attribute. If the xarray.DataArray object contains a
_FillValue or missing_value attribute, then this routine returns a numpy.ma.MaskedArray instance, where
the NaN values (used by xarray to represent missing data) are replaced with the fill value.
If the object passed in to this routine is not an xarray.DataArray instance, then this routine simply returns
the passed in object. This is useful in situations where you do not know if you have an xarray.DataArray
or a numpy.ndarray and simply want a numpy.ndarray returned.
Parameters array (xarray.DataArray, numpy.ndarray, or any object) – Can be any ob-
ject type, but is generally used with xarray.DataArray or numpy.ndarray.
Returns The extracted array or the array object if array is not a xarray.DataArray object..
Return type numpy.ndarray or numpy.ma.MaskedArray
The routines below are primarily used internally by wrf.getvar(), but some users may find them useful to manu-
ally extract variables from a WRF NetCDF file (or a sequence of NetCDF files).
78 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
wrf.extract_vars
wrf.combine_files
Parameters
• wrfin (iterable) – An iterable type, which includes lists, tuples, dictionaries, genera-
tors, and user-defined classes.
• varname (str) – The variable name.
• timeidx (int or wrf.ALL_TIMES, optional) – The desired time index. This value can
be a positive integer, negative integer, or wrf.ALL_TIMES (an alias for None) to return all
times in the file or sequence. The default is 0.
• is_moving (bool) – A boolean type that indicates if the sequence is a moving nest.
• method (str, optional) – The aggregation method to use for sequences. Must be either
‘cat’ or ‘join’. ‘cat’ combines the data along the Time dimension. ‘join’ creates a new
dimension for the file index. The default is ‘cat’.
• squeeze (bool, optional) – Set to False to prevent dimensions with a size of 1 from being
automatically removed from the shape of the output. Default is True.
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
• _key (int, optional) – Cache key for the coordinate variables. This is used for internal
purposes only. Default is None.
Returns If xarray is enabled and the meta parameter is True, then the result will be a xarray.
DataArray object. Otherwise, the result will be a numpy.ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.extract_dim
wrf.extract_dim(wrfin, dim)
Return the dimension size for the specified dimension name.
Parameters
• wrfin (netCDF4.Dataset, Nio.NioFile, or an iterable) – WRF-ARW NetCDF
data as a netCDF4.Dataset, Nio.NioFile or an iterable sequence of the aforemen-
tioned types.
• dim (str) – The dimension name.
Returns The dimension size.
Return type int
80 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
wrf.extract_global_attrs
wrf.extract_global_attrs(wrfin, attrs)
Return the global attribute(s).
If the wrfin parameter is a sequence, then only the first element is used, so the entire sequence must have the
same global attributes.
Parameters
• wrfin (netCDF4.Dataset, Nio.NioFile, or an iterable) – WRF-ARW NetCDF
data as a netCDF4.Dataset, Nio.NioFile or an iterable sequence of the aforemen-
tioned types.
• attrs (str, sequence) – The attribute name or a sequence of attribute names.
Returns A mapping of attribute_name to value.
Return type dict
wrf.extract_times
wrf.geo_bounds
82 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
• cache (dict, optional) – A dictionary of (varname, ndarray) that can be used to supply
pre-extracted NetCDF variables to the computational routines. It is primarily used for in-
ternal purposes, but can also be used to improve performance by eliminating the need to
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Only used when wrfin is used. Default is None.
Returns The domain geographic bounds.
Return type wrf.GeoBounds
wrf.latlon_coords
wrf.latlon_coords(var, as_np=False)
Return the latitude and longitude coordinates from a xarray.DataArray object.
Parameters
• var (xarray.DataArray) – A variable.
• to_np (bool) – Set to True to return the coordinates as numpy.ndarray objects instead
of xarray.DataArray objects.
Returns The latitude and longitude coordinate variables.
Return type tuple
wrf.get_cartopy
• cache (dict, optional) – A dictionary of (varname, ndarray) that can be used to supply
pre-extracted NetCDF variables to the computational routines. It is primarily used for in-
ternal purposes, but can also be used to improve performance by eliminating the need to
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
Returns A Projection subclass for the map projection.
Return type cartopy.crs.Projection
See also:
cartopy.crs.Projection
wrf.get_basemap
Parameters
• var (xarray.DataArray, optional) – A xarray.DataArray variable that includes
latitude,longitude coordinate information. If not used, then wrfin must be provided.
• geobounds (wrf.GeoBounds, optional) – The geobounds to get the extents. If set to
None and using the var parameter, the geobounds will be taken from the variable. If using a
file, then the geobounds will be taken from the native grid.
• wrfin (netCDF4.Dataset, Nio.NioFile, or an iterable, optional) – WRF-ARW
NetCDF data as a netCDF4.Dataset, Nio.NioFile or an iterable sequence of the
aforementioned types. If not used, then var must be provided.
• varname (str, optional) – If using wrfin, then this will be the variable name to use to
determine the geobounds. The variable can be a coordinate variable, or a regular vari-
able that contains coordinate attributes. If None, then the ‘XLAT’, ‘XLAT_M’, ‘XLONG’,
‘XLONG_M’ variables will be used.
• timeidx (int or wrf.ALL_TIMES, optional) – The desired time index. This value can
be a positive integer, negative integer, or wrf.ALL_TIMES (an alias for None) to return all
times in the file or sequence. Default is 0.
• method (str, optional) – The aggregation method to use for sequences. Must be either
‘cat’ or ‘join’. ‘cat’ combines the data along the Time dimension. ‘join’ creates a new
dimension for the file index. The default is ‘cat’.
• squeeze (bool, optional) – Set to False to prevent dimensions with a size of 1 from being
automatically removed from the shape of the output. Default is True.
• cache (dict, optional) – A dictionary of (varname, ndarray) that can be used to supply
pre-extracted NetCDF variables to the computational routines. It is primarily used for in-
ternal purposes, but can also be used to improve performance by eliminating the need to
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
• **kwargs – Keyword arguments for creating a matplotlib.mpl_toolkits.
basemap.Basemap. By default, the domain bounds will be set to the native projection,
the resolution will be set to ‘l’, and the other projection parameters will be set by the infor-
mation in the file.
84 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
wrf.get_pyngl
See also:
PyNGL
wrf.cartopy_xlim
pc = crs.PlateCarree()
xs, ys, _ = self._cartopy().transform_points(pc,
np.array([geobounds.bottom_left.lon,
geobounds.top_right.lon]),
np.array([geobounds.bottom_left.lat,
geobounds.top_right.lat])).T
_xlimits = xs.tolist()
_ylimits = ys.tolist()
Parameters
• var (xarray.DataArray, optional) – A xarray.DataArray variable that includes
latitude,longitude coordinate information. If not used, then wrfin must be provided.
• geobounds (wrf.GeoBounds, optional) – The geobounds to get the extents. If set to
None and using the var parameter, the geobounds will be taken from the variable. If using a
file, then the geobounds will be taken from the native grid.
• wrfin (netCDF4.Dataset, Nio.NioFile, or an iterable, optional) – WRF-ARW
NetCDF data as a netCDF4.Dataset, Nio.NioFile or an iterable sequence of the
aforementioned types. If not used, then var must be provided.
• varname (str, optional) – If using wrfin, then this will be the variable name to use to
determine the geobounds. The variable can be a coordinate variable, or a regular vari-
able that contains coordinate attributes. If None, then the ‘XLAT’, ‘XLAT_M’, ‘XLONG’,
‘XLONG_M’ variables will be used.
• timeidx (int or wrf.ALL_TIMES, optional) – The desired time index. This value can
be a positive integer, negative integer, or wrf.ALL_TIMES (an alias for None) to return all
times in the file or sequence. Default is 0.
• method (str, optional) – The aggregation method to use for sequences. Must be either
‘cat’ or ‘join’. ‘cat’ combines the data along the Time dimension. ‘join’ creates a new
dimension for the file index. The default is ‘cat’.
• squeeze (bool, optional) – Set to False to prevent dimensions with a size of 1 from being
automatically removed from the shape of the output. Default is True.
• cache (dict, optional) – A dictionary of (varname, ndarray) that can be used to supply
pre-extracted NetCDF variables to the computational routines. It is primarily used for in-
ternal purposes, but can also be used to improve performance by eliminating the need to
86 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
Returns A list of [start_x, end_x] in the projected coordinate system.
Return type list
wrf.cartopy_ylim
pc = crs.PlateCarree()
xs, ys, _ = self._cartopy().transform_points(pc,
np.array([geobounds.bottom_left.lon,
geobounds.top_right.lon]),
np.array([geobounds.bottom_left.lat,
geobounds.top_right.lat])).T
_xlimits = xs.tolist()
_ylimits = ys.tolist()
Parameters
• var (xarray.DataArray, optional) – A xarray.DataArray variable that includes
latitude,longitude coordinate information. If not used, then wrfin must be provided.
• geobounds (wrf.GeoBounds, optional) – The geobounds to get the extents. If set to
None and using the var parameter, the geobounds will be taken from the variable. If using a
file, then the geobounds will be taken from the native grid.
• wrfin (netCDF4.Dataset, Nio.NioFile, or an iterable, optional) – WRF-ARW
NetCDF data as a netCDF4.Dataset, Nio.NioFile or an iterable sequence of the
aforementioned types. If not used, then var must be provided.
• varname (str, optional) – If using wrfin, then this will be the variable name to use to
determine the geobounds. The variable can be a coordinate variable, or a regular vari-
able that contains coordinate attributes. If None, then the ‘XLAT’, ‘XLAT_M’, ‘XLONG’,
‘XLONG_M’ variables will be used.
• timeidx (int or wrf.ALL_TIMES, optional) – The desired time index. This value can
be a positive integer, negative integer, or wrf.ALL_TIMES (an alias for None) to return all
times in the file or sequence. Default is 0.
• method (str, optional) – The aggregation method to use for sequences. Must be either
‘cat’ or ‘join’. ‘cat’ combines the data along the Time dimension. ‘join’ creates a new
dimension for the file index. The default is ‘cat’.
• squeeze (bool, optional) – Set to False to prevent dimensions with a size of 1 from being
automatically removed from the shape of the output. Default is True.
• cache (dict, optional) – A dictionary of (varname, ndarray) that can be used to supply
pre-extracted NetCDF variables to the computational routines. It is primarily used for in-
ternal purposes, but can also be used to improve performance by eliminating the need to
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
Returns A list of [start_y, end_y] in the projected coordinate system.
Return type list
The routines below can be used when working with variables that are not contained in a WRF-ARW NetCDF file.
They can also be used with non-WRF data. However, if you are working with WRF-ARW NetCDF files, use wrf.
getvar() instead.
Keep in mind that these routines were developed for WRF-ARW, so your mileage may vary when working with non-
WRF data. Also, the vast majority of these routines do not allow for missing values in any of the input arrays, so make
sure they are removed before calling these routines.
88 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
wrf.xy
Examples
Example 1: Using Pivot Point and Angle
wrfnc = Dataset("wrfout_d02_2010-06-13_21:00:00")
field = wrf.getvar(wrfnc, "slp")
# West-East
angle = 90.0
wrfnc = Dataset("wrfout_d02_2010-06-13_21:00:00")
field = wrf.getvar(wrfnc, "slp")
wrf.interp1d
Warning: The input arrays must not contain any missing/fill values or numpy.nan values.
Returns An array with the same dimensionality as z_out containing the interpolated values. If xarray
is enabled and the meta parameter is True, then the result will be a xarray.DataArray
object. Otherwise, the result will be a numpy.ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
Examples
Example 1: Calculate the 850 hPa and 500 hPa values at location x,y = (100,200)
import numpy as np
from wrf import getvar, interp1d
from netCDF4 import Dataset
wrfnc = Dataset("wrfout_d02_2010-06-13_21:00:00")
90 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
# Get the 850 hPa and 500 hPa values at location 100,200.
interp_vals = interp1d(p_1d, ht_1d, levels)
wrf.interp2dxy
Parameters
• field3d (xarray.DataArray or numpy.ndarray) – The array to interpolate with
at least three dimensions, whose rightmost dimensions are nz x ny x nx.
• xy (xarray.DataArray or numpy.ndarray) – An array of one less dimension than
field3d, whose rightmost dimensions are nxy x 2. This array holds the x,y pairs of a line
across the model domain. The requested vertical cross section will be extracted from field3d
along this line.
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
Warning: The input arrays must not contain any missing/fill values or numpy.nan values.
Returns An array containing the vertical cross section along the line xy. The returned dimensions
will be the same as xy, but with the rightmost dimensions being nz x nxy. If xarray is enabled and
the meta parameter is True, then the result will be a xarray.DataArray object. Otherwise,
the result will be a numpy.ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
Examples
Example 1: Calculate the vertical cross section for RH for a diagonal line from the lower left to the upper right
of the domain.
wrfnc = Dataset("wrfout_d02_2010-06-13_21:00:00")
rh = getvar(wrfnc, "rh")
start = (0, 0)
end = (-1, -1)
xy_line = xy(rh, start_point=start, end_point=end)
wrf.interpz3d
Parameters
• field3d (xarray.DataArray or numpy.ndarray) – A three-dimensional field to
interpolate, with the rightmost dimensions of nz x ny x nx.
• vert (xarray.DataArray or numpy.ndarray) – A three-dimensional array for the
vertical coordinate, typically pressure or height. This array must have the same dimension-
ality as field3d.
• desiredlev (float) – The desired vertical level. Must be in the same units as the vert
parameter.
• missing (float) – The fill value to use for the output. Default is wrf.
default_fill(numpy.float64).
• meta (bool) – Set to False to disable metadata and return numpy.ndarray instead of
xarray.DataArray. Default is True.
Warning: The input arrays must not contain any missing/fill values or numpy.nan values.
Returns The interpolated variable. If xarray is enabled and the meta parameter is True, then the re-
sult will be an xarray.DataArray object. Otherwise, the result will be a numpy.ndarray
object with no metadata.
Return type xarray.DataArray or numpy.ndarray
92 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
Example
Example 1: Interpolate Geopotential Height to 500 hPa
wrfin = Dataset("wrfout_d02_2010-06-13_21:00:00")
p = getvar(wrfin, "pressure")
ht = getvar(wrfin, "z", units="dm")
wrf.slp
Warning: The input arrays must not contain any missing/fill values or numpy.nan values.
Returns The sea level pressure. If xarray is enabled and the meta parameter is True, then the result
will be an xarray.DataArray object. Otherwise, the result will be a numpy.ndarray
object with no metadata.
Return type xarray.DataArray or numpy.ndarray
See also:
wrf.getvar(), wrf.temp(), wrf.tk()
wrf.tk
Warning: The input arrays must not contain any missing/fill values or numpy.nan values.
Returns The temperature in the specified units. If xarray is enabled and the meta parameter is
True, then the result will be an xarray.DataArray object. Otherwise, the result will be a
numpy.ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
See also:
wrf.getvar(), wrf.tk()
wrf.td
94 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
Warning: The input arrays must not contain any missing/fill values or numpy.nan values.
Returns The dewpoint temperature. If xarray is enabled and the meta parameter is True, then the re-
sult will be an xarray.DataArray object. Otherwise, the result will be a numpy.ndarray
object with no metadata.
Return type xarray.DataArray or numpy.ndarray
See also:
wrf.getvar(), wrf.rh()
wrf.rh
• meta (bool) – Set to False to disable metadata and return numpy.ndarray instead of
xarray.DataArray. Default is True.
Warning: The input arrays must not contain any missing/fill values or numpy.nan values.
Returns The relative humidity. If xarray is enabled and the meta parameter is True, then the result
will be an xarray.DataArray object. Otherwise, the result will be a numpy.ndarray
object with no metadata.
Return type xarray.DataArray or numpy.ndarray
See also:
wrf.getvar(), wrf.td()
wrf.uvmet
96 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
Note: This variable must also be supplied as a xarray.DataArray in order to copy the
dimension names to the output. Otherwise, default names will be used.
cone = (cone /
(log(tan((45.-fabs(true_lat1/2.))*radians_per_degree))
- log(tan((45.-fabs(true_lat2/2.))*radians_per_degree))))
else:
cone = sin(fabs(true_lat1)*radians_per_degree)
• meta (bool) – Set to False to disable metadata and return numpy.ndarray instead of
xarray.DataArray. Default is True.
• units (str) – The desired units. Refer to the getvar() product table for a list of
available units for ‘uvmet’. Default is ‘m s-1’.
Warning: The input arrays must not contain any missing/fill values or numpy.nan values.
Returns The u,v components of the wind rotated to earth coordinates. The leftmost dimension size
is 2, for u and v. If xarray is enabled and the meta parameter is True, then the result will be an
xarray.DataArray object. Otherwise, the result will be a numpy.ndarray object with
no metadata.
Return type xarray.DataArray or numpy.ndarray
See also:
wrf.getvar()
wrf.smooth2d
wrf.cape_2d
98 Chapter 1. Documentation
wrf-python Documentation, Release 1.2.0
• ter_follow (bool) – A boolean that should be set to True if the data uses terrain fol-
lowing coordinates (WRF data). Set to False for pressure level data.
• missing (float, optional) – The fill value to use for the output. Default is wrf.
default_fill(numpy.float64).
• meta (bool) – Set to False to disable metadata and return numpy.ndarray instead of
xarray.DataArray. Default is True.
Warning: The input arrays must not contain any missing/fill values or numpy.nan values.
Returns The cape, cin, lcl, and lfc values as an array whose leftmost dimension is 4 (0=CAPE,
1=CIN, 2=LCL, 3=LFC) . If xarray is enabled and the meta parameter is True, then the result
will be an xarray.DataArray object. Otherwise, the result will be a numpy.ndarray
object with no metadata.
Return type xarray.DataArray or numpy.ndarray
See also:
wrf.getvar(), wrf.cape_3d()
wrf.cape_3d
dimension. When operating on a single vertical column, this argument must be a scalar
(float, numpy.float32, or numpy.float64).
• ter_follow (bool) – A boolean that should be set to True if the data uses terrain fol-
lowing coordinates (WRF data). Set to False for pressure level data.
• missing (float, optional) – The fill value to use for the output. Default is wrf.
default_fill(numpy.float64).
• meta (bool) – Set to False to disable metadata and return numpy.ndarray instead of
xarray.DataArray. Default is True.
Warning: The input arrays must not contain any missing/fill values or numpy.nan values.
Returns The CAPE and CIN as an array whose leftmost dimension is 2 (0=CAPE, 1=CIN). If xarray
is enabled and the meta parameter is True, then the result will be an xarray.DataArray
object. Otherwise, the result will be a numpy.ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
See also:
wrf.getvar(), wrf.cape_2d()
wrf.cloudfrac
Warning: The input arrays must not contain any missing/fill values or numpy.nan values.
Returns The cloud fraction array whose leftmost dimension is 3 (LOW=0, MID=1, HIGH=2).
If xarray is enabled and the meta parameter is True, then the result will be an xarray.
DataArray object. Otherwise, the result will be a numpy.ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
See also:
wrf.getvar(), wrf.rh()
wrf.ctt
Warning: The input arrays must not contain any missing/fill values or numpy.nan values.
Returns The cloud top temperature. If xarray is enabled and the meta parameter is True, then
the result will be an xarray.DataArray object. Otherwise, the result will be a numpy.
ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
See also:
wrf.getvar(), wrf.cloudfrac()
wrf.dbz
Warning: The input arrays must not contain any missing/fill values or numpy.nan values.
Returns The simulated radar reflectivity. If xarray is enabled and the meta parameter is True, then
the result will be an xarray.DataArray object. Otherwise, the result will be a numpy.
ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
See also:
wrf.getvar()
wrf.srhel
• top (float) – The height of the layer below which helicity is calculated (meters above
ground level).
• meta (bool) – Set to False to disable metadata and return numpy.ndarray instead of
xarray.DataArray. Default is True.
Warning: The input arrays must not contain any missing/fill values or numpy.nan values.
Returns The storm relative helicity. If xarray is enabled and the meta parameter is True, then the re-
sult will be an xarray.DataArray object. Otherwise, the result will be a numpy.ndarray
object with no metadata.
Return type xarray.DataArray or numpy.ndarray
See also:
wrf.getvar(), wrf.udhel()
wrf.udhel
Warning: The input arrays must not contain any missing/fill values or numpy.nan values.
Returns The updraft helicity. If xarray is enabled and the meta parameter is True, then the result
will be an xarray.DataArray object. Otherwise, the result will be a numpy.ndarray
object with no metadata.
Return type xarray.DataArray or numpy.ndarray
See also:
wrf.getvar(), wrf.srhel()
wrf.avo
Warning: The input arrays must not contain any missing/fill values or numpy.nan values.
Returns The absolute vorticity. If xarray is enabled and the meta parameter is True, then the result
will be an xarray.DataArray object. Otherwise, the result will be a numpy.ndarray
object with no metadata.
Return type xarray.DataArray or numpy.ndarray
See also:
wrf.getvar(), wrf.pvo()
wrf.pvo
wrf.pvo(ustag, vstag, theta, pres, msfu, msfv, msfm, cor, dx, dy, meta=True)
Return the potential vorticity.
This function calculates the potential vorticity [PVU] at each grid point.
This is the raw computational algorithm and does not extract any variables from WRF output files. Use wrf.
getvar() to both extract and compute diagnostic variables.
Parameters
• ustag (xarray.DataArray or numpy.ndarray) – The u component of the wind in
[m s-1] that is at least three dimensions with a staggered west_east dimension. The rightmost
dimensions are bottom_top x south_north x west_east_stag.
• vstag (xarray.DataArray or numpy.ndarray) – The v component of the wind
in [m s-1] that is at least three dimensions with a staggered south_north dimension. The
rightmost dimensions are bottom_top x south_north_stag x west_east.
• theta (xarray.DataArray or numpy.ndarray) – The potential temperature field
[K] whose rightmost dimensions are bottom_top x south_north x west_east and whose left-
most dimensions are the same as ustag.
Warning: The input arrays must not contain any missing/fill values or numpy.nan values.
Returns The potential vorticity. If xarray is enabled and the meta parameter is True, then the result
will be an xarray.DataArray object. Otherwise, the result will be a numpy.ndarray
object with no metadata.
Return type xarray.DataArray or numpy.ndarray
See also:
wrf.getvar(), wrf.avo()
wrf.eth
Warning: The input arrays must not contain any missing/fill values or numpy.nan values.
Returns The equivalent potential temperature. If xarray is enabled and the meta parameter is True,
then the result will be an xarray.DataArray object. Otherwise, the result will be a numpy.
ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
See also:
wrf.getvar(), wrf.temp(), wrf.wetbulb(), tvirtual()
wrf.wetbulb
Warning: The input arrays must not contain any missing/fill values or numpy.nan values.
Returns The wetbulb temperature. If xarray is enabled and the meta parameter is True, then the re-
sult will be an xarray.DataArray object. Otherwise, the result will be a numpy.ndarray
object with no metadata.
Return type xarray.DataArray or numpy.ndarray
See also:
wrf.getvar(), wrf.temp(), wrf.eth(), tvirtual()
wrf.tvirtual
This is the raw computational algorithm and does not extract any variables from WRF output files. Use wrf.
getvar() to both extract and compute diagnostic variables.
Parameters
• tkel (xarray.DataArray or numpy.ndarray) – Temperature in [K] with the right-
most dimensions as bottom_top x south_north x west_east.
Warning: The input arrays must not contain any missing/fill values or numpy.nan values.
Returns The virtual temperature. If xarray is enabled and the meta parameter is True, then the result
will be an xarray.DataArray object. Otherwise, the result will be a numpy.ndarray
object with no metadata.
Return type xarray.DataArray or numpy.ndarray
See also:
wrf.getvar(), wrf.temp(), wrf.eth(), wetbulb()
wrf.omega
Warning: The input arrays must not contain any missing/fill values or numpy.nan values.
Returns Omega. If xarray is enabled and the meta parameter is True, then the result will be an
xarray.DataArray object. Otherwise, the result will be a numpy.ndarray object with
no metadata.
Return type xarray.DataArray or numpy.ndarray
See also:
wrf.getvar(), uvmet()
wrf.pw
Warning: The input arrays must not contain any missing/fill values or numpy.nan values.
Returns The precipitable water [kg m-2]. If xarray is enabled and the meta parameter is True, then
the result will be an xarray.DataArray object. Otherwise, the result will be a numpy.
ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
See also:
wrf.getvar()
The routines below are the OpenMP runtime libraries that have been wrapped for wrf-python. The entire library
(OpenMP 3.x) has been wrapped, but many of the routines are only useful inside of an OpenMP thread, so they aren’t
useful from inside the Python interpreter. Also, the Fortran code in wrf-python is fairly simple in terms of threading,
so features like nested threads aren’t used. The documentation below is split in to the useful OpenMP functions and
the less useful functions.
The documentation for each routine was taken directly from the OpenMP Specification. Read the specification for
more details about these routines.
The routines below are useful when called from within a Python program. These routines handle setting the number
of threads, setting up the scheduler, and timing.
It is also important to note that the OpenMP directives within the Fortran code all specify a runtime scheduler. This
means that the user can control the type of scheduling to use from within their Python application by using the routines
below.
wrf.omp_enabled
wrf.omp_enabled()
Return True if OpenMP is enabled.
OpenMP is only enabled if compiled with OpenMP features.
wrf.omp_set_num_threads
wrf.omp_set_num_threads(num_threads)
Specify the number of threads to use.
The omp_set_num_threads routine affects the number of threads to be used for subsequent parallel regions that
do not specify a num_threads clause, by setting the value of the first element of the nthreads-var ICV of the
current task.
Parameters num_threads (a positive int) – The number of threads. Must be positive.
Returns None.
wrf.omp_get_max_threads
wrf.omp_get_max_threads()
Return the maximum number of threads that can be used in a parallel region.
The omp_get_max_threads routine returns an upper bound on the number of threads that could be used to form
a new team if a parallel construct without a num_threads clause were encountered after execution returns from
this routine.
Returns The number of threads in the current team.
Return type int
See also:
wrf.omp_set_num_threads()
wrf.omp_get_num_procs
wrf.omp_get_num_procs()
Return the number of processors on the device.
The omp_get_num_procs routine returns the number of processors that are available to the device at the time
the routine is called. This value may change between the time that it is determined by the omp_get_num_procs
routine and the time that it is read in the calling context due to system actions outside the control of the OpenMP
implementation.
Returns The number of processors.
Return type int
wrf.omp_set_dynamic
wrf.omp_set_dynamic(dynamic_threads)
Enable or disable dynamic adjustment of the number of threads available for the execution of subsequent parallel
regions by setting the value of the dyn-var ICV.
For implementations that support dynamic adjustment of the number of threads, if the argument to
omp_set_dynamic evaluates to True, dynamic adjustment is enabled for the current task; otherwise, dynamic
adjustment is disabled for the current task. For implementations that do not support dynamic adjustment of the
number of threads this routine has no effect: the value of dyn-var remains false.
Parameters dynamic_threads (bool) – Set to True to support the dynamic adjustment of the
number of threads. Otherwise, set to False.
Returns None.
See also:
wrf.omp_get_dynamic()
wrf.omp_get_dynamic
wrf.omp_get_dynamic()
Return the value of the dyn-var ICV, which determines whether dynamic adjustment of the number of threads is
enabled or disabled.
This routine returns 1 if dynamic adjustment of the number of threads is enabled for the current task; it returns
0, otherwise. If an implementation does not support dynamic adjustment of the number of threads, then this
routine always returns 0.
Returns Returns 1 if dynamic thread adjustment is enabled, 0 if disabled.
Return type int
See also:
wrf.omp_set_dynamic()
wrf.omp_set_schedule
wrf.omp_set_schedule(kind, modifier=0)
Set the schedule that is applied when runtime is used as schedule kind, by setting the value of the run-sched-var
ICV.
The effect of this routine is to set the value of the run-sched-var ICV of the current task to the values specified
in the two arguments. The schedule is set to the schedule type specified by the first argument kind. It can
be any of the standard schedule types or any other implementation specific one. For the schedule types static,
dynamic, and guided the chunk_size is set to the value of the second argument, or to the default chunk_size if
the value of the second argument is less than 1; for the schedule type auto the second argument has no meaning;
for implementation specific schedule types, the values and associated meanings of the second argument are
implementation defined.
Parameters
• kind (int) – Must be wrf.OMP_SCHED_STATIC, wrf.OMP_SCHED_DYNAMIC,
wrf.OMP_SCHED_GUIDED, or wrf.OMP_SCHED_AUTO.
• modifier (int) – An implementation specific value, depending on the choice for kind.
This parameter is alternatively named chunk_size in some OpenMP documentation. Default
is 0, which means the OpenMP implementation will use its default value.
Returns None
See also:
wrf.omp_get_schedule()
wrf.omp_get_schedule
wrf.omp_get_schedule()
Return the schedule that is applied when the runtime schedule is used.
This routine returns the run-sched-var ICV in the task to which the routine binds. The first item is the
schedule kind, which will be one of wrf.OMP_SCHED_STATIC, wrf.OMP_SCHED_DYNAMIC, wrf.
OMP_SCHED_GUIDED, or wrf.OMP_SCHED_AUTO. The second item returned is the modifier, which is often
named chunk_size in OpenMP documentation.
Returns The first item is an int for the schedule kind. The second items is int for the modifier
(chunk_size).
Return type tuple
See also:
wrf.omp_set_schedule()
wrf.omp_get_thread_limit
wrf.omp_get_thread_limit()
Return the maximum number of OpenMP threads available to participate in the current contention group.
The omp_get_thread_limit routine returns the value of the thread-limit-var ICV.
Returns The number of OpenMP threads available to participate in the current contention group.
Return type int
See also:
wrf.omp_get_max_threads()
wrf.omp_get_wtime
wrf.omp_get_wtime()
Return elapsed wall clock time in seconds.
The omp_get_wtime routine returns a value equal to the elapsed wall clock time in seconds since some “time
in the past”. The actual “time in the past” is arbitrary, but it is guaranteed not to change during the execution of
the application program. The time returned is a “per-thread time”, so it is not required to be globally consistent
across all threads participating in an application.
Returns Returns the wall clock time in seconds.
Return type float
See also:
wrf.omp_get_wtick()
wrf.omp_get_wtick
wrf.omp_get_wtick()
Return the precision of the timer used by wrf.omp_get_wtime().
The omp_get_wtick routine returns a value equal to the number of seconds between successive clock ticks of
the timer used by wrf.omp_get_wtime().
The routines below are less useful because wrf-python does not use nested parallelism and some of the routines are
only applicable when called from within an OpenMP thread.
wrf.omp_get_num_threads
wrf.omp_get_num_threads()
Return the number of threads in the current team.
The omp_get_num_threads routine returns the number of threads in the team executing the parallel region to
which the routine region binds. If called from the sequential part of a program, this routine returns 1.
Note: This function always returns 1 when called from within Python.
See also:
wrf.omp_get_max_threads(), wrf.omp_set_num_threads()
wrf.omp_get_thread_num
wrf.omp_get_thread_num()
Return the thread number, within the current team, of the calling thread.
The omp_get_thread_num routine returns the thread number of the calling thread, within the team executing the
parallel region to which the routine region binds. The thread number is an integer between 0 and one less than
the value returned by omp_get_num_threads, inclusive. The thread number of the master thread of the team is
0. The routine returns 0 if it is called from the sequential part of a program.
Note: This function always returns 0 when called from within Python.
See also:
wrf.omp_get_num_procs()
wrf.omp_in_parallel
wrf.omp_in_parallel()
Return 1 if the active-levels-var ICV is greater than zero; otherwise, return 0.
The effect of the omp_in_parallel routine is to return 1 if the current task is enclosed by an active parallel region,
and the parallel region is enclosed by the outermost initial task region on the device; otherwise it returns 0.
Note: This function always returns 0 when called from within Python.
Returns Returns 1 if the active-levels-var ICV is greater than zero. Otherwise, it returns 0.
Return type int
wrf.omp_set_nested
wrf.omp_set_nested(nested)
Enable or disable nested parallelism, by setting the nest-var ICV
For implementations that support nested parallelism, if the argument to omp_set_nested evaluates to True, nested
parallelism is enabled for the current task; otherwise, nested parallelism is disabled for the current task. For
implementations that do not support nested parallelism, this routine has no effect: the value of nest-var remains
False.
Parameters dynamic_threads (bool) – Set to True to support nested parallelism, otherwise
False.
Returns None
See also:
wrf.omp_get_nested()
wrf.omp_get_nested
wrf.omp_get_nested()
Return the value of the nest-var ICV, which determines if nested parallelism is enabled or disabled
This routine returns 1 if nested parallelism is enabled for the current task; it returns 0, otherwise. If an imple-
mentation does not support nested parallelism, this routine always returns 0.
Returns Returns 1 if nested parallelism is enabled, otherwise 0.
Return type int
See also:
wrf.omp_set_nested()
wrf.omp_set_max_active_levels
wrf.omp_set_max_active_levels(max_levels)
Limit the number of nested active parallel regions on the device, by setting the max-active-levels-var ICV.
The effect of this routine is to set the value of the max-active-levels-var ICV to the value specified in the
argument. If the number of parallel levels requested exceeds the number of levels of parallelism supported
by the implementation, the value of the max-active-levels-var ICV will be set to the number of parallel levels
supported by the implementation. This routine has the described effect only when called from a sequential part
of the program. When called from within an explicit parallel region, the effect of this routine is implementation
defined.
Parameters max_levels (int) – The maximum number of nested active parallel regions.
Returns None.
See also:
wrf.omp_get_max_active_levels()
wrf.omp_get_max_active_levels
wrf.omp_get_max_active_levels()
Return the value of the max-active-levels-var ICV, which determines the maximum number of nested active
parallel regions on the device
The omp_get_max_active_levels routine returns the value of the max-active-levels-var ICV, which determines
the maximum number of nested active parallel regions on the device.
Returns The maximum number of nested active parallel regions.
Return type int
See also:
wrf.omp_set_max_active_levels()
wrf.omp_get_level
wrf.omp_get_level()
Return the value of the levels-var ICV.
The effect of the omp_get_level routine is to return the number of nested parallel regions (whether active or
inactive) enclosing the current task such that all of the parallel regions are enclosed by the outermost initial task
region on the current device.
Returns The number of nested parallel regions.
Return type int
See also:
wrf.omp_get_active_level()
wrf.omp_get_ancestor_thread_num
wrf.omp_get_ancestor_thread_num(level)
Return, for a given nested level of the current thread, the thread number of the ancestor of the current thread.
The omp_get_ancestor_thread_num routine returns the thread number of the ancestor at a given nest level of the
current thread or the thread number of the current thread. If the requested nest level is outside the range of 0 and
the nest level of the current thread, as returned by the omp_get_level routine, the routine returns -1.
Parameters level (int) – The nested level of the current thread.
Returns
The thread number of the ancestor at a given nest level of the current thread.
Return type int
See also:
wrf.omp_get_max_active_levels(), wrf.omp_get_level()
wrf.omp_get_team_size
wrf.omp_get_team_size(level)
Return, for a given nested level of the current thread, the size of the thread team to which the ancestor or the
current thread belongs
The omp_get_team_size routine returns the size of the thread team to which the ancestor or the current thread
belongs. If the requested nested level is outside the range of 0 and the nested level of the current thread, as
returned by the omp_get_level routine, the routine returns -1. Inactive parallel regions are regarded like active
parallel regions executed with one thread.
Parameters level (int) – The nested level of the current thread.
Returns The size of the thread team.
Return type int
See also:
wrf.omp_get_ancestor_thread_num()
wrf.omp_get_active_level
wrf.omp_get_active_level()
Return the value of the active-level-vars ICV.
The effect of the omp_get_active_level routine is to return the number of nested, active parallel regions enclosing
the current task such that all of the parallel regions are enclosed by the outermost initial task region on the current
device.
Returns The number of nested activate parallel regions.
Return type int
See also:
wrf.omp_get_team_size()
wrf.omp_in_final
wrf.omp_in_final()
Return 1 (True) if the routine is executed in a final task region; otherwise, it returns 0 (False).
Returns Return 1 if the routine is executed in a final task region, 0 otherwise.
Return type int
wrf.omp_init_lock
wrf.omp_init_lock()
Initialize a simple OpenMP lock.
Returns An integer representing the lock.
Return type int
See also:
wrf.omp_init_nest_lock(), wrf.omp_destroy_lock()
wrf.omp_init_nest_lock
wrf.omp_init_nest_lock()
Initialize a nestable OpenMP lock.
Returns An integer representing the nestable lock.
Return type int
See also:
wrf.omp_init_lock()
wrf.omp_destroy_lock
wrf.omp_destroy_lock(svar)
Destroy a simple OpenMP lock.
This sets the lock to an uninitialized state.
Parameters svar (int) – An integer representing the lock.
See also:
wrf.omp_destroy_nest_lock(), wrf.omp_init_lock()
wrf.omp_destroy_nest_lock
wrf.omp_destroy_nest_lock(nvar)
Destroy a nestable OpenMP lock.
This sets the lock to an uninitialized state.
Parameters nvar (int) – An integer representing the nestable lock.
See also:
wrf.omp_destroy_lock(), wrf.omp_init_nest_lock()
wrf.omp_set_lock
wrf.omp_set_lock(svar)
Set a simple OpenMP lock.
Parameters svar (int) – An integer representing the lock.
See also:
wrf.omp_unset_lock(), wrf.omp_set_nest_lock()
wrf.omp_set_nest_lock
wrf.omp_set_nest_lock(nvar)
Set a nestable OpenMP lock.
Parameters nvar (int) – An integer representing the nestable lock.
See also:
wrf.omp_unset_nest_lock(), wrf.omp_set_lock()
wrf.omp_unset_lock
wrf.omp_unset_lock(svar)
Unset a simple OpenMP lock.
Parameters svar (int) – An integer representing the simple lock.
See also:
wrf.omp_unset_nest_lock(), wrf.omp_set_lock()
wrf.omp_unset_nest_lock
wrf.omp_unset_nest_lock(nvar)
Unset a nestable OpenMP lock.
Parameters nvar (int) – An integer representing the nestable lock.
See also:
wrf.omp_set_nest_lock(), wrf.omp_unset_lock()
wrf.omp_test_lock
wrf.omp_test_lock(svar)
Test a simple OpenMP lock.
This method attempts to set the lock, but does not suspend execution.
Parameters svar (int) – An integer representing the simple lock.
Returns Returns 1 (True) if the lock is successfully set, otherwise 0 (False).
Return type int
See also:
wrf.test_nest_lock(), wrf.omp_set_lock()
wrf.omp_test_nest_lock
wrf.omp_test_nest_lock(nvar)
Test a nestable OpenMP lock.
This method attempts to set the lock, but does not suspend execution.
Parameters nvar (int) – An integer representing the simple lock.
Returns Returns the nesting count if successful, otherwise 0 (False).
Return type int
See also:
wrf.test_lock(), wrf.omp_set_nest_lock()
Configuration Routines
The routines below are used to configure wrf-python by enabling or disabling third party packages. For the most part,
these settings are configured automatically based on the presence of a third party package. However, disabling xarray
can be useful when you want to turn off all metadata in one place.
wrf.xarray_enabled
wrf.xarray_enabled()
Return True if xarray is installed and enabled.
Returns True if xarray is installed and enabled.
Return type bool
wrf.disable_xarray
wrf.disable_xarray()
Disable xarray.
wrf.enable_xarray
wrf.enable_xarray()
Enable xarray.
wrf.cartopy_enabled
wrf.cartopy_enabled()
Return True if cartopy is installed and enabled.
Returns True if cartopy is installed and enabled.
Return type bool
wrf.disable_cartopy
wrf.disable_cartopy()
Disable cartopy.
wrf.enable_cartopy
wrf.enable_cartopy()
Enable cartopy.
wrf.basemap_enabled
wrf.basemap_enabled()
Return True if basemap is installed and enabled.
Returns True if basemap is installed and enabled.
Return type bool
wrf.disable_basemap
wrf.disable_basemap()
Disable basemap.
wrf.enable_basemap
wrf.enable_basemap()
Enable basemap.
wrf.pyngl_enabled
wrf.pyngl_enabled()
Return True if pyngl is installed and enabled.
Returns True if pyngl is installed and enabled.
Return type bool
wrf.enable_pyngl
wrf.enable_pyngl()
Enable pyngl.
wrf.disable_pyngl
wrf.disable_pyngl()
Disable pyngl.
wrf.set_cache_size
wrf.set_cache_size(size)
Set the maximum number of items that the threadlocal cache can retain.
This cache is primarily used for coordinate variables.
Parameters size (int) – The number of items to retain in the cache.
Returns None
wrf.get_cache_size
wrf.get_cache_size()
Return the maximum number of items that the threadlocal cache can retain.
Returns The maximum number of items the cache can retain.
Return type int
Miscellaneous Routines
The routines below are primarily used internally, but some users may find them helpful for other purposes.
wrf.is_time_coord_var
wrf.is_time_coord_var(varname)
Return True if the input variable name is a time coordinate.
Parameters varname (str) – The input variable name.
Returns True if the input variable is a time coordinate, otherwise False.
Return type bool
wrf.get_coord_pairs
wrf.get_coord_pairs(coord_varname)
Return a tuple for the variable names of the coordinate pair used for the 2D curvilinear coordinate variable.
For example, the ‘XLAT’ variable will have coordinate variables of (‘XLAT’, ‘XLONG’) since the ‘XLAT’
variable itself is two-dimensional.
Parameters coord_varname (str) – The coordinate variable name.
Returns True if the time index is wrf.ALL_TIMES or None, otherwise False.
Return type bool
wrf.is_multi_time_req
wrf.is_multi_time_req(timeidx)
Return True if the requested time index is for wrf.ALL_TIMES or None.
Parameters timeidx (int, wrf.ALL_TIMES, or None) – The requested time index.
Returns True if the time index is wrf.ALL_TIMES or None, otherwise False.
Return type bool
wrf.is_multi_file
wrf.is_multi_file(wrfin)
Return True if the input argument is an iterable.
wrf.has_time_coord
wrf.has_time_coord(wrfnc)
Return True if the input file or sequence contains the time coordinate variable.
The time coordinate is named ‘XTIME’.
Parameters wrfnc (netCDF4.Dataset or Nio.NioFile) – A single NetCDF file object.
Returns True if the netcdf file contains the time coordinate variable, False otherwise.
Return type bool
wrf.is_mapping
wrf.is_mapping(wrfin)
Return True if the input file or sequence is a mapping type.
Parameters wrfin (netCDF4.Dataset, Nio.NioFile, or an iterable) – WRF-ARW
NetCDF data as a netCDF4.Dataset, Nio.NioFile or an iterable sequence of the afore-
mentioned types.
Returns True if the input is a mapping type, False otherwise.
Return type bool
wrf.latlon_coordvars
wrf.latlon_coordvars(ncvars)
Return the first found latitude and longitude coordinate names from a NetCDF variable dictionary.
This function searches the dictionary structure for NetCDF variables and returns the first found latitude and
longitude coordinate names (typically ‘XLAT’ and ‘XLONG’).
Parameters ncvars (dict) – A NetCDF variable dictionary object.
Returns The latitude and longitude coordinate name pairs as (lat_coord_name, lon_coord_name).
Return type tuple
wrf.is_coordvar
wrf.is_coordvar(varname)
Returns True if the variable is a coordinate variable.
Parameters varname (str) – The variable name.
Returns True if the variable is a coordinate variable, otherwise False.
Return type bool
wrf.get_iterable
wrf.get_iterable(wrfseq)
Returns a resettable iterable object.
In this context, resettable means that when object.__iter__() is called, the iterable returned always
points to the first element in the sequence, similar to how the list and tuple behave.
Parameters wrfseq (iterable) – An iterable type, which includes lists, tuples, dictionaries,
generators, and user-defined classes.
Returns A resettable iterator object.
Return type iterable
wrf.is_moving_domain
wrf.npbytes_to_str
wrf.npbytes_to_str(var)
Return a bytes object for the raw character array.
Parameters var (numpy.ndarray) – An array of characters.
wrf.is_standard_wrf_var
wrf.is_standard_wrf_var(wrfin, varname)
Return True if the variable is a standard WRF variable and not a diagnostic.
If wrfin is a sequence, only the first file is used.
Parameters
• wrfin (netCDF4.Dataset, Nio.NioFile, or an iterable) – WRF-ARW NetCDF
data as a netCDF4.Dataset, Nio.NioFile or an iterable sequence of the aforemen-
tioned types.
• varname (str) – The variable name.
Returns True if the variable is a standard WRF variable, otherwise False.
Return type bool
wrf.is_staggered
wrf.is_staggered(wrfin, var)
Return True if the variable is on a staggered grid.
Parameters
• wrfin (netCDF4.Dataset, Nio.NioFile, or an iterable) – WRF-ARW NetCDF
data as a netCDF4.Dataset, Nio.NioFile or an iterable sequence of the aforemen-
tioned types.
• var (array) – An array object which contains a shape attribute.
Returns True if the variable is on a staggered grid, otherwise False.
Return type bool
wrf.get_left_indexes
wrf.get_left_indexes(var, expected_dims)
Returns a tuple for the extra leftmost dimension sizes.
For example, if an algorithm expects a 3 dimensional variable, but the variable includes an additional left di-
mension for Time, and this Time dimension has 3 values, then this function will return (3,).
Parameters
• var (array) – An array object that contains the ndim and shape attributes.
• expected_dims (int) – The expected number of dimensions (usually for a computa-
tional algorithm).
Returns The shape for the extra leftmost dimensions.
Return type tuple
wrf.iter_left_indexes
wrf.iter_left_indexes(dims)
Yield the iteration tuples for a sequence of dimensions sizes.
For example, if dims is (2,2), then this will yield:
(0,0), (0,1), (1,0), (1,1)
This is primarily used to iterate over the leftmost index values.
Parameters dims (indexable sequence) – A sequence of dimension sizes.
Yields tuple – The leftmost indexing iteration sizes.
wrf.get_right_slices
wrf.get_proj_params
wrf.get_proj_params(wrfin)
Return a tuple of latitude, longitude, and projection parameters from a WRF output file object or a sequence of
WRF output file objects.
Parameters
• wrfin (netCDF4.Dataset, Nio.NioFile, or an iterable) – WRF-ARW NetCDF
data as a netCDF4.Dataset, Nio.NioFile or an iterable sequence of the aforemen-
tioned types.
• timeidx (int or wrf.ALL_TIMES, optional) – The desired time index. This value can
be a positive integer, negative integer, or wrf.ALL_TIMES (an alias for None) to return all
times in the file or sequence. Default is 0.
• varname (str, optional) – The variable name to extract the coordinate variable names
from. Default is None, which will use the default coordinate variable names (‘XLAT’,
‘XLONG’).
Returns A tuple of the latitude coordinate variable, longitude coordinate, and global projection
attributes.
Return type tuple
wrf.psafilepath
wrf.psafilepath()
Return the full path to the ‘psadilookup.dat’ file.
The ‘psadilookup.dat’ file contains the lookup table for the cape routines.
Returns The full path to the ‘psadilookup.dat’ file.
Return type str
wrf.get_id
wrf.get_id(obj, prefix=”)
Return the cache id.
The cache id is used as a caching key for various routines. If the object type is a mapping, then the result will
also be a mapping of each key to the object id for the value.
Parameters
• obj (object) – Any object type.
• prefix (str) – A string to help with recursive calls.
Returns If the obj parameter is not a mapping, then the object id is returned. Otherwise, a mapping
of each key to the object id for the value is returned.
Return type int or dict
wrf.getproj
wrf.getproj(**proj_params)
Return a wrf.WrfProj subclass.
This functions serves as a factory function for returning a wrf.WrfProj subclass from the specified map
projection parameters.
Parameters **proj_params – Map projection optional keyword arguments, that have the same
names as found in WRF output NetCDF global attributes:
• ’MAP_PROJ’: The map projection type as an integer.
• ’TRUELAT1’: True latitude 1.
• ’TRUELAT2’: True latitude 2.
• ’MOAD_CEN_LAT’: Mother of all domains center latitude.
• ’STAND_LON’: Standard longitude.
• ’POLE_LAT’: Pole latitude.
• ’POLE_LON’: Pole longitude.
Returns A wrf.WrfProj subclass for the specified map projection parameters.
Return type wrf.WrfProj
wrf.cache_item
wrf.get_cached_item
wrf.get_cached_item(key, product)
Return an item from the threadlocal cache.
The cache should be viewed as two nested dictionaries. The outer key is usually the id for the sequence where
the cached item was generated. The inner key is the product type.
Retrieving a cached item behaves like:
value = cache[key][product]
The cache is thread local, so stored items are only available in the thread that cached them.
Parameters
• key (int) – The outer dictionary cache key, which is typically the id of the sequence where
the cached item was generated.
• product (str) – The inner dictionary cache key, which is a string for the product type.
Returns The cached object.
Return type object
See also:
cache_item()
wrf.ll_points
wrf.ll_points(lat, lon)
Return the lower left latitude and longitude point(s).
This functions extracts the lower left corner points and returns the result as either a single CoordPair object,
or a list of CoordPair objects.
This is primarily used for testing or constructing the corner point objects from the XLAT and XLONG variables.
Parameters
• lat (xarray.DataArray or numpy.ndarray) – The latitude array. Must be at least
two dimensions.
• lon (xarray.DataArray or numpy.ndarray) – The longitude array. Must be at
least two dimensions.
Returns A single wrf.CoordPair object or a list of wrf.CoordPair objects.
Return type wrf.CoordPair or list
wrf.pairs_to_latlon
wrf.pairs_to_latlon(pairs)
Return latitude and longitude arrays from a sequence of wrf.CoordPair objects.
This function converts a sequence of wrf.CoordPair objects into lists of latitude and longitude points. If
the pairs argument is a single wrf.CoordPair object, then a single latitude and longitude value is returned.
Parameters pairs (wrf.CoordPair or sequence) – A single wrf.CoordPair or sequence
of wrf.CoordPair.
Returns A tuple of (lat, lon), where lat and lon are single values or lists of values.
Return type tuple
Classes
Exceptions
wrf.DiagnosticError
exception wrf.DiagnosticError(message=None)
Raised when an error occurs in a diagnostic routine.
CoordPair Class
The class below is used for storing coordinate metadata from routines that use a single point for an (x, y) or (lat, lon)
location.
wrf.CoordPair
Methods
CoordPair Methods
wrf.CoordPair.latlon_str
CoordPair.latlon_str(fmt=’{:.4f}, {:.4f}’)
Return a str for the (latitude, longitude) coordinate pair.
Parameters fmt (str) – The format string. Default is ‘{:.4f}, {:.4f}’
Returns A string for the (latitude, longitude) coordinate pair
Return type str
wrf.CoordPair.xy_str
CoordPair.xy_str(fmt=’{:.4f}, {:.4f}’)
Return a str for the (x,y) coordinate pair.
Parameters fmt (str) – The format string. Default is ‘{:.4f}, {:.4f}’
Returns A string for the (x,y) coordinate pair
Return type str
GeoBounds Class
wrf.GeoBounds
Methods
Projection Classes
The classes below are used to hold the projection information in the ‘projection’ entry within a xarray.
DataArray.attrs attribute.
wrf.WrfProj
class wrf.WrfProj(**proj_params)
A base class for storing map projection information from WRF data.
Subclasses of this type will be stored in the ‘projection’ attribute entry within a xarray.DataArray.attrs
dictionary. This base class contains the methods required to extract the appropriate projection class for PyNGL,
matplotlib basemap, and cartopy.
map_proj
int – Model projection integer id.
truelat1
float – True latitude 1.
truelat2
float – True latitude 2.
moad_cen_lat
float – Mother of all domains center latitude.
stand_lon
float – Standard longitude.
pole_lat
float – The pole latitude.
pole_lon
float – The pole longitude.
dx
float – The x grid spacing.
dy
float – The y grid spacing.
__init__(**proj_params)
Initialize a wrf.WrfProj object.
Parameters **proj_params – Map projection optional keyword arguments, that have the
same names as found in WRF output NetCDF global attributes (case insensitive):
• ’MAP_PROJ’: The map projection type as an integer.
• ’TRUELAT1’: True latitude 1.
Methods
wrf.WrfProj.basemap
WrfProj.basemap(geobounds, **kwargs)
Return a matplotlib.mpl_toolkits.basemap.Basemap object for the map projection.
Parameters
wrf.WrfProj.cartopy
WrfProj.cartopy()
Return a cartopy.crs.Projection subclass for the map projection.
Returns A Projection subclass for the map projection.
Return type cartopy.crs.Projection
See also:
cartopy.crs.Projection
wrf.WrfProj.cartopy_xlim
WrfProj.cartopy_xlim(geobounds)
Return the x extents in projected coordinates for cartopy.
Returns A pair of [xmin, xmax].
Return type list
See also:
cartopy, matplotlib
wrf.WrfProj.cartopy_ylim
WrfProj.cartopy_ylim(geobounds)
Return the y extents in projected coordinates for cartopy.
Returns A pair of [ymin, ymax].
Return type list
See also:
cartopy, matplotlib
wrf.WrfProj.pyngl
WrfProj.pyngl(geobounds, **kwargs)
Return a Ngl.Resources object for the map projection.
Parameters
• geobounds (wrf.GeoBounds, optional) – The geobounds to get the extents. If set to
None and using the var parameter, the geobounds will be taken from the variable. If using a
file, then the geobounds will be taken from the native grid.
• **kwargs – Additional PyNGL resources to set while creating the Ngl.Resources
object.
Returns A dict-like object that contains the PyNGL resources for the map projection.
Return type Ngl.Resources
See also:
PyNGL
wrf.WrfProj.cf
WrfProj.cf()
Return a dictionary with the NetCDF CF parameters for the projection.
Returns:
dict: A dictionary with the NetCDF CF parameter names and projection parameter values.
wrf.WrfProj.proj4
WrfProj.proj4()
Return the PROJ.4 string for the map projection.
Returns A string suitable for use with the PROJ.4 library.
Return type str
See also:
PROJ.4 <https://trac.osgeo.org/proj/>‘_
Projection Subclasses
wrf.NullProjection
class wrf.NullProjection
A wrf.WrfProj subclass for empty projections.
The NullProjection is primarily used for creating missing projections when using the ‘join’ method.
__init__()
Initialize a wrf.NullProjection object.
Methods
wrf.LambertConformal
class wrf.LambertConformal(**proj_params)
A wrf.WrfProj subclass for Lambert Conformal Conic projections.
See also:
wrf.WrfProj, wrf.LatLon, wrf.PolarStereographic, Mercator, RotatedLatLon
__init__(**proj_params)
Initialize a wrf.LambertConformal object.
Parameters **proj_params – Map projection optional keyword arguments, that have the
same names as found in WRF output NetCDF global attributes:
• ’TRUELAT1’: True latitude 1.
• ’TRUELAT2’: True latitude 2.
• ’MOAD_CEN_LAT’: Mother of all domains center latitude.
• ’STAND_LON’: Standard longitude.
• ’POLE_LAT’: Pole latitude.
Methods
wrf.Mercator
class wrf.Mercator(**proj_params)
A wrf.WrfProj subclass for Mercator projections.
See also:
wrf.WrfProj, wrf.LatLon, wrf.PolarStereographic, RotatedLatLon,
LambertConformal
__init__(**proj_params)
Initialize a wrf.Mercator object.
Parameters **proj_params – Map projection optional keyword arguments, that have the
same names as found in WRF output NetCDF global attributes:
• ’TRUELAT1’: True latitude 1.
• ’TRUELAT2’: True latitude 2.
• ’MOAD_CEN_LAT’: Mother of all domains center latitude.
• ’STAND_LON’: Standard longitude.
• ’POLE_LAT’: Pole latitude.
• ’POLE_LON’: Pole longitude.
Methods
wrf.PolarStereographic
class wrf.PolarStereographic(**proj_params)
A wrf.WrfProj subclass for Polar Stereographic projections.
See also:
wrf.WrfProj, wrf.LatLon, wrf.RotatedLatLon, Mercator, LambertConformal
__init__(**proj_params)
Initialize a wrf.PolarStereographic object.
Parameters **proj_params – Map projection optional keyword arguments, that have the
same names as found in WRF output NetCDF global attributes:
• ’TRUELAT1’: True latitude 1.
• ’TRUELAT2’: True latitude 2.
• ’MOAD_CEN_LAT’: Mother of all domains center latitude.
• ’STAND_LON’: Standard longitude.
• ’POLE_LAT’: Pole latitude.
• ’POLE_LON’: Pole longitude.
Methods
wrf.LatLon
class wrf.LatLon(**proj_params)
A wrf.WrfProj subclass for Lat Lon projections.
See also:
wrf.WrfProj, wrf.RotatedLatLon, wrf.PolarStereographic, Mercator,
LambertConformal
__init__(**proj_params)
Initialize a wrf.LatLon object.
Parameters **proj_params – Map projection optional keyword arguments, that have the
same names as found in WRF output NetCDF global attributes:
• ’TRUELAT1’: True latitude 1.
• ’TRUELAT2’: True latitude 2.
• ’MOAD_CEN_LAT’: Mother of all domains center latitude.
• ’STAND_LON’: Standard longitude.
• ’POLE_LAT’: Pole latitude.
• ’POLE_LON’: Pole longitude.
Methods
wrf.RotatedLatLon
class wrf.RotatedLatLon(**proj_params)
A wrf.WrfProj subclass for Rotated Lat Lon projections.
See also:
wrf.WrfProj, wrf.LatLon, wrf.PolarStereographic, Mercator, LambertConformal
__init__(**proj_params)
Initialize a wrf.RotatedLatLon object.
Parameters **proj_params – Map projection optional keyword arguments, that have the
Methods
Routines
wrf.g_cape.get_2dcape
wrf.g_cape.get_3dcape
• method (str, optional) – The aggregation method to use for sequences. Must be either
‘cat’ or ‘join’. ‘cat’ combines the data along the Time dimension. ‘join’ creates a new
dimension for the file index. The default is ‘cat’.
• squeeze (bool, optional) – Set to False to prevent dimensions with a size of 1 from being
automatically removed from the shape of the output. Default is True.
• cache (dict, optional) – A dictionary of (varname, ndarray) that can be used to supply
pre-extracted NetCDF variables to the computational routines. It is primarily used for in-
ternal purposes, but can also be used to improve performance by eliminating the need to
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
• _key (int, optional) – A caching key. This is used for internal purposes only. Default is
None.
• missing (float) – The fill value to use for the output. Default is wrf.
default_fill(np.float64).
Returns The CAPE and CIN as an array whose leftmost dimension is 2 (0=CAPE, 1=CIN). If xarray
is enabled and the meta parameter is True, then the result will be a xarray.DataArray
object. Otherwise, the result will be a numpy.ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.g_cloudfrac.get_cloudfrac
This functions extracts the necessary variables from the NetCDF file object in order to perform the calculation.
Parameters
• wrfin (netCDF4.Dataset, Nio.NioFile, or an iterable) – WRF-ARW NetCDF
data as a netCDF4.Dataset, Nio.NioFile or an iterable sequence of the aforemen-
tioned types.
• timeidx (int or wrf.ALL_TIMES, optional) – The desired time index. This value can
be a positive integer, negative integer, or wrf.ALL_TIMES (an alias for None) to return all
times in the file or sequence. The default is 0.
• method (str, optional) – The aggregation method to use for sequences. Must be either
‘cat’ or ‘join’. ‘cat’ combines the data along the Time dimension. ‘join’ creates a new
dimension for the file index. The default is ‘cat’.
• squeeze (bool, optional) – Set to False to prevent dimensions with a size of 1 from being
automatically removed from the shape of the output. Default is True.
• cache (dict, optional) – A dictionary of (varname, ndarray) that can be used to supply
pre-extracted NetCDF variables to the computational routines. It is primarily used for in-
ternal purposes, but can also be used to improve performance by eliminating the need to
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
• _key (int, optional) – A caching key. This is used for internal purposes only. Default is
None.
• vert_type (str, optional) – The type of vertical coordinate used to determine cloud type
thresholds. Must be ‘height_agl’, ‘height_msl’, or ‘pres’. The default is ‘height_agl’.
• low_thresh (float, optional) – The lower bound for what is considered a low cloud. If
vert_type is ‘pres’, the default is 97000 Pa. If vert_type is ‘height_agl’ or ‘height_msl’, then
the default is 300 m.
• mid_thresh (float, optional) – The lower bound for what is considered a mid level
cloud. If vert_type is ‘pres’, the default is 80000 Pa. If vert_type is ‘height_agl’ or
‘height_msl’, then the default is 2000 m.
• high_thresh (float, optional) – The lower bound for what is considered a high level
cloud. If vert_type is ‘pres’, the default is 45000 Pa. If vert_type is ‘height_agl’ or
‘height_msl’, then the default is 6000 m.
Returns The cloud fraction array whose leftmost dimension is 3 (LOW=0, MID=1, HIGH=2).
If xarray is enabled and the meta parameter is True, then the result will be a xarray.
DataArray object. Otherwise, the result will be a numpy.ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.g_ctt.get_ctt
Parameters
• wrfin (netCDF4.Dataset, Nio.NioFile, or an iterable) – WRF-ARW NetCDF
data as a netCDF4.Dataset, Nio.NioFile or an iterable sequence of the aforemen-
tioned types.
• timeidx (int or wrf.ALL_TIMES, optional) – The desired time index. This value can
be a positive integer, negative integer, or wrf.ALL_TIMES (an alias for None) to return all
times in the file or sequence. The default is 0.
• method (str, optional) – The aggregation method to use for sequences. Must be either
‘cat’ or ‘join’. ‘cat’ combines the data along the Time dimension. ‘join’ creates a new
dimension for the file index. The default is ‘cat’.
• squeeze (bool, optional) – Set to False to prevent dimensions with a size of 1 from being
automatically removed from the shape of the output. Default is True.
• cache (dict, optional) – A dictionary of (varname, ndarray) that can be used to supply
pre-extracted NetCDF variables to the computational routines. It is primarily used for in-
ternal purposes, but can also be used to improve performance by eliminating the need to
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
• _key (int, optional) – A caching key. This is used for internal purposes only. Default is
None.
• fill_nocloud (bool, optional) – Set to True to use fill values in regions where clouds
are not detected (optical depth less than 1). Otherwise, the output will contain the surface
temperature for areas without clouds. Default is False.
• missing (float, optional) – The fill value to use for areas where no clouds are detected.
Only used if fill_nocloud is True. Default is wrf.default_fill(numpy.float64).
• opt_thresh (float, optional) – The amount of optical depth (integrated from top down)
required to trigger a cloud top temperature calculation. The cloud top temperature is cal-
culated at the vertical level where this threshold is met. Vertical columns with less than
this threshold will be treated as cloud free areas. In general, the larger the value is for this
threshold, the lower the altitude will be for the cloud top temperature calculation, and there-
fore higher cloud top temperature values. Default is 1.0, which should be sufficient for most
users.
• units (str) – The desired units. Refer to the getvar() product table for a list of
available units for ‘ctt’. Default is ‘degC’.
Returns The cloud top temperature. If xarray is enabled and the meta parameter is True, then
the result will be a xarray.DataArray object. Otherwise, the result will be a numpy.
ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.g_dbz.get_dbz
Parameters
• wrfin (netCDF4.Dataset, Nio.NioFile, or an iterable) – WRF-ARW NetCDF
data as a netCDF4.Dataset, Nio.NioFile or an iterable sequence of the aforemen-
tioned types.
• timeidx (int or wrf.ALL_TIMES, optional) – The desired time index. This value can
be a positive integer, negative integer, or wrf.ALL_TIMES (an alias for None) to return all
times in the file or sequence. The default is 0.
• method (str, optional) – The aggregation method to use for sequences. Must be either
‘cat’ or ‘join’. ‘cat’ combines the data along the Time dimension. ‘join’ creates a new
dimension for the file index. The default is ‘cat’.
• squeeze (bool, optional) – Set to False to prevent dimensions with a size of 1 from being
automatically removed from the shape of the output. Default is True.
• cache (dict, optional) – A dictionary of (varname, ndarray) that can be used to supply
pre-extracted NetCDF variables to the computational routines. It is primarily used for in-
ternal purposes, but can also be used to improve performance by eliminating the need to
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
• _key (int, optional) – A caching key. This is used for internal purposes only. Default is
None.
• use_varint (bool, optional) – When set to False, the intercept parameters are assumed
constant (as in MM5’s Reisner-2 bulk microphysical scheme). When set to True, the vari-
able intercept parameters are used as in the more recent version of Reisner-2 (based on
Thompson, Rasmussen, and Manning, 2004, Monthly weather Review, Vol. 132, No. 2, pp.
519-542.).
• use_liqskin (bool, optional) – When set to True, frozen particles that are at a temper-
ature above freezing are assumed to scatter as a liquid particle. Set to False to disable.
Returns The simulated radar reflectivity. If xarray is enabled and the meta parameter is True, then
the result will be a xarray.DataArray object. Otherwise, the result will be a numpy.
ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.g_dbz.get_max_dbz
• timeidx (int or wrf.ALL_TIMES, optional) – The desired time index. This value can
be a positive integer, negative integer, or wrf.ALL_TIMES (an alias for None) to return all
times in the file or sequence. The default is 0.
• method (str, optional) – The aggregation method to use for sequences. Must be either
‘cat’ or ‘join’. ‘cat’ combines the data along the Time dimension. ‘join’ creates a new
dimension for the file index. The default is ‘cat’.
• squeeze (bool, optional) – Set to False to prevent dimensions with a size of 1 from being
automatically removed from the shape of the output. Default is True.
• cache (dict, optional) – A dictionary of (varname, ndarray) that can be used to supply
pre-extracted NetCDF variables to the computational routines. It is primarily used for in-
ternal purposes, but can also be used to improve performance by eliminating the need to
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
• _key (int, optional) – A caching key. This is used for internal purposes only. Default is
None.
• use_varint (bool, optional) – When set to False, the intercept parameters are assumed
constant (as in MM5’s Reisner-2 bulk microphysical scheme). When set to True, the vari-
able intercept parameters are used as in the more recent version of Reisner-2 (based on
Thompson, Rasmussen, and Manning, 2004, Monthly weather Review, Vol. 132, No. 2, pp.
519-542.).
• use_liqskin (bool, optional) – When set to True, frozen particles that are at a temper-
ature above freezing are assumed to scatter as a liquid particle. Set to False to disable.
Returns The maximum simulated radar reflectivity. If xarray is enabled and the meta parameter is
True, then the result will be a xarray.DataArray object. Otherwise, the result will be a
numpy.ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.g_dewpoint.get_dp
• squeeze (bool, optional) – Set to False to prevent dimensions with a size of 1 from being
automatically removed from the shape of the output. Default is True.
• cache (dict, optional) – A dictionary of (varname, ndarray) that can be used to supply
pre-extracted NetCDF variables to the computational routines. It is primarily used for in-
ternal purposes, but can also be used to improve performance by eliminating the need to
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
• _key (int, optional) – A caching key. This is used for internal purposes only. Default is
None.
• units (str) – The desired units. Refer to the getvar() product table for a list of
available units for ‘td’. Default is ‘degC’.
Returns The dewpoint temperature. If xarray is enabled and the meta parameter is True, then the re-
sult will be a xarray.DataArray object. Otherwise, the result will be a numpy.ndarray
object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.g_dewpoint.get_dp_2m
• units (str) – The desired units. Refer to the getvar() product table for a list of
available units for ‘td2’. Default is ‘degC’.
Returns The 2m dewpoint temperature. If xarray is enabled and the meta parameter is True, then
the result will be a xarray.DataArray object. Otherwise, the result will be a numpy.
ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.g_geoht.get_geopt
wrf.g_geoht.get_height
If msl is True, then geopotential height is returned as Mean Sea Level (MSL). If msl is False, then geopotential
height is returned as Above Ground Level (AGL) by subtracting the terrain height.
This functions extracts the necessary variables from the NetCDF file object in order to perform the calculation.
Parameters
• wrfin (netCDF4.Dataset, Nio.NioFile, or an iterable) – WRF-ARW NetCDF
data as a netCDF4.Dataset, Nio.NioFile or an iterable sequence of the aforemen-
tioned types.
• timeidx (int or wrf.ALL_TIMES, optional) – The desired time index. This value can
be a positive integer, negative integer, or wrf.ALL_TIMES (an alias for None) to return all
times in the file or sequence. The default is 0.
• method (str, optional) – The aggregation method to use for sequences. Must be either
‘cat’ or ‘join’. ‘cat’ combines the data along the Time dimension. ‘join’ creates a new
dimension for the file index. The default is ‘cat’.
• squeeze (bool, optional) – Set to False to prevent dimensions with a size of 1 from being
automatically removed from the shape of the output. Default is True.
• cache (dict, optional) – A dictionary of (varname, ndarray) that can be used to supply
pre-extracted NetCDF variables to the computational routines. It is primarily used for in-
ternal purposes, but can also be used to improve performance by eliminating the need to
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
• _key (int, optional) – A caching key. This is used for internal purposes only. Default is
None.
• msl (bool, optional) – Set to True to return geopotential height as Mean Sea Level (MSL).
Set to False to return the geopotential height as Above Ground Level (AGL) by subtracting
the terrain height. Default is True.
• units (str) – The desired units. Refer to the getvar() product table for a list of
available units for ‘z’. Default is ‘m’.
Returns The geopotential height. If xarray is enabled and the meta parameter is True, then the result
will be a xarray.DataArray object. Otherwise, the result will be a numpy.ndarray
object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.g_helicity.get_srh
• timeidx (int or wrf.ALL_TIMES, optional) – The desired time index. This value can
be a positive integer, negative integer, or wrf.ALL_TIMES (an alias for None) to return all
times in the file or sequence. The default is 0.
• method (str, optional) – The aggregation method to use for sequences. Must be either
‘cat’ or ‘join’. ‘cat’ combines the data along the Time dimension. ‘join’ creates a new
dimension for the file index. The default is ‘cat’.
• squeeze (bool, optional) – Set to False to prevent dimensions with a size of 1 from being
automatically removed from the shape of the output. Default is True.
• cache (dict, optional) – A dictionary of (varname, ndarray) that can be used to supply
pre-extracted NetCDF variables to the computational routines. It is primarily used for in-
ternal purposes, but can also be used to improve performance by eliminating the need to
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
• _key (int, optional) – A caching key. This is used for internal purposes only. Default is
None.
• top (float, optional) – The top of the integration in [m]. Default is 3000.0.
Returns The storm relative helicity. If xarray is enabled and the meta parameter is True, then the re-
sult will be a xarray.DataArray object. Otherwise, the result will be a numpy.ndarray
object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.g_helicity.get_uh
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
• _key (int, optional) – A caching key. This is used for internal purposes only. Default is
None.
• bottom (float, optional) – The bottom limit for the integration in [m]. Default is 2000.0.
• top (float, optional) – The top limit for the integration in [m]. Default is 5000.0.
Returns The updraft helicity. If xarray is enabled and the meta parameter is True, then the result will
be a xarray.DataArray object. Otherwise, the result will be a numpy.ndarray object
with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.g_omega.get_omega
wrf.g_pressure.get_pressure
wrf.g_pressure.get_pressure_hpa
• timeidx (int or wrf.ALL_TIMES, optional) – The desired time index. This value can
be a positive integer, negative integer, or wrf.ALL_TIMES (an alias for None) to return all
times in the file or sequence. The default is 0.
• method (str, optional) – The aggregation method to use for sequences. Must be either
‘cat’ or ‘join’. ‘cat’ combines the data along the Time dimension. ‘join’ creates a new
dimension for the file index. The default is ‘cat’.
• squeeze (bool, optional) – Set to False to prevent dimensions with a size of 1 from being
automatically removed from the shape of the output. Default is True.
• cache (dict, optional) – A dictionary of (varname, ndarray) that can be used to supply
pre-extracted NetCDF variables to the computational routines. It is primarily used for in-
ternal purposes, but can also be used to improve performance by eliminating the need to
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
• meta (bool, optional) –
Set to False to disable metadata and return numpy.ndarray instead of xarray.
DataArray. Default is True.
_key (int, optional): A caching key. This is used for internal purposes only. Default is
None.
Returns The pressure in [hPa]. If xarray is enabled and the meta parameter is True, then the result
will be a xarray.DataArray object. Otherwise, the result will be a numpy.ndarray
object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.g_pw.get_pw
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
• _key (int, optional) – A caching key. This is used for internal purposes only. Default is
None.
Returns The preciptable water. If xarray is enabled and the meta parameter is True, then the result
will be a xarray.DataArray object. Otherwise, the result will be a numpy.ndarray
object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.g_rh.get_rh
wrf.g_rh.get_rh_2m
wrf.g_slp.get_slp
• method (str, optional) – The aggregation method to use for sequences. Must be either
‘cat’ or ‘join’. ‘cat’ combines the data along the Time dimension. ‘join’ creates a new
dimension for the file index. The default is ‘cat’.
• squeeze (bool, optional) – Set to False to prevent dimensions with a size of 1 from being
automatically removed from the shape of the output. Default is True.
• cache (dict, optional) – A dictionary of (varname, ndarray) that can be used to supply
pre-extracted NetCDF variables to the computational routines. It is primarily used for in-
ternal purposes, but can also be used to improve performance by eliminating the need to
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
• _key (int, optional) – A caching key. This is used for internal purposes only. Default is
None.
• units (str) – The desired units. Refer to the getvar() product table for a list of
available units for ‘slp’. Default is ‘Pa’.
Returns The sea level pressure in the specified units. If xarray is enabled and the meta parameter
is True, then the result will be a xarray.DataArray object. Otherwise, the result will be a
numpy.ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.g_temp.get_theta
• _key (int, optional) – A caching key. This is used for internal purposes only. Default is
None.
• units (str) – The desired units. Refer to the getvar() product table for a list of
available units for ‘theta’. Default is ‘K’.
Returns The potential temperature. If xarray is enabled and the meta parameter is True, then the re-
sult will be a xarray.DataArray object. Otherwise, the result will be a numpy.ndarray
object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.g_temp.get_temp
wrf.g_temp.get_eth
wrf.g_temp.get_tv
• timeidx (int or wrf.ALL_TIMES, optional) – The desired time index. This value can
be a positive integer, negative integer, or wrf.ALL_TIMES (an alias for None) to return all
times in the file or sequence. The default is 0.
• method (str, optional) – The aggregation method to use for sequences. Must be either
‘cat’ or ‘join’. ‘cat’ combines the data along the Time dimension. ‘join’ creates a new
dimension for the file index. The default is ‘cat’.
• squeeze (bool, optional) – Set to False to prevent dimensions with a size of 1 from being
automatically removed from the shape of the output. Default is True.
• cache (dict, optional) – A dictionary of (varname, ndarray) that can be used to supply
pre-extracted NetCDF variables to the computational routines. It is primarily used for in-
ternal purposes, but can also be used to improve performance by eliminating the need to
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
• _key (int, optional) – A caching key. This is used for internal purposes only. Default is
None.
• units (str) – The desired units. Refer to the getvar() product table for a list of
available units for ‘tv’. Default is ‘K’.
Returns The virtual temperature. If xarray is enabled and the meta parameter is True, then the result
will be a xarray.DataArray object. Otherwise, the result will be a numpy.ndarray
object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.g_temp.get_tw
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
• _key (int, optional) – A caching key. This is used for internal purposes only. Default is
None.
• units (str) – The desired units. Refer to the getvar() product table for a list of
available units for ‘twb’. Default is ‘K’.
Returns The wetbulb temperature. If xarray is enabled and the meta parameter is True, then the re-
sult will be a xarray.DataArray object. Otherwise, the result will be a numpy.ndarray
object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.g_temp.get_tk
wrf.g_temp.get_tc
wrf.g_terrain.get_terrain
• method (str, optional) – The aggregation method to use for sequences. Must be either
‘cat’ or ‘join’. ‘cat’ combines the data along the Time dimension. ‘join’ creates a new
dimension for the file index. The default is ‘cat’.
• squeeze (bool, optional) – Set to False to prevent dimensions with a size of 1 from being
automatically removed from the shape of the output. Default is True.
• cache (dict, optional) – A dictionary of (varname, ndarray) that can be used to supply
pre-extracted NetCDF variables to the computational routines. It is primarily used for in-
ternal purposes, but can also be used to improve performance by eliminating the need to
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
• _key (int, optional) – A caching key. This is used for internal purposes only. Default is
None.
• units (str) – The desired units. Refer to the getvar() product table for a list of
available units for ‘ter’. Default is ‘m’.
Returns The terrain height in the specified units. If xarray is enabled and the meta parameter is
True, then the result will be a xarray.DataArray object. Otherwise, the result will be a
numpy.ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.g_times.get_times
• _key (int, optional) – A caching key. This is used for internal purposes only. Default is
None.
Returns A sequence of datetime.datetime objects. If meta is True, the sequence will be of
type xarray.DataArray, otherwise the sequence is numpy.ndarray.
Return type xarray.DataArray or numpy.ndarray
wrf.g_times.get_xtimes
wrf.g_uvmet.get_uvmet
wrf.g_uvmet.get_uvmet10
• timeidx (int or wrf.ALL_TIMES, optional) – The desired time index. This value can
be a positive integer, negative integer, or wrf.ALL_TIMES (an alias for None) to return all
times in the file or sequence. The default is 0.
• method (str, optional) – The aggregation method to use for sequences. Must be either
‘cat’ or ‘join’. ‘cat’ combines the data along the Time dimension. ‘join’ creates a new
dimension for the file index. The default is ‘cat’.
• squeeze (bool, optional) – Set to False to prevent dimensions with a size of 1 from being
automatically removed from the shape of the output. Default is True.
• cache (dict, optional) – A dictionary of (varname, ndarray) that can be used to supply
pre-extracted NetCDF variables to the computational routines. It is primarily used for in-
ternal purposes, but can also be used to improve performance by eliminating the need to
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
• _key (int, optional) – A caching key. This is used for internal purposes only. Default is
None.
• units (str) – The desired units. Refer to the getvar() product table for a list of
available units for ‘uvmet10’. Default is ‘m s-1’.
Returns The u,v components of the 10m wind rotated to earth coordinates, whose leftmost dimen-
sions is 2 (0=U10_EARTH, 1=V10_EARTH). If xarray is enabled and the meta parameter is
True, then the result will be a xarray.DataArray object. Otherwise, the result will be a
numpy.ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.g_uvmet.get_uvmet_wspd_wdir
• squeeze (bool, optional) – Set to False to prevent dimensions with a size of 1 from being
automatically removed from the shape of the output. Default is True.
• cache (dict, optional) – A dictionary of (varname, ndarray) that can be used to supply
pre-extracted NetCDF variables to the computational routines. It is primarily used for in-
ternal purposes, but can also be used to improve performance by eliminating the need to
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
• _key (int, optional) – A caching key. This is used for internal purposes only. Default is
None.
• units (str) – The desired units. Refer to the getvar() product table for a list of
available units for ‘uvmet_wspd_wdir’. Default is ‘m s-1’.
Returns The wind speed and wind direction for the wind rotated to earth coordinates, whose left-
most dimensions is 2 (0=WSPD_EARTH, 1=WDIR_EARTH). If xarray is enabled and the meta
parameter is True, then the result will be a xarray.DataArray object. Otherwise, the result
will be a numpy.ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.g_uvmet.get_uvmet10_wspd_wdir
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
• _key (int, optional) – A caching key. This is used for internal purposes only. Default is
None.
• units (str) – The desired units. Refer to the getvar() product table for a list of
available units for ‘uvmet10_wspd_wdir’. Default is ‘m s-1’.
Returns The wind speed and wind direction for the 10m wind rotated to earth coordinates, whose
leftmost dimensions is 2 (0=WSPD10_EARTH, 1=WDIR10_EARTH). If xarray is enabled and
the meta parameter is True, then the result will be a xarray.DataArray object. Otherwise,
the result will be a numpy.ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.g_vorticity.get_avo
wrf.g_vorticity.get_pvo
wrf.g_wind.get_u_destag
• method (str, optional) – The aggregation method to use for sequences. Must be either
‘cat’ or ‘join’. ‘cat’ combines the data along the Time dimension. ‘join’ creates a new
dimension for the file index. The default is ‘cat’.
• squeeze (bool, optional) – Set to False to prevent dimensions with a size of 1 from being
automatically removed from the shape of the output. Default is True.
• cache (dict, optional) – A dictionary of (varname, ndarray) that can be used to supply
pre-extracted NetCDF variables to the computational routines. It is primarily used for in-
ternal purposes, but can also be used to improve performance by eliminating the need to
repeatedly extract the same variables used in multiple diagnostics calculations, particularly
when using large sequences of files. Default is None.
• meta (bool, optional) – Set to False to disable metadata and return numpy.ndarray
instead of xarray.DataArray. Default is True.
• _key (int, optional) – A caching key. This is used for internal purposes only. Default is
None.
• units (str) – The desired units. Refer to the getvar() product table for a list of
available units for ‘wspd_wdir’. Default is ‘m s-1’.
Returns The u-component of the wind. If xarray is enabled and the meta parameter is True, then
the result will be a xarray.DataArray object. Otherwise, the result will be a numpy.
ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.g_wind.get_v_destag
• _key (int, optional) – A caching key. This is used for internal purposes only. Default is
None.
• units (str) – The desired units. Refer to the getvar() product table for a list of
available units for ‘wspd_wdir’. Default is ‘m s-1’.
Returns The v-component of the wind. If xarray is enabled and the meta parameter is True, then
the result will be a xarray.DataArray object. Otherwise, the result will be a numpy.
ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.g_wind.get_w_destag
wrf.g_wind.get_destag_wspd_wdir
wrf.g_wind.get_destag_wspd_wdir10
Decorators
Algorithm Decorators
The decorators below are used for performing common operations related to diagnostic and interpolation calculations.
wrf.decorators.convert_units
wrf.decorators.convert_units(unit_type, alg_unit)
A decorator that converts the units from the wrapped function’s output.
The desired units are determined from the wrapped function’s arguments.
Parameters
• unit_type (str) – The unit type. Choices are: ‘wind’, ‘pressure’, ‘temp’, or ‘height’.
• alg_unit (str) – The units returned by the wrapped function, which is usually the units
returned by the Fortran routine.
Returns The wrapped function’s output in the desired units.
Return type numpy.ndarray
wrf.decorators.left_iteration
Parameters
• ref_var_expected_dims (int) – The number of dimensions that the Fortran routine
is expecting for the reference variable.
• ref_var_right_ndims (int) – The number of dimensions from the right to keep for
the reference variable when making the output. Can also be a combine_dims object if
the sizes are determined from multiple variables.
• insert_dims (sequence of int, optional) – A sequence of dimensions to insert between
the left dimensions (e.g. time) and the kept right dimensions. Default is None.
• ref_var_idx (int, optional) – The index in the wrapped function’s positional argu-
ments to be used as the reference variable for determining the leftmost dimensions. Must be
specified if ref_var_name is None. Default is None.
• ref_var_name (str, optional) – The keyword argument name for the wrapped func-
tion’s keyword arguments to be used as the reference variable for calculating the leftmost
dimensions. Must be specified if ref_var_idx is None. Default is None.
• ignore_args (sequence of int) – Indexes of any arguments that should be ignored when
creating the sliced views that are passed to the Fortran routine.
• ignore_kargs (sequence of str) – Keys of any keyword arguments that should be ig-
nored when creating the sliced views that are passed to the Fortran routine.
• outviews (str or a sequence) – A single key or sequence of keys that indicate the
wrapped function’s keyword argument to use as the output variable(s) in the wrapped func-
tion.
• alg_dtype (numpy.dtype or str) – The numpy data type used in the wrapped func-
tion.
• cast_output (bool) – Set to True to cast the wrapped function’s output to the same
type as the reference variable.
Returns The aggregated output array that includes all extra leftmost dimensions found in the refer-
ence variable.
Return type numpy.ndarray
wrf.decorators.cast_type
• alg_dtype (numpy.dtype or str) – The numpy data type used in the wrapped func-
tion.
• outviews (str or a sequence) – A single key or sequence of keys that indicate the
wrapped function’s keyword argument to use as the output variable(s) in the wrapped func-
tion.
Returns The wrapped function’s output cast to the same numpy.dtype as the reference variable.
Return type numpy.ndarray
wrf.decorators.extract_and_transpose
wrf.decorators.extract_and_transpose(do_transpose=True, outviews=’outview’)
A decorator to extract the data array from a xarray.DataArray
This decorator also transposes the view of the data to Fortran contiguous if do_transpose is True.
Parameters
• do_transpose – Set to False to only extract the variable. When True, the extracted array
will also be transposed to a Fortran view if it is not already Fortran contiguous.
• outviews (str or a sequence) – A single key or sequence of keys that indicate the
wrapped function’s keyword argument to use as the output variable(s) in the wrapped func-
tion.
Returns A numpy array. If do_transpose is True, the numpy array will also be a Fortran contiguous
view.
Return type numpy.ndarray
wrf.decorators.check_args
wrf.specialdec.uvmet_left_iter
wrf.specialdec.uvmet_left_iter(alg_dtype=<MagicMock id=’140087061208256’>)
A decorator to handle iterating over the leftmost dimensions for the uvmet diagnostic.
For example, if a wrapped function works with three-dimensional arrays, but the variables include a 4th leftmost
dimension for ‘Time’, this decorator will iterate over all times, call the 3D Fortran routine, and aggregate the
results in to a 4D output array.
It is also important to note that the final output array is allocated first, and then views are passed to the wrapped
function so that values do not need to get copied in to the final output array.
Parameters alg_dtype (np.dtype or str) – The numpy data type used in the wrapped func-
tion.
Returns The aggregated uvmet output array that includes all extra leftmost dimensions.
Return type numpy.ndarray
wrf.specialdec.cape_left_iter
wrf.specialdec.cape_left_iter(alg_dtype=<MagicMock id=’140087061222176’>)
A decorator to handle iterating over the leftmost dimensions for the cape diagnostic.
For example, if a wrapped function works with three-dimensional arrays, but the variables include a 4th leftmost
dimension for ‘Time’, this decorator will iterate over all times, call the 3D Fortran routine, and aggregate the
results in to a 4D output array.
It is also important to note that the final output array is allocated first, and then views are passed to the wrapped
function so that values do not need to get copied in to the final output array.
Parameters alg_dtype (np.dtype or str) – The numpy data type used in the wrapped func-
tion.
Returns The aggregated cape output array that includes all extra leftmost dimensions.
Return type numpy.ndarray
wrf.specialdec.cloudfrac_left_iter
wrf.specialdec.cloudfrac_left_iter(alg_dtype=<MagicMock id=’140087061190080’>)
A decorator to handle iterating over the leftmost dimensions for the cloud fraction diagnostic.
For example, if a wrapped function works with three-dimensional arrays, but the variables include a 4th leftmost
dimension for ‘Time’, this decorator will iterate over all times, call the 3D Fortran routine, and aggregate the
results in to a 4D output array.
It is also important to note that the final output array is allocated first, and then views are passed to the wrapped
function so that values do not need to get copied in to the final output array.
Parameters alg_dtype (np.dtype or str) – The numpy data type used in the wrapped func-
tion.
Returns The aggregated cloud fraction output array that includes all extra leftmost dimensions.
Return type numpy.ndarray
Metadata Decorators
The decorators below are used for performing common operations related to setting metadata.
wrf.metadecorators.copy_and_set_metadata
wrf.metadecorators.copy_and_set_metadata(copy_varname=None, delete_attrs=None,
name=None, remove_dims=None, dim-
names=None, coords=None, **fixed_attrs)
A decorator that sets the metadata for a wrapped function’s output.
Generally, the metadata is copied from the variable specified by copy_varname, with other fixed fields set by
the other decorator arguments.
The cache argument used by most diagnostic routines is supplied by this decorator when the copy_varname
variable is extracted, in order to prevent the variable from being extracted again by the wrapped function.
If the wrapped function’s meta argument is False, then this decorator returns the wrapped function output without
applying the metadata.
Parameters
• copy_varname (str, optional) – The NetCDF variable name to copy. Default is None.
• delete_attrs (sequence of str, optional) – A sequence of key names to remove from
the xarray.DataArray.attrs attribute in the wrapped function output (after being
copied from copy_varname). Default is None.
• name (str) – The name to use for the xarray.DataArray.name attribute.
wrf.metadecorators.set_wind_metadata
wrf.metadecorators.set_cape_metadata
wrf.metadecorators.set_cape_metadata(is2d)
A decorator that sets the metadata for a wrapped CAPE function’s output.
This is a special metadata decorator for working with CAPE functions.
If the wrapped function’s meta argument is False, then this decorator returns the wrapped function output without
applying the metadata.
Parameters is2d (bool) – Set to True if the wrapped function is for a two-dimensional CAPE
routine. Set to False for a three-dimensional CAPE routine.
Returns The wrapped CAPE function output with or without metadata. If xarray is enabled and the
meta parameter is True, then the result will be a xarray.DataArray object. Otherwise, the
result will be a numpy.ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.metadecorators.set_cloudfrac_metadata
wrf.metadecorators.set_cloudfrac_metadata()
A decorator that sets the metadata for a wrapped cloud fraction function’s output.
This is a special metadata decorator for working with cloud fraction functions.
If the wrapped function’s meta argument is False, then this decorator returns the wrapped function output without
applying the metadata.
Returns The wrapped cloud fraction function output with or without metadata. If xarray is enabled
and the meta parameter is True, then the result will be a xarray.DataArray object. Other-
wise, the result will be a numpy.ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.metadecorators.set_latlon_metadata
wrf.metadecorators.set_latlon_metadata(xy=False)
A decorator that sets the metadata for a wrapped latlon function’s output.
This is a special metadata decorator for working with latlon functions.
If the wrapped function’s meta argument is False, then this decorator returns the wrapped function output without
applying the metadata.
Parameters xy (bool, optional) – Set to True if the wrapped function returns xy values (ll_to_xy).
Set to False if the wrapped function returns latlon values (xy_to_ll). Default is False.
Returns The wrapped latlon function output with or without metadata. If xarray is enabled and the
meta parameter is True, then the result will be a xarray.DataArray object. Otherwise, the
result will be a numpy.ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.metadecorators.set_height_metadata
wrf.metadecorators.set_height_metadata(geopt=False, stag=False)
A decorator that sets the metadata for a wrapped height function’s output.
wrf.metadecorators.set_interp_metadata
wrf.metadecorators.set_interp_metadata(interp_type)
A decorator that sets the metadata for a wrapped interpolation function.
If the wrapped function’s meta argument is False, then this decorator returns the wrapped function output without
applying the metadata.
Parameters interp_type (str) – The type of interpolation routine. Choices are: ‘horiz’,
‘cross’, ‘line’, ‘vinterp’, ‘2dxy’, ‘1d’, ‘xy’.
Returns The wrapped interpolation function output with or without metadata. If xarray is enabled
and the meta parameter is True, then the result will be a xarray.DataArray object. Other-
wise, the result will be a numpy.ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.metadecorators.set_alg_metadata
• stagsubvar (str, optional) – The wrapped function argument name to use to supply the
unstaggered dimension name for the staggered dimension in the reference. This is needed if
stagdim is not None. It is primarily used for absolute vorticity. Default is None.
• units (str, optional) – The units to use if if there is no ‘units’ argument for the wrapped
function. Default is None.
• description (str, optional) – A description for the wrapped algorithm, which is stored
in the xarray.DataArray.attrs attribute under the ‘description’ key. Default is
None.
Returns The wrapped numerical function output with or without metadata. If xarray is enabled and
the meta parameter is True, then the result will be a xarray.DataArray object. Otherwise,
the result will be a numpy.ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.metadecorators.set_uvmet_alg_metadata
wrf.metadecorators.set_cape_alg_metadata
wrf.metadecorators.set_cape_alg_metadata(is2d, copyarg=’pres_hpa’)
A decorator that sets the metadata for the wrapped raw CAPE diagnostic function.
Parameters
• is2d (bool) – Set to True for the two-dimensional CAPE calculation, False for three-
dimensional CAPE.
• copyarg (str) – The wrapped function argument to use for copying dimension names.
Default is ‘pres_hpa’.
Returns The wrapped CAPE function output with or without metadata. If xarray is enabled and the
meta parameter is True, then the result will be a xarray.DataArray object. Otherwise, the
result will be a numpy.ndarray object with no metadata.
wrf.metadecorators.set_cloudfrac_alg_metadata
wrf.metadecorators.set_cloudfrac_alg_metadata(copyarg=’vert’)
A decorator that sets the metadata for the wrapped raw cloud fraction diagnostic function.
Parameters copyarg (str) – The wrapped function argument to use for copying dimension
names. Default is ‘vert’.
Returns The wrapped cloud fraction function output with or without metadata. If xarray is enabled
and the meta parameter is True, then the result will be a xarray.DataArray object. Other-
wise, the result will be a numpy.ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
wrf.metadecorators.set_destag_metadata
wrf.metadecorators.set_destag_metadata()
A decorator that sets the metadata for the wrapped raw destaggering function.
Returns The wrapped destaggering function output with or without metadata. If xarray is enabled
and the meta parameter is True, then the result will be a xarray.DataArray object. Other-
wise, the result will be a numpy.ndarray object with no metadata.
Return type xarray.DataArray or numpy.ndarray
Decorator Utilities
wrf.either
class wrf.either(*varnames)
A callable class that determines which variable is present in the file.
This is used in situations where the same variable type has different names depending on the type of file used.
For example, in a WRF output file, ‘P’ is used for pressure, whereas in a met_em file, pressure is named ‘PRES’.
__call__(wrfin)
Return the variable that is present in the file.
Parameters wrfin (netCDF4.Dataset, Nio.NioFile, or an iterable) – WRF-ARW
NetCDF data as a netCDF4.Dataset, Nio.NioFile or an iterable sequence of the
aforementioned types.
Returns The variable name that is present in the file.
Return type str
varnames
sequence – A sequence of possible variable names.
__init__(*varnames)
Initialize an either object.
Parameters *varnames (sequence) – A sequence of possible variable names.
Methods
wrf.combine_dims
class wrf.combine_dims(pairs)
A callable class that mixes dimension sizes from different function arguments.
This callable object is used for determining the output size for the extension module functions. The class is
initialized with a sequence of pairs, where the first value is the function argument index. The second value is
the dimension index(es) to use. The second value can be a single integer or a sequence if multiple dimensions
are used.
__call__(*args)
Return a tuple with the combined dimension sizes.
Parameters *args – The function arguments from which to extract the dimensions sizes.
Returns The shape for the combined dimensions.
Return type tuple
pairs
sequence – A sequence representing how to combine the dimensions.
Example
combo = combine_dims(pairs)
__init__(pairs)
Initialize a combine_dims object.
Parameters pairs (sequence) – A sequence where each element is a pair (tuple), with the
first element being the function argument index and the second value being either an integer
or sequence for the dimension size indexes to use.
Methods
wrf.from_var
Methods
wrf.from_args
not been passed in, the value is taken from the default keyword argument value.
This func is usually called from within a decorator.
Note: This function currently does not work with functions that contain *args or **kwargs arguments.
Parameters
• func (function) – The function to examine (usually the function that is wrapped).
• argnames (iterable) – An iterable sequence of argument names.
• *args – The positional arguments.
• **kwargs – The keyword arguments.
Returns A mapping of argument name to argument value.
Return type dict
wrf.args_to_list
Note: This function currently does not work with functions that contain *args or **kwargs arguments.
Parameters
• func (function) – The function to examine (usually the function that is wrapped).
• args (tuple) – The positional arguments.
• kwargs (dict) – The keyword arguments.
Returns A list of all argument values, including defaults.
Return type list
wrf.arg_location
Returns A tuple containing the list of all argument values along with the index for location of
argname.
Return type tuple
Classes
The class below is an Iterable wrapper class and provides an __iter__ function that always returns the beginning of the
sequence, regardless of the Iterable type.
wrf.IterWrapper
class wrf.IterWrapper(wrapped)
A wrapper class for generators and custom iterable classes that returns a new iterator to the start of the sequence
when IterWrapper.__iter__() is called.
If the wrapped object is a generator, a copy of the generator is constructed and returned when IterWrapper.
__iter__() is called. If the wrapped object is a custom type, then the copy.copy() is called and a new
instance is returned. In both cases, the original iterable object is unchanged.
__init__(wrapped)
Initialize an wrf.IterWrapper object.
Parameters wrapped (an iterable object) – Any iterable object that contains the
__iter__ method.
Methods
1.7.1 wrf.getvar() uses more memory when xarray is enabled. Is there a memory
leak?
The difference in memory usage can be observed when running the following code with and without xarray enabled
(see wrf.disable_xarray()):
for i in range(150):
f = Dataset('wrfout_d01_2005-07-17_12_00_00.nc')
p = wrf.getvar(f, 'pressure')
f.close()
When xarray is enabled, there is an internal thread-local cache used to hold the XLAT and XLONG coordinate vari-
ables, along with a boolean variable to remember if a particular file or sequence is from a moving nest. This is useful
when working with sequences of WRF files, so that the XLAT and XLONG variables aren’t repeatedly extracted. This
cache is limited to holding 20 items by default, where the key to each cache entry is the object ID for the file or se-
quence of files. In this particular example, a new file object is created for each iteration, which will have a new object
ID, so the 20 cache spots are going to be filled up. Memory usage will be quite a bit higher for the xarray-enabled
case, but the memory usage will eventually top off.
There is a function wrf.set_cache_size() that can be used to decrease the number of files/sequences in the
cache. By setting the cache size to 0, the cache can be disabled completely.
Currently, wrf-python is designed to use the API for PyNIO and netCDF4-python, which differs from the xar-
ray.Dataset API. However, there is an undocumented feature for Dataset objects that can be used as workaround.
Each Dataset object has a xarray.Dataset._file_obj.ds attribute that can be used to obtain the underlying
netCDF file object. Keep in mind that this is not in the public API for xarray, so it could break in a future release.
Here is an example:
import xarray
import wrf
ds = xarray.open_dataset(FILENAME)
slp = wrf.getvar(ds._file_obj.ds, "slp")
In a future release of wrf-python, direct support for Dataset objects will be added and this will no longer be necessary.
The most likely culprit is insufficient memory for the calculation you are trying to perform.
See Performance Tips for more information.
1.8 Support
1.8.1 Github
For crashes and other issues related to the software, you can submit an issue to the Github repository.
This should be used strictly for crashes and bugs. For general usage questions, please use the Google Group.
When issues are encountered, we often need to see the file that is problematic. As long as the file is not so large that it
fills up the FTP server, users can submit files via FTP using the following instructions:
ftp ftp.cgd.ucar.edu
anonymous
<use your email address for the password>
cd incoming
put <your file>
put <your file>
.
.
.
quit
Note: For security reasons, you cannot list the contents of this directory, and neither can we. You must tell us the
exact names of the files that you uploaded in order for us to retrieve them.
The best way to receive support is to use the [wrfpython-talk] group on Google. Users can ask usage questions, submit
bug reports, make feature requests, etc. All users of wrf-python are welcome to join.
Below, you can view the most recent discussions:
1.9 Citation
WRF-Python has a Digital Object Identifier (DOI), which is a persistent identifier for web-based resources. The
wrf-python DOI, when used in URL form, https://doi.org/10.5065/D6W094P1, provides a persistent link to the wrf-
python Github page. The benefit of DOIs is that they are widely accepted by academic publishers as citable locators
for scholarly objects.
If you author a paper that involves data analysis with wrf-python, or visualizations created with wrf-python, we would
like to ask you to please cite wrf-python. This helps us better understand the impact of the software on the scientific
community, which in turns helps us maintain support for the effort.
You can cite wrf-python using the following citation:
Ladwig, W. (2017). wrf-python (Version x.x.x) [Software]. Boulder, Colorado: UCAR/
˓→NCAR. https://doi.org/10.5065/D6W094P1
Note: The version number x.x.x should be set to the version of wrf-python that you are using.
1.10 License
PLEASE READ THIS SOFTWARE LICENSE (“LICENSE”) CAREFULLY BEFORE USING THE SOFTWARE.
BY USING THE SOFTWARE, YOU ARE AGREEING TO BE BOUND BY ALL OF THE TERMS OF THIS
LICENSE. IF YOU DO NOT AGREE TO THE TERMS OF THIS LICENSE, DO NOT USE THE SOFTWARE.
Copyright © 2016 the University Corporation for Atmospheric Research (“UCAR”). All rights reserved. Developed
by NCAR’s Computational and Information Systems Laboratory, UCAR, www2.cisl.ucar.edu.
Redistribution and use of the Software in source and binary forms, with or without modification, is permitted provided
that the following conditions are met:
• Neither the names of NCAR’s Computational and Information Systems Laboratory, the University Corporation
for Atmospheric Research, nor the names of its sponsors or contributors may be used to endorse or promote
products derived from this Software without specific prior written permission.
• Redistributions of source code must retain the above copyright notices, this list of conditions, and the disclaimer
below.
• Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the dis-
claimer below in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING, BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PAR-
TICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPY-
RIGHT HOLDERS BE LIABLE FOR ANY CLAIM, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS WITH THE SOFTWARE.
1.11 Tutorials
NCAR occasionally provides tutorials for wrf-python at various times throughout the year.
Below are the links to the upcoming and past tutorials.
The Department of Geosciences at Boise State University is partnering with staff from the National Center for Atmo-
spheric Research (NCAR) to host a free, 2-day workshop in the Environmental Research Building (ERB) lab 2104 at
Boise State University on September 26-27, 2018. The tutorial will be centered on the WRF-Python and VAPOR tools
for analyzing and visualizing data from the Weather Research and Forecasting (WRF) regional weather and climate
model.
Users must be registered to attend this tutorial (see Registration).
Location
WRF-Python Overview
WRF-Python is a collection of diagnostic and interpolation routines for use with output from the Weather Research
and Forecasting (WRF-ARW) Model. The package provides over 30 diagnostic calculations, several interpolation
routines, and utilities to help with plotting via cartopy, basemap, or PyNGL. The functionality is similar to what is
provided by the NCL WRF package.
Note: WRF-Python is NOT a tool for running the WRF-ARW model using Python.
This tutorial provides an introduction to wrf-python. The tutorial is beginner friendly for new users of wrf-python, but
this is NOT an introduction to the Python programming language (see Prerequisites). Due to limited seating, if you
do not have any previous experience with Python, please do not register for this tutorial.
Note: For online training that provides an introduction to the Python programming language itself, please see the
Unidata Python Training Page.
Computers will be provided, but feel free to use your own laptop if you prefer. We will be covering how to install
wrf-python via conda as part of the tutorial.
Students are encouraged to bring their own data sets, but data will be provided if this is not an option. Students will
be provided a jupyter notebook workbook which can be modified to accommodate their data.
Topics include:
• How to install wrf-python via conda
• A brief introduction to jupyter notebook
• Overview of WRF data files
• WRF-Python basics
• Plotting with cartopy
• Overview of OpenMP features and other performance tips
• Open lab for students
Registration
Please register prior to September 19, 2018. The registration form is here:
Registration Form
Registration consists of a brief survey, which will help give the instructor a brief overview of your background and
will help tailor the tutorial to your expectations.
Prerequisites
This tutorial assumes that you have basic knowledge of how to type commands in to a terminal window using your
preferred operating system. You should know some basic directory commands like cd, mkdir, cp, mv.
This tutorial assumes that you have prior experience programming in Python. Below is a list of some Python concepts
that you will see in the examples, but don’t worry if you aren’t familiar with everything.
• Opening a Python interpreter and entering commands.
• Importing packages via the import statement.
• Familiarity with some of the basic Python types: str, list, tuple, dict, bool, float, int, None.
• Creating a list, tuple, or dict with “[ ]”, “( )”, “{ }” syntax (e.g. my_list = [1,2,3,4,5]).
• Accessing dict/list/tuple items with the “x[ ]” syntax (e.g. my_list_item = my_list[0]).
• Slicing str/list/tuple with the “:” syntax (e.g. my_slice = my_list[1:3]).
• Using object methods and attributes with the “x.y” syntax (e.g. my_list.append(6)).
• Calling functions (e.g. result = some_function(x, y))
• Familiarity with numpy would be helpful, as only a very brief introduction is provided.
• Familiarity with matplotlib would be helpful, as only a very brief introduction is provided.
For this tutorial, you will need to download and install Miniconda. We are going to use Python 3.6+.
Please use the appropriate link below to download Miniconda for your operating system.
Win64
Mac
Linux
For more information, see: https://conda.io/miniconda.html
Windows:
1. Browse to the directory where you downloaded Miniconda3-latest-Windows-x86_64.exe.
2. Double click on Miniconda3-latest-Windows-x86_64.exe.
3. Follow the instructions.
4. For Windows 10, use the Anaconda command prompt found under the Anaconda2 menu (Start Menu -> Ana-
conda2 -> Anaconda Prompt). Otherwise, open a regular command prompt.
Mac and Linux:
For Mac and Linux, the installer is a bash script.
1. Using a terminal, you need to execute the bash shell script that you downloaded by doing:
3. At the end of the installation, it will ask if you want to add the miniconda3 path to your bash
environment. If you are unsure what to do, you should say “yes”. If you say “no”, we’re going to
assume you know what you are doing.
If you said “yes”, then once you restart your shell, the miniconda3 Python will be found instead of
the system Python when you type the “python” command. If you want to undo this later, then you
can edit either ~/.bash_profile or ~/.bashrc (depending on OS used) and comment out the line that
looks similar to:
bash
6. Verify that your system is using the correct Python interpreter by typing the following in to your
command terminal:
which python
You should see the path to your miniconda installation. If not, see the note below.
Note: If you have already installed another Python distribution, like Enthought Canopy, you will
need to comment out any PATH entries for that distribution in your .bashrc or .bash_profile. Other-
wise, your shell environment may pick to wrong Python installation.
If bash is not your default shell type, and the PATH variable has been set in .bash_profile by the
miniconda installer, try executing “bash -l” instead of the “bash” command in step 5.
If you are new to the conda package manager, one of the nice features of conda is that you can create isolated Python
environments that prevent package incompatibilities. This is similar to the virtualenv package that some Python users
may be familiar with. However, conda is not compatible with virtualenv, so only use conda environments when
working with conda.
The name of our conda environment for this tutorial is: tutorial_backup.
Follow the instructions below to create the tutorial_backup environment.
1. Open a command terminal if you haven’t done so.
2. [Linux and Mac Users Only] The conda package manager only works with bash, so if bash is not
your current shell, type:
bash
Note: Conda-forge is a community driven collection of packages that are continually tested to
ensure compatibility. We highly recommend using conda-forge when working with conda. See
https://conda-forge.github.io/ for more details on this excellent project.
Type “y” when prompted. It will take several minutes to install everything.
This command creates an isolated Python environment named tutorial_backup, and installs the
python interpreter, matplotlib, cartopy, netcdf4, jupyter, git, ffmpeg, and wrf-python packages.
Note: When the installation completes, your command terminal might post a message similar
to:
mkdir -p ~/Library/LaunchAgents
cp /path/to/miniconda3/envs/tutorial_test/org.freedesktop.dbus-
˓→session.plist ~/Library/LaunchAgents/
This is indicating that the dbus package can be set up to automatically load on login. You can
either ignore this message or type in the commands as indicated on your command terminal.
The tutorial should work fine in either case.
For Windows:
activate tutorial_backup
source deactivate
For Windows:
deactivate tutorial_backup
The student workbook for the tutorial is available on GitHub. The tutorial_backup conda environment includes the git
application needed to download the repository.
These instructions download the tutorial in to your home directory. If you want to place the tutorial in to another
directory, we’re going to assume you know how to do this yourself.
To download the student workbook, follow these instructions:
1. Activate the tutorial_backup conda environment following the instructions in the previous step (source activate
tutorial_backup or activate tutorial_backup).
2. Change your working directory to the home directory by typing the following command in to the command
terminal:
For Linux and Mac:
cd ~
For Windows:
cd %HOMEPATH%
3. Download the git repository for the tutorial by typing the following in to the command terminal:
4. There may be additional changes to the tutorial after you have downloaded it. To pull down the latest changes,
type the following in to the command terminal:
For Linux and Mac:
cd ~/wrf_python_tutorial/boise_workshop_2018
git pull
For Windows:
activate tutorial_2018
cd %HOMEPATH%\wrf_python_tutorial\boise_workshop_2018
git pull
Note: If you try the “git pull” command and it returns an error indicating that you have made changes to the
workbook, this is probably because you ran the workbook and it contains the cell output. To fix this, first do a
checkout of the workbook, then do the pull.
git checkout -- .
git pull
Verifying that your environment is correct involves importing a few packages and checking for errors (you may see
some warnings for matplotlib or xarray, but you can safely ignore these).
1. Activate the tutorial_backup conda environment if it isn’t already active (see instructions above).
2. Open a python terminal by typing the following in to the command terminal:
python
A link will be provided in an email prior to the tutorial for the WRF-ARW data files used for the examples.
1. The link in the email should take you to a location on an Amazon cloud drive.
2. If you hover your mouse over the wrf_tutorial_data.zip file, you’ll see an empty check box appear next to the
file name. Click this check box.
3. At the bottom of the screen, you’ll see a Download button next to a cloud icon. Click this button to start the
download.
4. The download was most likely placed in to your ~/Downloads folder [%HOMEPATH%\Downloads for Win-
dows]. Using your preferred method of choice for unzipping files, unzip this file in to your home directory. Your
data should now be in ~/wrf_tutorial_data [%HOMEPATH%\wrf_tutorial_data for Windows].
5. Verify that you have three WRF output files in that directory.
Prerequisites
This tutorial assumes that you have basic knowledge of how to type commands in to a command terminal using your
preferred operating system. You should know some basic directory commands like cd, mkdir, cp, mv.
Regarding Python, to understand the examples in this tutorial, you should have some experience with Python basics.
Below is a list of some Python concepts that you will see in the examples, but don’t worry if you aren’t familiar with
everything.
• Opening a Python interpreter and entering commands.
• Importing packages via the import statement.
• Familiarity with some of the basic Python types: str, list, tuple, dict, bool, float, int, None.
• Creating a list, tuple, or dict with “[ ]”, “( )”, “{ }” syntax (e.g. my_list = [1,2,3,4,5]).
• Accessing dict/list/tuple items with the “x[ ]” syntax (e.g. my_list_item = my_list[0]).
• Slicing str/list/tuple with the “:” syntax (e.g. my_slice = my_list[1:3]).
• Using object methods and attributes with the “x.y” syntax (e.g. my_list.append(6)).
• Calling functions (e.g. result = some_function(x, y))
• Familiarity with numpy would be helpful, as only a very brief introduction is provided.
• Familiarity with matplotlib would be helpful, as only a very brief introduction is provided.
If you are completely new to Python, that shouldn’t be a problem, since most of the examples consist of basic container
types and function calls. It would be helpful to look at some introductory material before arriving at the tutorial. If
you’ve programmed before, picking up Python isn’t too difficult.
Here are some links:
https://www.learnpython.org/
https://developers.google.com/edu/python/
To begin, you will first need to know how to open a command line terminal for your operating system.
For Windows:
WINDOWS + r
type cmd in the run window
For Mac:
For Linux:
CTRL + ALT + T
CTRL + ALT + F2
For this tutorial, you will need to download and install Miniconda. We are going to use Python 2.7, but it should also
work with Python 3.5+. However, due to limitations with open source compilers on conda-forge, only Python 2.7 is
available for Windows.
Please use the appropriate link below to download Miniconda for your operating system.
Win64
Mac
Linux
For more information, see: https://conda.io/miniconda.html
Windows:
1. Browse to the directory where you downloaded Miniconda2-latest-Windows-x86_64.exe.
2. Double click on Miniconda2-latest-Windows-x86_64.exe.
3. Follow the instructions.
4. Restart your command terminal.
Mac and Linux:
For Mac and Linux, the installer is a bash script.
1. Using a terminal, you need to execute the bash shell script that you downloaded by doing:
3. At the end of the installation, it will ask if you want to add the miniconda2 path to your bash
environment. If you are unsure what to do, you should say “yes”. If you say “no”, we’re going to
assume you know what you are doing.
If you said “yes”, then once you restart your shell, the miniconda2 Python will be found instead of
the system Python when you type the “python” command. If you want to undo this later, then you
can edit either ~/.bash_profile or ~/.bashrc (depending on OS used) and comment out the line that
looks similar to:
bash
6. Verify that your system is using the correct Python interpreter by typing the following in to your
command terminal:
which python
You should see the path to your miniconda installation. If not, see the note below.
Note: If you have already installed another Python distribution, like Enthought Canopy, you will
need to comment out any PATH entries for that distribution in your .bashrc or .bash_profile. Other-
wise, your shell environment may pick to wrong Python installation.
If bash is not your default shell type, and the PATH variable has been set in .bash_profile by the
miniconda installer, try executing “bash -l” instead of the “bash” command in step 5.
If you are new to the conda package manager, one of the nice features of conda is that you can create isolated Python
environments that prevent package incompatibilities. This is similar to the virtualenv package that some Python users
may be familiar with. However, conda is not compatible with virtualenv, so only use conda environments when
working with conda.
The name of our conda environment for this tutorial is: tutorial_2017.
Follow the instructions below to create the tutorial_2017 environment.
1. Open a command terminal if you haven’t done so.
2. [Linux and Mac Users Only] The conda package manager only works with bash, so if bash is not
your current shell, type:
bash
Note: Conda-forge is a community driven collection of packages that are continually tested to
ensure compatibility. We highly recommend using conda-forge when working with conda. See
https://conda-forge.github.io/ for more details on this excellent project.
Type “y” when prompted. It will take several minutes to install everything.
This command creates an isolated Python environment named tutorial_2017, and installs the python
interpreter, matplotlib, cartopy, netcdf4, jupyter, git, ffmpeg, and wrf-python packages.
Note: When the installation completes, your command terminal might post a message similar
to:
mkdir -p ~/Library/LaunchAgents
cp /path/to/miniconda2/envs/tutorial_test/org.freedesktop.dbus-
˓→session.plist ~/Library/LaunchAgents/
This is indicating that the dbus package can be set up to automatically load on login. You can
either ignore this message or type in the commands as indicated on your command terminal.
The tutorial should work fine in either case.
Note: In this tutorial, we need to use matplotlib v1.5.3 due to some issues with cartopy, which
should be fixed in a later version of cartopy. Be sure to supply the version number as indicated
in the command above.
For Windows:
activate tutorial_2017
For Windows:
deactivate tutorial_2017
The student workbook for the tutorial is available on GitHub. The tutorial_2017 conda environment includes the git
application needed to download the repository.
These instructions download the tutorial in to your home directory. If you want to place the tutorial in to another
directory, we’re going to assume you know how to do this yourself.
To download the student workbook, follow these instructions:
1. Activate the tutorial_2017 conda environment following the instructions in the previous step (source activate
tutorial_2017 or activate tutorial_2017).
2. Change your working directory to the home directory by typing the following command in to the command
terminal:
For Linux and Mac:
cd ~
For Windows:
cd %HOMEPATH%
3. Download the git repository for the tutorial by typing the following in to the command terminal:
git clone https://github.com/NCAR/wrf_python_tutorial.git
4. There may be additional changes to the tutorial after you have downloaded it. To pull down the latest changes,
type the following in to the command terminal:
For Linux and Mac:
source activate tutorial_2017
cd ~/wrf_python_tutorial
git pull
For Windows:
activate tutorial_2017
cd %HOMEPATH%\wrf_python_tutorial
git pull
Note: If you try the “git pull” command and it returns an error indicating that you have made changes to the
workbook, this is probably because you ran the workbook and it contains the cell output. To fix this, first do a
checkout of the workbook, then do the pull.
Verifying that your environment is correct involves importing a few packages and checking for errors (you may see
some warnings for matplotlib or xarray, but you can safely ignore these).
1. Activate the tutorial_2017 conda environment if it isn’t already active (see instructions above).
2. Open a python terminal by typing the following in to the command terminal:
python
For this tutorial, we strongly recommend that you use your own WRF output files. The tutorial includes an easy way
to point to your own data files. The WRF output files should all be from the same WRF run and use the same domain.
If your files are located on another system (e.g. yellowstone), then copy 2 or 3 of these files to your local computer
prior to the tutorial.
If you do not have any of your own WRF output files, then you can download the instructor data files from a link that
should have been provided to you in an email prior to the tutorial.
If you are using the link provided in the email for your data, you can follow the instructions below to place your data
in the default location for your workbook.
1. The link in the email should take you to a location on an Amazon cloud drive.
2. If you hover your mouse over the wrf_tutorial_data.zip file, you’ll see an empty check box appear next to the
file name. Click this check box.
3. At the bottom of the screen, you’ll see a Download button next to a cloud icon. Click this button to start the
download.
4. The download was most likely placed in to your ~/Downloads folder [%HOMEPATH%\Downloads for Win-
dows]. Using your preferred method of choice for unzipping files, unzip this file in to your home directory. Your
data should now be in ~/wrf_tutorial_data [%HOMEPATH%\wrf_tutorial_data for Windows].
5. Verify that you have three WRF output files in that directory.
Getting Help
If you experience problems during this installation, please send a question to the Google Group support mailing list.
We look forward to seeing you at the tutorial!
NCAR will be providing a four hour tutorial for wrf-python on Wednesday, March 7, 2018 from 8 AM to 12 PM. The
tutorial is free, but seating is limited to only 16 students, so registration is required.
The tutorial will take place at NCAR’s corporate training center in Boulder, Colorado.
Corporate Technical Training Center 3085 Center Green Drive, Building CG-2, Room #3024 Boulder, Colorado
Overview
WRF-Python is a collection of diagnostic and interpolation routines for use with output from the Weather Research
and Forecasting (WRF-ARW) Model. The package provides over 30 diagnostic calculations, several interpolation
routines, and utilities to help with plotting via cartopy, basemap, or PyNGL. The functionality is similar to what is
provided by the NCL WRF package.
Note: WRF-Python is NOT a tool for running the WRF-ARW model using Python.
This tutorial provides an introduction to wrf-python. The tutorial is beginner friendly for new users of wrf-python, but
this is NOT an introduction to the Python programming language (see Prerequisites). Due to limited seating, if you
do not have any previous experience with Python, please do not register for this tutorial.
Note: For online training that provides an introduction to the Python programming language itself, please see the
Unidata Python Training Page.
Computers will be provided, but feel free to use your own laptop if you prefer. We will be covering how to install
wrf-python via conda as part of the tutorial.
Students are encouraged to bring their own data sets, but data will be provided if this is not an option. Students will
be provided a jupyter notebook workbook which can be modified to accommodate their data.
Topics include:
• How to install wrf-python via conda
• A brief introduction to jupyter notebook
• Overview of WRF data files
• WRF-Python basics
• Plotting with cartopy
• Overview of OpenMP features and other performance tips
• Open lab for students
Registration
Please register prior to February 21, 2018. The registration form is here:
Registration Form
Registration consists of a brief survey, which will help give the instructor a brief overview of your background and
will help tailor the tutorial to your expectations.
Prerequisites
This tutorial assumes that you have basic knowledge of how to type commands in to a terminal window using your
preferred operating system. You should know some basic directory commands like cd, mkdir, cp, mv.
This tutorial assumes that you have prior experience programming in Python. Below is a list of some Python concepts
that you will see in the examples, but don’t worry if you aren’t familiar with everything.
• Opening a Python interpreter and entering commands.
• Importing packages via the import statement.
• Familiarity with some of the basic Python types: str, list, tuple, dict, bool, float, int, None.
• Creating a list, tuple, or dict with “[ ]”, “( )”, “{ }” syntax (e.g. my_list = [1,2,3,4,5]).
• Accessing dict/list/tuple items with the “x[ ]” syntax (e.g. my_list_item = my_list[0]).
• Slicing str/list/tuple with the “:” syntax (e.g. my_slice = my_list[1:3]).
• Using object methods and attributes with the “x.y” syntax (e.g. my_list.append(6)).
• Calling functions (e.g. result = some_function(x, y))
• Familiarity with numpy would be helpful, as only a very brief introduction is provided.
• Familiarity with matplotlib would be helpful, as only a very brief introduction is provided.
Prerequisites
This tutorial assumes that you have basic knowledge of how to type commands in to a command terminal using your
preferred operating system. You should know some basic directory commands like cd, mkdir, cp, mv.
Regarding Python, to understand the examples in this tutorial, you should have some experience with Python basics.
Below is a list of some Python concepts that you will see in the examples, but don’t worry if you aren’t familiar with
everything.
• Opening a Python interpreter and entering commands.
• Importing packages via the import statement.
• Familiarity with some of the basic Python types: str, list, tuple, dict, bool, float, int, None.
• Creating a list, tuple, or dict with “[ ]”, “( )”, “{ }” syntax (e.g. my_list = [1,2,3,4,5]).
• Accessing dict/list/tuple items with the “x[ ]” syntax (e.g. my_list_item = my_list[0]).
• Slicing str/list/tuple with the “:” syntax (e.g. my_slice = my_list[1:3]).
• Using object methods and attributes with the “x.y” syntax (e.g. my_list.append(6)).
• Calling functions (e.g. result = some_function(x, y))
• Familiarity with numpy would be helpful, as only a very brief introduction is provided.
• Familiarity with matplotlib would be helpful, as only a very brief introduction is provided.
If you are completely new to Python, that shouldn’t be a problem, since most of the examples consist of basic container
types and function calls. It would be helpful to look at some introductory material before arriving at the tutorial. If
you’ve programmed before, picking up Python isn’t too difficult.
Here are some links:
https://www.learnpython.org/
https://developers.google.com/edu/python/
To begin, you will first need to know how to open a command line terminal for your operating system.
For Windows:
WINDOWS + r
type cmd in the run window
For Mac:
For Linux:
CTRL + ALT + T
CTRL + ALT + F2
For this tutorial, you will need to download and install Miniconda. We are going to use Python 3.6, but it will also
work with Python 2.7.
Please use the appropriate link below to download Miniconda for your operating system.
Win64
Mac
Linux
For more information, see: https://conda.io/miniconda.html
The conda package manager is a utility (similar to yum or apt-get) that installs packages from a repository of pre-
compiled Python packages. These repositories are called channels. Conda makes it easy for Python users to install
and uninstall packages, and also can be used to create isolated Python environments (more on that later).
Miniconda is a bare bones implementation of Anaconda and only includes the conda package manager. Since we are
going to use the conda-forge channel to install our scientific packages, Miniconda avoids any complications between
packages provided by Anaconda and conda-forge.
Windows:
1. Browse to the directory where you downloaded Miniconda3-latest-Windows-x86_64.exe.
2. Double click on Miniconda3-latest-Windows-x86_64.exe.
3. Follow the instructions.
4. Restart your command terminal.
Mac and Linux:
For Mac and Linux, the installer is a bash script.
1. Using a terminal, you need to execute the bash shell script that you downloaded by doing:
bash
6. Verify that your system is using the correct Python interpreter by typing the following in to your
command terminal:
which python
You should see the path to your miniconda installation. If not, see the note below.
Note: If you have already installed another Python distribution, like Enthought Canopy, you will
need to comment out any PATH entries for that distribution in your .bashrc or .bash_profile. Other-
wise, your shell environment may pick to wrong Python installation.
If bash is not your default shell type, and the PATH variable has been set in .bash_profile by the
miniconda installer, try executing “bash -l” instead of the “bash” command in step 5.
If you are new to the conda package manager, one of the nice features of conda is that you can create isolated Python
environments that prevent package incompatibilities. This is similar to the virtualenv package that some Python users
may be familiar with. However, conda is not compatible with virtualenv, so only use conda environments when
working with conda.
The name of our conda environment for this tutorial is: tutorial_2018.
Follow the instructions below to create the tutorial_2018 environment.
1. Open a command terminal if you haven’t done so.
2. [Linux and Mac Users Only] The conda package manager only works with bash, so if bash is not
your current shell, type:
bash
Note: Conda-forge is a community driven collection of packages that are continually tested to
ensure compatibility. We highly recommend using conda-forge when working with conda. See
https://conda-forge.github.io/ for more details on this excellent project.
Type “y” when prompted. It will take several minutes to install everything.
This command creates an isolated Python environment named tutorial_2018, and installs the python
interpreter, matplotlib, cartopy, netcdf4, jupyter, git, ffmpeg, and wrf-python packages.
Note: When the installation completes, your command terminal might post a message similar
to:
mkdir -p ~/Library/LaunchAgents
cp /path/to/miniconda3/envs/tutorial_test/org.freedesktop.dbus-
˓→session.plist ~/Library/LaunchAgents/
This is indicating that the dbus package can be set up to automatically load on login. You can
either ignore this message or type in the commands as indicated on your command terminal.
The tutorial should work fine in either case.
For Windows:
activate tutorial_2018
source deactivate
For Windows:
deactivate tutorial_2018
The student workbook for the tutorial is available on GitHub. The tutorial_2018 conda environment includes the git
application needed to download the repository.
These instructions download the tutorial in to your home directory. If you want to place the tutorial in to another
directory, we’re going to assume you know how to do this yourself.
To download the student workbook, follow these instructions:
1. Activate the tutorial_2018 conda environment following the instructions in the previous step (source activate
tutorial_2018 or activate tutorial_2018).
2. Change your working directory to the home directory by typing the following command in to the command
terminal:
For Linux and Mac:
cd ~
For Windows:
cd %HOMEPATH%
3. Download the git repository for the tutorial by typing the following in to the command terminal:
4. There may be additional changes to the tutorial after you have downloaded it. To pull down the latest changes,
type the following in to the command terminal:
For Linux and Mac:
cd ~/wrf_python_tutorial/wrf_workshop_2018
git pull
For Windows:
activate tutorial_2018
cd %HOMEPATH%\wrf_python_tutorial\wrf_workshop_2018
git pull
Note: If you try the “git pull” command and it returns an error indicating that you have made changes to the
workbook, this is probably because you ran the workbook and it contains the cell output. To fix this, first do a
checkout of the workbook, then do the pull.
git checkout -- .
git pull
Verifying that your environment is correct involves importing a few packages and checking for errors (you may see
some warnings for matplotlib or xarray, but you can safely ignore these).
1. Activate the tutorial_2018 conda environment if it isn’t already active (see instructions above).
2. Open a python terminal by typing the following in to the command terminal:
python
A link will be provided in an email prior to the tutorial for the WRF-ARW data files used for the examples. If you did
not receive this email, the link will also be provided at the tutorial itself.
You also have the option of using your own data files for the tutorial by modifying the first Jupyter Notebook cell
to point to your data set. However, there is no guarantee that every cell in your workbook will work without some
modifications (e.g. cross section lines will be drawn outside of your domain).
1. The link in the email should take you to a location on an Amazon cloud drive.
2. If you hover your mouse over the wrf_tutorial_data.zip file, you’ll see an empty check box appear next to the
file name. Click this check box.
3. At the bottom of the screen, you’ll see a Download button next to a cloud icon. Click this button to start the
download.
4. The download was most likely placed in to your ~/Downloads folder [%HOMEPATH%\Downloads for Win-
dows]. Using your preferred method of choice for unzipping files, unzip this file in to your home directory. Your
data should now be in ~/wrf_tutorial_data [%HOMEPATH%\wrf_tutorial_data for Windows].
5. Verify that you have three WRF output files in that directory.
Getting Help
If you experience problems during this installation, please send a question to the Google Group support mailing list.
We look forward to seeing you at the tutorial!
• genindex
• modindex
• search
217
wrf-python Documentation, Release 1.2.0
219
wrf-python Documentation, Release 1.2.0
220 Index
wrf-python Documentation, Release 1.2.0
P U
pairs (wrf.combine_dims attribute), 189 udhel() (in module wrf), 106
pairs_to_latlon() (in module wrf), 134 uvmet() (in module wrf), 96
PolarStereographic (class in wrf), 143 uvmet_left_iter() (in module wrf.specialdec), 182
pole_lat (wrf.WrfProj attribute), 137
pole_lon (wrf.WrfProj attribute), 137 V
proj4() (wrf.WrfProj method), 140 varname (wrf.from_var attribute), 190
psafilepath() (in module wrf), 132 varnames (wrf.either attribute), 189
pvo() (in module wrf), 108 vertcross() (in module wrf), 68
pw() (in module wrf), 112 vinterp() (in module wrf), 72
pyngl() (wrf.WrfProj method), 140
pyngl_enabled() (in module wrf), 125 W
R wetbulb() (in module wrf), 110
WrfProj (class in wrf), 137
rh() (in module wrf), 95
RotatedLatLon (class in wrf), 144 X
S x (wrf.CoordPair attribute), 135
xarray_enabled() (in module wrf), 124
set_alg_metadata() (in module wrf.metadecorators), 186 xy() (in module wrf), 89
set_cache_size() (in module wrf), 126 xy_str() (wrf.CoordPair method), 136
set_cape_alg_metadata() (in module wrf.metadecorators), xy_to_ll() (in module wrf), 74
187 xy_to_ll_proj() (in module wrf), 76
set_cape_metadata() (in module wrf.metadecorators), 185
Index 221
wrf-python Documentation, Release 1.2.0
Y
y (wrf.CoordPair attribute), 135
222 Index