-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
xarrayusing__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
xarrayprovides, plus some additional features. Two of these features are physical units and propagation of uncertainties.scipp.Variableis essentially equivalent to anumpyarray with a unit, dimension labels, and an optional array of uncertainties. [*]scippimplements 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++).