From cd8b14f3f3b64f2bc6b00a51590e4b52559b72c8 Mon Sep 17 00:00:00 2001 From: Matt Craig Date: Fri, 1 Mar 2024 12:02:20 -0600 Subject: [PATCH 1/2] Draft funding proposal --- .../mwcraig-cycle4-ccdproc-astrowidgets.md | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 finance/proposal-calls/cycle4/mwcraig-cycle4-ccdproc-astrowidgets.md diff --git a/finance/proposal-calls/cycle4/mwcraig-cycle4-ccdproc-astrowidgets.md b/finance/proposal-calls/cycle4/mwcraig-cycle4-ccdproc-astrowidgets.md new file mode 100644 index 00000000..b68d7f71 --- /dev/null +++ b/finance/proposal-calls/cycle4/mwcraig-cycle4-ccdproc-astrowidgets.md @@ -0,0 +1,42 @@ +### Array API and Visualization + + +### Project Team +The project team will be Matt Craig. If additional help is needed it will be subcontracted. + +### Project Description + +There are two pieces to this project, which are essentially independent. One could be funded without funding the other. + +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`. +1. Finalize work on a 1.0 release of the `astrowidgets` API and reference implementation. + +### Project / Work + +#### Array API + +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). + +As long as a significant rewrite of `ccdproc` is occurring these additional work will be done: + +1. Update packaging infrastructure to be `pyproject.toml`-based and add regular wheel builds. +2. Adopt the type of automated code checks that have been adopted by core astropy. +3. Implement a class-based interface as outlined in [this PR](https://github.com/astropy/ccdproc/pull/656). + +#### Astrowidgets + +The [`astrowidgets`](https://github.com/astropy/astrowidgets) package has been developed in some 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`. + + +### Approximate Budget +Currency: US $24,000 + +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. + +The time will be roughly split between the two projects described above. + +### Period of Performance + +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. + +My teaching duties are significantly reduced in Fall 2024, which will be my final semester of teaching. From d9ae43082d105413e062899afbc6d6e9252f51d7 Mon Sep 17 00:00:00 2001 From: Matt Craig Date: Fri, 5 Apr 2024 15:51:51 -0500 Subject: [PATCH 2/2] Update proposal and fix typos --- .../mwcraig-cycle4-ccdproc-astrowidgets.md | 33 +++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/finance/proposal-calls/cycle4/mwcraig-cycle4-ccdproc-astrowidgets.md b/finance/proposal-calls/cycle4/mwcraig-cycle4-ccdproc-astrowidgets.md index b68d7f71..cd58d429 100644 --- a/finance/proposal-calls/cycle4/mwcraig-cycle4-ccdproc-astrowidgets.md +++ b/finance/proposal-calls/cycle4/mwcraig-cycle4-ccdproc-astrowidgets.md @@ -21,11 +21,12 @@ As long as a significant rewrite of `ccdproc` is occurring these additional work 1. Update packaging infrastructure to be `pyproject.toml`-based and add regular wheel builds. 2. Adopt the type of automated code checks that have been adopted by core astropy. -3. Implement a class-based interface as outlined in [this PR](https://github.com/astropy/ccdproc/pull/656). +3. Implement a class-based interface for image combination as outlined in [this PR](https://github.com/astropy/ccdproc/pull/656). +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`) #### Astrowidgets -The [`astrowidgets`](https://github.com/astropy/astrowidgets) package has been developed in some 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`. +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`. ### Approximate Budget @@ -33,7 +34,33 @@ Currency: US $24,000 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. -The time will be roughly split between the two projects described above. +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. + +#### `ccdproc` and `astropy.nddata` work + +The items in this section are largely independent of each other and could be funded separately. + +Task | Estimated hours | Cost +---- | -------------- | ---- +1.a Implement Array API | 35 | $5,250 +1.b Update `ccdproc` to use modern packaging and testing | 10 | $1,500 +1.c Implement class-based interface for combination | 20 | $3,000 +1.d Code clean-up in `ccdproc`| 10 | $1,500 +**SUBTOTAL** | **75** | **$11,250** + +#### `astrowidgets` work + +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). + +Task | Estimated hours | Cost +---- | -------------- | ---- +2.a Finalize the stable version of the API and document it | 35 | $5,250 +2.b Split API specification from implementations | 10 | $1,500 +2.c Update `ginga`-based implementation to match API | 10 | $1,500 +2.d Finish implementation of `bqplot`-based interface | 20 | $3,000 +2.e Document the implementations and make sample widgets that build on it | 20 | $3,000 +**SUBTOTAL** | **85** | $12,750 + ### Period of Performance