pyEUVTools: EUV Instrument Response Tools
Overview
pyEUVTools is a SunCAST Python package for building, inspecting, and exporting EUV instrument response products.
The project is designed to become a reusable response-function layer for the
broader SunCAST Python ecosystem, including packages such as pyCHMP and
pyGXrender, while remaining usable as a standalone scientific library.
The first backend focus is SDO/AIA. The package now also includes a static STEREO/EUVI temperature-response builder for GX-compatible downstream use.
Project Status
pyEUVTools is publicly released on PyPI and archived from GitHub releases by Zenodo.
Zenodo concept DOI: 10.5281/zenodo.20029729
The concrete 0.1.0 release gate is documented in docs/dev_workflow.md.
In short, the first release must include a documented usable AIA API, validated
scientific behavior, at least one downstream-consumable output path, and tests
for the shipped public surface.
Current Scope
- AIA wavelength-response wrappers powered by
aiapy - raw AIA temperature-response folding equivalent to the numerical step in SSW
aia_bp_make_tresp.pro - static STEREO/EUVI temperature-response payloads for Ahead and Behind, using packaged SRA calibration files and the same AIA hybrid emissivity grid used by the AIA path
- static Solar Orbiter/EUI FSI and HRI temperature-response payloads, using packaged GX response curves and the same AIA hybrid emissivity grid used by the AIA path
- static Yohkoh/SXT and TRACE temperature-response payloads loaded from packaged GX response structures
- optional
fiascobackend introspection and database bootstrap helpers for Python-native CHIANTI access - IDL fixture comparison helpers for assessing structural parity against GX-style AIA response SAV files
- canonical benchmark planning for raw IDL AIA temperature-response fixtures with full provenance
- response-table data models for future multi-instrument support
- a package layout intended to grow into a generalized EUV response toolkit
Planned Scope
- export/import helpers for GX-compatible response structures
- support for additional instruments such as TRACE, EUI, and SXT
Installation
Install the published package from PyPI:
python -m pip install pyeuvtools
For local development, use an editable install:
git clone https://github.com/suncast-org/pyEUVTools.git
cd pyEUVTools
python -m pip install -e .[dev]
For a runtime-only editable install:
git clone https://github.com/suncast-org/pyEUVTools.git
cd pyEUVTools
python -m pip install -e .
For the optional Python-native CHIANTI prototype backend:
python -m pip install -e .[chianti]
The fiasco/CHIANTI path is currently a provisional backend rather than the
default production route. Installing the optional chianti extra is therefore
not required for normal package use.
Contributor Artifact Policy
This repository may ship committed reference artifacts for documentation, benchmark parity, and reviewable contributor refreshes, but ordinary user runs should not write into the clone by default.
- User-generated benchmark outputs and hybrid exports default to user-local locations under
~/.pyeuvtools/or a system temp directory fallback whenHOMEis unavailable. - Repo-local writes are intentional contributor actions and should use explicit paths such as
--artifact-dir benchmark-results/...or IDLoutdir='benchmark-data/...'. - The currently shipped runtime AIA V9 exports live under
src/pyeuvtools/data/aia/. - The currently shipped EUVI SRA calibration files live under
src/pyeuvtools/data/euvi/sra/. - The currently shipped EUI, SXT, and TRACE static GX response files live under
src/pyeuvtools/data/eui/,src/pyeuvtools/data/sxt/, andsrc/pyeuvtools/data/trace/. - The currently committed benchmark/provenance copy of the AIA V9 hybrid export remains at
benchmark-data/aia/genx-exports/aia_V9/aia_hybrid_genx_export_v1.sav.
For a backend-local note describing what this prototype already covers, what was
validated, and why active development paused in favor of the hybrid
genx-derived approach, see src/pyeuvtools/response/README.md.
Default test runs also exclude the provisional CHIANTI backend tests. To run them explicitly:
python -m pytest -m chianti_backend
Quick Example
from astropy.time import Time
from pyeuvtools.response.aia import build_aia_wavelength_response
response = build_aia_wavelength_response(171, Time("2020-11-26T19:58:31"))
table = response.to_table()
print(response.channel)
print(response.response.unit)
print(table.colnames)
Documentation
Project documentation lives in the docs/ directory and is intended to be published with GitHub Pages.
- Project overview
- Installation
- Usage
- Development workflow
- API notes
- Dependency plan
- Benchmark specification
- Hybrid backend design
Versioning and Releases
- Package versioning is managed with
bumpver - PyPI publishing remains disabled locally until the final release approval is given
- Zenodo metadata is tracked in
.zenodo.jsonand intended to mint a DOI for releases - Release-facing API changes are summarized in
CHANGELOG.md
For this repository, Zenodo and PyPI are intentionally decoupled:
- a GitHub release under
suncast-org/pyEUVToolsis the event intended for Zenodo archival - PyPI publishing is a separate manual GitHub Actions workflow and is not triggered automatically by a tag or GitHub release
- the current Zenodo metadata credits Gelu M. Nita as the named software creator while explicitly acknowledging maintenance in the
suncast-orgGitHub organization
Status
This repository now ships a usable compact AIA response API, static
multi-instrument temperature responses, and public GX bridge helpers needed for
downstream ComputeEUV packing. In particular, the Python aia_get_response
wrapper covers compact effective_area, emissivity, and temperature
responses with explicit non-interactive correction states: raw, evenorm,
and evenorm_chiantifix.
The local metadata now targets 0.2.1. Remaining broader SSW surface coverage such as
full, all, and uv stays documented as later-milestone work rather than as
part of the current feature-release promise.
Metadata
Release files for pyeuvtools 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyeuvtools-0.2.1.tar.gz | 10.9 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyeuvtools-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.9 MB
Release files / pyeuvtools-0.2.1.tar.gz
| Download URL | pyeuvtools-0.2.1.tar.gz |
|---|---|
| Size | 10.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
82a60881970cc3c4bd3c577699409bbf949add3d3caf0eadc8e8b808bbeab82c
|
|
BLAKE2b-256 checksum How to use checksums |
a27adc104d310b72dee993112dfbe4c3fcfbda24ec30a8676e5acb2484fe811c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 23, 2026.
Transparency logRelease files / pyeuvtools-0.2.1-py3-none-any.whl
| Download URL | pyeuvtools-0.2.1-py3-none-any.whl |
|---|---|
| Size | 10.9 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0612671e168657b7a751589b11bf3126d2cb94c22cc35d5a9537e321f61b940c
|
|
BLAKE2b-256 checksum How to use checksums |
afdfaf2b9f90270bbcf2e5bc2c1d92a0002c1cb27f9d9977f76952b3b8ef330e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 23, 2026.
Transparency log