@@ -12,15 +12,16 @@ I request partial buy-out from my professorship at UofT to be able to work one
12
12
day a week on projects that are too large for the time I can currently commit
13
13
for astropy. Specifically, I propose,
14
14
15
- - To enhance Masked and Distribution such that they can be used in all the
16
- main astropy classes (Time, Representation, Frame, and SkyCoord).
15
+ - To ensure Masked and Distribution can be used in all the main astropy classes
16
+ (Time, Representation, Frame, and SkyCoord).
17
17
- Use the new numpy dtype machinery to deal with units, thus speeding up units
18
- conversions and facilitating Quantity becoming a container class that can
19
- handle not just ndarray but any type of array, i.e., also dask, jax, etc.
18
+ conversions.
19
+ - Facilitate Quantity becoming a container class that can handle not just
20
+ ndarray but any type of array, i.e., also dask, jax, etc.
20
21
- Extend the same machinery to Masked and Distribution so that all main astropy
21
22
classes can use arbitrary array classes.
22
- - Introduce a new Variable class that tracks uncertainties and their correlations
23
- analytically (based on ideas from the uncertainties package).
23
+ - Finish my implementation of a Variable class that tracks uncertainties and
24
+ their correlations analytically (based on the uncertainties package).
24
25
25
26
### Project / Work
26
27
@@ -35,9 +36,13 @@ In particular, while I found time to enable the use of Masked with Quantity
35
36
and Time, the logical extension to coordinates is still missing. Similarly,
36
37
Distribution now works well with Quantity, but not with Time and the various
37
38
classes underlying coordinates. Solving this will allow masks and (implicit)
38
- error propagation on all astropy core classes. Furthermore, an attempt to
39
- introduce a Variable class that tracks uncertainties and covariances has been
40
- stalled for almost a decade. All these require focussed time.
39
+ error propagation on all astropy core classes. Furthermore, an
40
+ [ PR] ( https://github.com/astropy/astropy/pull/3715 ) to introduce a Variable
41
+ class that tracks uncertainties and covariances (based on the [ uncertainties
42
+ package] ( https://pythonhosted.org/uncertainties/ ) , but extended it to deal
43
+ natively with arrays), has been stalled for almost a decade. All these
44
+ require focussed time to finish the implementation, writing tests, documenting
45
+ proper usage, etc.
41
46
42
47
An exciting development at numpy has been the new dtype machinery, which
43
48
allows much easier design of user data types. So far, the main application
@@ -58,15 +63,22 @@ astropy, so that it can be used more generally.
58
63
59
64
Using unit-carrying data types should also make it easier (though is not
60
65
required) for Quantity to support other array classes (dask, jax, etc.), as
61
- suggested in APE 25. This will help deal with larger data sets (dask) and gain
62
- us GPU acceleration (jax). The nice things is that if Quantity is able to use
63
- other array types than ndarray, then this will nearly automatically extend to
64
- coordinates (since those use quantities almost exclusively). A bit more of an
65
- obstacle will be Time, though there a user dtype to hold the two parts of the
66
- JD (or indeed a proper quad-precision float) may help similarly: make the
67
- implementation a lot cleaner, and allow other array types than ndarray. Also,
68
- once Quantity is done, it will be easy to extend it to Masked and Distribution
69
- (and possibly Variable), as those are basically container classes already.
66
+ proposed in [ APE 25] ( https://github.com/astropy/astropy-APEs/pull/91 ) . This
67
+ will help deal with larger data sets (dask) or use GPU acceleration(jax).
68
+ The [ APE 25 report] ( https://github.com/nstarman/astropy-APEs/blob/units-quantity-2.0/APE25/report.pdf )
69
+ lays out in detail how this could work. My proposal here is to implement it,
70
+ write proper tests, ensure there are no performance regressions, and of course
71
+ document it all. A nice benefit of the approach laid out in APE 25 is that it
72
+ will be very easy to extend it to Masked and Distribution (and possibly
73
+ Variable), as those basically are already the type of container classes that
74
+ APE 25 envisions.
75
+
76
+ A nice things of Quantity being able to use other array types than ndarray is
77
+ that this will nearly automatically extend to coordinates (since those use
78
+ quantities almost exclusively; I foresee little more work than adjusting
79
+ tests!). Time will be slightly more work, as it works directly with ndarray,
80
+ but also here the path is straightforward: I can just follow my earlier work
81
+ on ensuring Time can work with Masked.
70
82
71
83
I should perhaps add that the different projects can be separated relatively
72
84
easily, and do not have a very obvious order. Hence, I can give priority to
@@ -79,9 +91,9 @@ regular employment at the University of Toronto correspondingly. At a
79
91
standard rate of USD 150/hour (which happens to be roughly my current salary)
80
92
for 8 hours per week and 45 weeks, this corresponds to USD $54000 per year.
81
93
82
- Note: so far I have done nothing beyond asking my Chair whether a reduction,
83
- including of teaching, might be possible in principle. I will ask for details
84
- if this proposal is deemed interesting.
94
+ Note: While I have asked my Chair whether a reduction, including of teaching ,
95
+ might be possible in principle. I will ask for details if this proposal is
96
+ deemed interesting.
85
97
86
98
### Period of Performance
87
99
0 commit comments