Skip to main content

Simple unitful calculations with `xarray`

Project description

Xarray_SimpleUnits

builds package wheel pyversions codecov coveralls

Unitful calculations with xarray

Keeps track of units when working with xarray.DataArrays and xarray.Datasets 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.Variable 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.3.tar.gz (14.1 kB view details)

Uploaded Source

Built Distribution

xarray_simpleunits-0.0.3-py2.py3-none-any.whl (12.6 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

  • Download URL: xarray_simpleunits-0.0.3.tar.gz
  • Upload date:
  • Size: 14.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for xarray_simpleunits-0.0.3.tar.gz
Algorithm Hash digest
SHA256 dde2f4e6bd6a8cc9343998cd2a06aa5b7a61008923dc65543622a226358f2201
MD5 621cee33085931c0ec355fc69f83a026
BLAKE2b-256 5162b6b357b25120b4ab464f5f9586b672773d8a3fe81227526554a2ebbc6a68

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for xarray_simpleunits-0.0.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 297da8f7a2ad6e6f14414f1e18f8eb4eee95966d552b5b482bc7946f59a52d89
MD5 064cc786d8d7fc0539f842b30c75ec05
BLAKE2b-256 85acad938a670194f007350f7b931e772a7aae0cbdfb7e19a37f66a7ae913bfa

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