Skip to main content

EUV instrument response tools for the SunCAST Python ecosystem

Project description

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.0. 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyeuvtools-0.2.0.tar.gz (10.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyeuvtools-0.2.0-py3-none-any.whl (10.9 MB view details)

Uploaded Python 3

File details

Details for the file pyeuvtools-0.2.0.tar.gz.

File metadata

  • Download URL: pyeuvtools-0.2.0.tar.gz
  • Upload date:
  • Size: 10.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyeuvtools-0.2.0.tar.gz
Algorithm Hash digest
SHA256 e405f9b248cdab9106de43f380a82b85b26393aba48b5045120aa1ac3d0c556e
MD5 6b7d6f2d171477c075e77d6560ba963d
BLAKE2b-256 9b60f7c6c28d5112917564dc27b84431bd291cae340a95f8186744faa272b45d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyeuvtools-0.2.0.tar.gz:

Publisher: publish-pypi.yml on suncast-org/pyEUVTools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyeuvtools-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: pyeuvtools-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 10.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyeuvtools-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c295f7080fa3917eb31aa45d9625b0d3f9996c9bee92d1e4942584d8657e5dfb
MD5 f7f9eade96c55fa2112325b7f64794c5
BLAKE2b-256 0278646d33f1bebeaa1a767d4c4147e7ad3c17defd9e21a6870076b679feaf79

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyeuvtools-0.2.0-py3-none-any.whl:

Publisher: publish-pypi.yml on suncast-org/pyEUVTools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page