Skip to main content

pyEUVTools: EUV Instrument Response Tools

License: MIT Python PyPI Docs DOI

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 fiasco backend 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 when HOME is unavailable.
  • Repo-local writes are intentional contributor actions and should use explicit paths such as --artifact-dir benchmark-results/... or IDL outdir='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/, and src/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.

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.json and 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/pyEUVTools is 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-org GitHub 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)

Source distribution for pyeuvtools 0.2.1
File Size Uploaded
pyeuvtools-0.2.1.tar.gz 10.9 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyeuvtools 0.2.1
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page