Skip to main content

Simple unitful calculations with `xarray`

Project description

Xarray_SimpleUnits

builds codecov coveralls

Unitful calculations with xarray

Keeps track of units when working with xarray.DataArrays using astropy.units for the conversions.

:warning: This package is in alpha stage, that is, it works mostly, but the interface might still be subject to change.

Install

Requirements

  • astropy - required
  • xarray - required
  • pytest - optional, for testing

xarray_simpleunits

An installable pip package called xarray-simpleunits will be available soon from the main package repository, it can then be installed with:

$ pip install xarray_simpleunits

The latest development version can be installed with pip directly from github (see https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support and https://pip.pypa.io/en/stable/reference/pip_install/#git):

$ pip install [-e] git+https://github.com/st-bender/xarray-simpleunits.git

The other option is to use a local clone:

$ git clone https://github.com/st-bender/xarray-simpleunits.git
$ cd xarray-simpleunits

and then using pip (optionally using -e, see https://pip.pypa.io/en/stable/reference/pip_install/#install-editable):

$ pip install [-e] .

or using setup.py:

$ python setup.py install

Optionally, test the correct function of the module with

$ py.test [-v]

or even including the doctests in this document:

$ py.test [-v] --doctest-glob='*.md'

Usage

The python module itself is named xarray_simpleunits and is imported as usual.

All functions should be numpy-compatible and work with scalars and appropriately shaped arrays.

>>> import xarray_simpleunits as xru

The module basically works by adapting (“monkey-patching”) the xarray.DataArray arithmetic methods to honour and keep track of the "units" attribute. To initialize unit handling with xarray, call init_units() first:

>>> import xarray_simpleunits as xru
>>> xru.init_units()

(A similar method to restore the original behaviour is planned.)

So far, the supported operations are addition, subtraction, multiplication, and division. Unit mismatch when adding or subtracting unitful arrays raises an exception. Currently, unit handling with xarray.DataArray requires that the respective array is on the left side of any calculation:

>>> from astropy import units as au
>>> import numpy as np
>>> import xarray as xr
>>> import xarray_simpleunits as xru
>>> np.set_printoptions(precision=6)
>>> xru.init_units()
>>> ds = xr.Dataset(
...     data_vars={
...         "s": ("x", [1., 2., 3.], {"units": "m"}),
...         "t": ("x", [3., 2., 1.], {"units": "s"}),
...     },
... )
>>> v = ds["s"] / ds["t"]
>>> v
<xarray.DataArray (x: 3)>
array([0.333333, 1.      , 3.      ])
Dimensions without coordinates: x
Attributes:
    units:    m / s
>>> # using `astropy` units directly:
>>> v = ds["s"] / (2 * au.Unit("s"))
>>> v
<xarray.DataArray 's' (x: 3)>
array([0.5, 1. , 1.5])
Dimensions without coordinates: x
Attributes:
    units:    m / s

Basic class and method documentation is accessible via pydoc:

$ pydoc xarray_simpleunits

License

This python package is free software: you can redistribute it or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2 (GPLv2), see local copy or online version.

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

xarray_simpleunits-0.0.1.tar.gz (12.4 kB view details)

Uploaded Source

Built Distribution

xarray_simpleunits-0.0.1-py2.py3-none-any.whl (12.1 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file xarray_simpleunits-0.0.1.tar.gz.

File metadata

  • Download URL: xarray_simpleunits-0.0.1.tar.gz
  • Upload date:
  • Size: 12.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.15

File hashes

Hashes for xarray_simpleunits-0.0.1.tar.gz
Algorithm Hash digest
SHA256 9ad11efb4155e84c9831d580d8cf2b127b5720f40ef6ba2d089e729bda9f83b8
MD5 eab693d068c7c962e9b2b049439a28e2
BLAKE2b-256 b39abf14fd611b320f533d7e84422a00a87a6e4e1bff809e342418543fe8e45a

See more details on using hashes here.

File details

Details for the file xarray_simpleunits-0.0.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for xarray_simpleunits-0.0.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 c247dfdc6b622fccc46e6ab032ac778513a64887d1cb67dd7084c4bdf24f2fba
MD5 0b108ba6c083fc9d9aa047dd207f6a1e
BLAKE2b-256 1a5525201d10d90926bcb8f1147a87ad7a45b3cfa23e72f9364e72b27bce497d

See more details on using hashes here.

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