Description
This is an idea and meant as a discussion starter on an potential route to providing support for physical units and propagation of uncertainties for xarray
.
Context
-
NEP 18 (which, as far as I understand, was pushed by you guys, for similar purposes) provides means to combine such features with
xarray
using__array_function__
, if the underlying array implementation supports it. -
I am working on scipp, which (based on a decision I may or may not regret in the future) is reimplementing a lot of features that
xarray
provides, plus some additional features. Two of these features are physical units and propagation of uncertainties.scipp.Variable
is essentially equivalent to anumpy
array with a unit, dimension labels, and an optional array of uncertainties. [*]scipp
implements basic arithmetic operations (and some more) forscipp.Variable
, including efficient propagation of uncertainties.
[*] Caveat: scipp
's current unit implementation is static an would probably need to be replaced for becoming useful for a wider audience.
Idea and questions
Can we implement the __array_function__
protocol for scipp.Variable
so it can be used with xarray
? As far as I can tell this would simply be a lightweight wrapper.
- Did I understand
__array_function__
correctly? - Is there anything else I should be aware of?
- Would anyone be interested in this?
This would amount to using the lower-level parts of scipp
which is quite compact and can be extended to support more data types and more operations in a relatively simple manner (requiring recompilation, since it is written in C++).