Skip to main content

Utilities and tools for working with MAR regional climate model outputs through xarray

Project description

marutils - Utilities for working with MAR RCM outputs

This package contains utilities/tools that make it easier to open MAR RCM outputs.

  • Load outputs straight into an xarray Dataset with standard dimensions names (time, y, x).
  • Provide a path with a wildcard expression (*) to automatically load several years of MAR files at once, concatenating them along the time axis.
  • Plays nicely with Dask - chunking options default to 365-366 days (but can be changed at will).
  • Loaded Datasets are automatically "geo-aware" using the rioxarray .rio accessor - no more trying to work out MAR's geo-referencing manually!
  • Helper functions for turning X-hourly variables into continuous time series.
  • Helper functions for masking.

QuickStart

import marutils
# Open a time series for the 21st century.
mar_outputs = marutils.open_dataset('MARv3.11.2/MAR*20*.nc')

# Check out the coordinates.
print(mar_outputs.coords)
Coordinates:
  * x            (x) float32 -760000.0 -740000.0 -720000.0 ... 660000.0 680000.0
  * y            (y) float32 -1180000.0 -1160000.0 ... 1480000.0 1500000.0
  * SECTOR       (SECTOR) float32 1.0 2.0
  * SECTOR1_1    (SECTOR1_1) float32 1.0
  * time         (time) datetime64[ns] 2019-01-01T12:00:00 ... 2019-12-31T12:...
  * ATMLAY3_3    (ATMLAY3_3) float32 0.99974793
    spatial_ref  int64 0

# What is proj.4 string for the geo-referencing of this dataset?
print(mar_outputs.rio.crs.to_proj4())
+proj=stere +lat_0=70.5 +lon_0=-40 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs=True

Installation

At the moment, manually:

git clone <repository>
cd <repository>
pip install -e .

Soon to be available via pyPI.

Working with X-hourly outputs

To return an X-hourly variable with a single, continuous hourly time variable:

hourly_air_temperatures = marutils.xhourly.Xhourly_to_time(mar_outputs.TTH)

Useful notes

Pixel corners vs centres

It's useful to remember that netCDF file geo-referencing treats X,Y coordinates as pixel (cell) centres. In contrast, the rasterio/GDAL data model treats X,Y coordinates as pixel upper-left corners.

In the QuickStart section above we loaded a 20 km resolution dataset. The minimum and maximum X coordinates are -760000 and 680000 m respectively. These correspond to the centres of the min/max pixels.

Through the .rio accessor we can check on the bounds/complete spatial extent of the file:

# What is the centre of the top-left cell? (xmin, ymin, xmax, ymax)
mar_outputs.rio.bounds()
(-770000.0, 1510000.0, 690000.0, -1190000.0)

We can see that these bounds account for the 20 km pixel size of this dataset.

Caveats

The geo-referencing capabilities have so far been tested only for Greenland datasets. If you have problems trying to load other domains, please post an issue on this repository.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

marutils-1.0.0.tar.gz (7.7 kB view hashes)

Uploaded Source

Built Distribution

marutils-1.0.0-py3-none-any.whl (9.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page