A lightweight interface for reading in output from the Weather Research and Forecasting (WRF) model into xarray Dataset. The primary objective of xwrf
is to replicate crucial I/O functionality from the wrf-python package in a way that is more convenient for users and provides seamless integration with the rest of the Pangeo software stack.
CI | |
---|---|
Docs | |
License |
xwrf
may be installed with pip:
python -m pip install git+https:/NCAR/xwrf.git
The native WRF output files are not CF compliant. This makes these files not the easiest NetCDF files to use with tools like xarray. This package provides a simple interface for reading in the WRF output files into xarray Dataset objects using xarray's flexible and extensible I/O backend API. For example, the following code reads in a WRF output file:
In [1]: import xarray as xr
In [2]: path = "./tests/sample-data/wrfout_d03_2012-04-22_23_00_00_subset.nc"
In [3]: ds = xr.open_dataset(path, engine="xwrf")
In [4]: # or
In [5]: # ds = xr.open_dataset(path, engine="wrf")
In [6]: ds
Out[6]:
<xarray.Dataset>
Dimensions: (Time: 1, south_north: 546, west_east: 480)
Coordinates:
XLONG (south_north, west_east) float32 ...
XLAT (south_north, west_east) float32 ...
Dimensions without coordinates: Time, south_north, west_east
Data variables:
Q2 (Time, south_north, west_east) float32 ...
PSFC (Time, south_north, west_east) float32 ...
Attributes: (12/86)
TITLE: OUTPUT FROM WRF V3.3.1 MODEL
START_DATE: 2012-04-20_00:00:00
SIMULATION_START_DATE: 2012-04-20_00:00:00
WEST-EAST_GRID_DIMENSION: 481
SOUTH-NORTH_GRID_DIMENSION: 547
BOTTOM-TOP_GRID_DIMENSION: 32
... ...
NUM_LAND_CAT: 24
ISWATER: 16
ISLAKE: -1
ISICE: 24
ISURBAN: 1
ISOILWATER: 14
In addition to being able to use xr.open_dataset
, xwrf
also allows reading in multiple WRF output files at once via xr.open_mfdataset
function:
ds = xr.open_mfdataset(list_of_files, engine="xwrf", parallel=True,
concat_dim="Time", combine="nested")
One can achieve the same functionality with a preprocess function. However, there are some additional I/O features that wrf-python implements under the hood that we think would be worth implementing as part of a backend engine instead of a regular preprocess function.