Simple unitful calculations with `xarray`
Project description
Xarray_SimpleUnits
Unitful calculations with xarray
Keeps track of units when working with xarray.DataArray
s 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
- requiredxarray
- requiredpytest
- 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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ad11efb4155e84c9831d580d8cf2b127b5720f40ef6ba2d089e729bda9f83b8 |
|
MD5 | eab693d068c7c962e9b2b049439a28e2 |
|
BLAKE2b-256 | b39abf14fd611b320f533d7e84422a00a87a6e4e1bff809e342418543fe8e45a |
File details
Details for the file xarray_simpleunits-0.0.1-py2.py3-none-any.whl
.
File metadata
- Download URL: xarray_simpleunits-0.0.1-py2.py3-none-any.whl
- Upload date:
- Size: 12.1 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c247dfdc6b622fccc46e6ab032ac778513a64887d1cb67dd7084c4bdf24f2fba |
|
MD5 | 0b108ba6c083fc9d9aa047dd207f6a1e |
|
BLAKE2b-256 | 1a5525201d10d90926bcb8f1147a87ad7a45b3cfa23e72f9364e72b27bce497d |