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  # doctest: +ELLIPSIS
<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  # doctest: +ELLIPSIS
<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.5.tar.gz (15.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xarray_simpleunits-0.0.5-py2.py3-none-any.whl (12.9 kB view details)

Uploaded Python 2Python 3

File details

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

File metadata

  • Download URL: xarray_simpleunits-0.0.5.tar.gz
  • Upload date:
  • Size: 15.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for xarray_simpleunits-0.0.5.tar.gz
Algorithm Hash digest
SHA256 2fa314528c965193b0b5435b43a329d039450783de10daedd200ae2a95942c33
MD5 9ee4b072573ed9929fea909ad80ef8ef
BLAKE2b-256 f5c384a808a9e81669a6f7b78a69e94978648c2633960db27c88cea77d7383eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for xarray_simpleunits-0.0.5.tar.gz:

Publisher: ci_build_and_test.yml on st-bender/xarray-simpleunits

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for xarray_simpleunits-0.0.5-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 3a67ea052ff3041f00bc9ea35bdc94f9b61e407b5f02329bd8499e721cb79dfa
MD5 9a5a010f6b94168f9f1b310d041fb71e
BLAKE2b-256 3e17077ce1e097c03dd14fa2be811ff2ba8dc6a49fc8c5a4503f130a6a3be951

See more details on using hashes here.

Provenance

The following attestation bundles were made for xarray_simpleunits-0.0.5-py2.py3-none-any.whl:

Publisher: ci_build_and_test.yml on st-bender/xarray-simpleunits

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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