Skip to content

Commit 059bd09

Browse files
authored
Merge pull request #393 from mwcraig/mwcraig-cycle4
Cycle 4 Funding: Array API and astrowidgets
2 parents d4a8bf4 + d9ae430 commit 059bd09

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
### Array API and Visualization
2+
3+
4+
### Project Team
5+
The project team will be Matt Craig. If additional help is needed it will be subcontracted.
6+
7+
### Project Description
8+
9+
There are two pieces to this project, which are essentially independent. One could be funded without funding the other.
10+
11+
1. Implement the Python [array API standard](https://data-apis.org/array-api/latest/) for at least `CCDData` objects, and perhaps `NDData` objects in the core astropy library and in `ccdproc`.
12+
1. Finalize work on a 1.0 release of the `astrowidgets` API and reference implementation.
13+
14+
### Project / Work
15+
16+
#### Array API
17+
18+
Since the bulk of `ccdproc`, `NDData` and `CCDData` were written, there has been a proliferation of array packages beyond `numpy`, which was the single standard array package at the time this coed was originally developed. Adopting the relatively recent [Python array API](https://data-apis.org/array-api/latest/index.html) would enable the use of any of the newer, and in some cases more performant, packages, a list of which is on the [array API site](https://data-apis.org/array-api/latest/purpose_and_scope.html#stakeholders).
19+
20+
As long as a significant rewrite of `ccdproc` is occurring these additional work will be done:
21+
22+
1. Update packaging infrastructure to be `pyproject.toml`-based and add regular wheel builds.
23+
2. Adopt the type of automated code checks that have been adopted by core astropy.
24+
3. Implement a class-based interface for image combination as outlined in [this PR](https://github.com/astropy/ccdproc/pull/656).
25+
4. Update code base to remove vestigal code checks and other clean up (e.g. remove a test for whether the user is using astropy `v1.0`)
26+
27+
#### Astrowidgets
28+
29+
The [`astrowidgets`](https://github.com/astropy/astrowidgets) package has been developed in bursts of activity over the last several years, in part limited by my past availability. This part of the proposal would see the finalization of a "version 1" API and one or more reference implementations. There is a ginga-based implementation already and a bqplot-based implementation is fairly far along. The latter may or may not end up being included in the first stable release of `astrowidgets` depending on the wishes of the other people working on `astrowidgets`.
30+
31+
32+
### Approximate Budget
33+
Currency: US $24,000
34+
35+
This estimate assumes 40 hours/week, $150/hour, for a total equivalent to 4 weeks, though the development effort will be spread over a much longer time span.
36+
37+
A breakdown of the estimated time for each task is below, along with its associated cost. The purpose of this is to make it easier to consider partial funding in the event full funding is not possible.
38+
39+
#### `ccdproc` and `astropy.nddata` work
40+
41+
The items in this section are largely independent of each other and could be funded separately.
42+
43+
Task | Estimated hours | Cost
44+
---- | -------------- | ----
45+
1.a Implement Array API | 35 | $5,250
46+
1.b Update `ccdproc` to use modern packaging and testing | 10 | $1,500
47+
1.c Implement class-based interface for combination | 20 | $3,000
48+
1.d Code clean-up in `ccdproc`| 10 | $1,500
49+
**SUBTOTAL** | **75** | **$11,250**
50+
51+
#### `astrowidgets` work
52+
53+
The items in this section largely build on each other. If partially funded, it would make sense to provide funding in order (e.g. 2.a and 2.b or 2.a trough 2.d).
54+
55+
Task | Estimated hours | Cost
56+
---- | -------------- | ----
57+
2.a Finalize the stable version of the API and document it | 35 | $5,250
58+
2.b Split API specification from implementations | 10 | $1,500
59+
2.c Update `ginga`-based implementation to match API | 10 | $1,500
60+
2.d Finish implementation of `bqplot`-based interface | 20 | $3,000
61+
2.e Document the implementations and make sample widgets that build on it | 20 | $3,000
62+
**SUBTOTAL** | **85** | $12,750
63+
64+
65+
### Period of Performance
66+
67+
The period of performance is one year from the start of the grant. While this is significantly longer than the amount of time I anticipate these revisions will take, I want to be more realistic than I've been in the past about the overall calendar time needed to complete this work.
68+
69+
My teaching duties are significantly reduced in Fall 2024, which will be my final semester of teaching.

0 commit comments

Comments
 (0)