Skip to main content

license: mit task_categories:

  • image-to-image
  • time-series-forecasting tags:
  • solar
  • heliophysics
  • astronomy
  • AIA
  • SDO
  • EUV
  • SXR
  • GOES
  • flare
  • space-weather pretty_name: "FOXES: Framework for Operational X-ray Emission Synthesis" size_categories:
  • 100K<n<1M language:
  • en datasets:
  • griffingoodwin04/FOXES-Data

FOXES: A Framework for Operational X-ray Emission Synthesis

FOXES Logo

FOXES predicts full-disk solar soft X-ray (SXR) flux and spatial patch contributions from seven-channel SDO/AIA extreme-ultraviolet images. This repository contains the Python API, data tools, training code, and evaluation workflows developed through Frontier Development Lab's Heliolab 2025.

Model demo · Dataset · Notebook walkthrough

Install

From a local checkout:

python -m pip install -e .

The package is named helio-foxes; import it as helio_foxes. For a fresh environment, editable tests, or notebook kernel setup, follow the development setup.

Predict one observation

Use a registered JSOC email and a compatible local checkpoint. Load the model once and reuse it for each observation.

import helio_foxes

model = helio_foxes.load_model(
    "forecasting/trained_weights_and_normalization/inverted-attention-mask.ckpt",
    device="auto",
)
processor = helio_foxes.ObservationProcessor(email="you@example.com")
observation = processor.fetch_observation("2023-08-01T00:00:00Z")
result = model.predict(observation)

print(result.flux)      # Full-disk SXR flux, W/m².
print(result.flux_map)  # Spatial patch contributions, W/m².
ax = helio_foxes.plot_flux_map(result, show_harp_boxes=True)

Fetching downloads and preprocesses AIA data and obtains supplementary HARP regions and GOES measurements. Raw downloads are temporary. Missing HARP or GOES data do not discard a usable AIA observation.

Already have data? See loading your own processed arrays or local FITS files. Inputs must match the checkpoint's training preprocessing and wavelength order: [94, 131, 171, 193, 211, 304, 335] Å.

Predict a time range

observations = processor.iter_observations(
    "2024-03-23 01:00", "2024-03-23 02:30",
    cadence="2min", progress=True, save_dir="saved_observations",
)
series = model.predict_series(observations, snapshot_time="2024-03-23 01:45")
ax = series.plot(show_snapshot=True, min_peak_flux=1e-7)

totals = series.to_dataframe()
harp_curves = series.harp_light_curves()  # {HARP number: DataFrame}

The iterator downloads and preprocesses observations one at a time. Existing saved files are reused, so rerunning a range skips completed downloads and preprocessing. AIA record selection uses a bulk JSOC query.

snapshot_time keeps the nearest observation's AIA channel for the flux-map and image panels. Omit it to retain no image; use series.plot() for curves only. Gaussian models show uncertainty when available; deterministic models do not.

Reload saved observations without downloading or preprocessing again:

saved = helio_foxes.load_observations("saved_observations")
series = model.predict_series(saved)
series.plot()

See the API guide for timestamp formats, cadence, source toggles, snapshot selection, uncertainty, plot controls, and saved data.

Models and documentation

The repository includes the original deterministic models and newer local + global Gaussian checkpoints. The newer checkpoints have not yet been validated for prediction quality, spatial maps, or uncertainty calibration. Patch and HARP uncertainties attribute global model variance; they are not calibrated local error bars.

After editing installed source, restart an existing notebook kernel and rerun the setup cell so it loads the current API.

Citation

If you use this code or data in your work, please cite:

@software{FOXES,
    title           = {{FOXES: A Framework For Operational X-ray Emission Synthesis}},
    institution     = {Frontier Development Lab (FDL)},
    repository-code = {https://github.com/griffin-goodwin/FOXES},
    version         = {v1.0},
    year            = {2026}
}

Acknowledgement

This work is a research product of Heliolab (heliolab.ai), an initiative of the Frontier Development Lab (FDL.ai). FDL is a public–private partnership between NASA, Trillium Technologies (trillium.tech), and commercial AI partners including Google Cloud and NVIDIA. Heliolab was designed, delivered, and managed by Trillium Technologies Inc., a research and development company focused on intelligent systems and collaborative communities for Heliophysics, planetary stewardship and space exploration. We gratefully acknowledge Google Cloud for extensive computational resources and NVIDIA Corporation. This material is based upon work supported by NASA under award number No. 80GSFC23CA040. Any opinions, findings, conclusions or recommendations expressed are those of the authors and do not necessarily reflect the views of the National Aeronautics and Space Administration.

Large language models were used as brainstorming tools to discuss possible training strategies and methodological considerations. The authors retained full responsibility for all research decisions, interpretations, and conclusions presented in this work.

Metadata

Release files for helio-foxes 1.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for helio-foxes 1.0.3
File Size Uploaded Provenance Actions
helio_foxes-1.0.3.tar.gz 144.6 kB With provenance Details for helio_foxes-1.0.3.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for helio-foxes 1.0.3
File Interpreter ABI Platform Actions
helio_foxes-1.0.3-py3-none-any.whl Python 3 none any Details for helio_foxes-1.0.3-py3-none-any.whl

Total release size: 269.8 kB

Release files / helio_foxes-1.0.3.tar.gz

Download URL helio_foxes-1.0.3.tar.gz
Size 144.6 kB
Tags Source
SHA-256 checksum
How to use checksums
4afa44a6523cd5ae5fa8d64c1ecb6901a5f056692bb04a445cb1d55b2ebfacea
BLAKE2b-256 checksum
How to use checksums
5b1e8dafc7af39d562b1337bad051039bc9bc75aaca50900626d15fc60a9d0d8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 29, 2026.

Transparency log

Release files / helio_foxes-1.0.3-py3-none-any.whl

Download URL helio_foxes-1.0.3-py3-none-any.whl
Size 125.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f935843370e391e3b5760a6cdfc07ed7567cc4be2a73a9903e96535b7b7e65e2
BLAKE2b-256 checksum
How to use checksums
c795b65c368d887946173ff0725a29d121df0400584467b2482241a9b9026345
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 29, 2026.

Transparency log

Security for helio-foxes 1.0.3

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for helio_foxes-1.0.3.tar.gz

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 Oct 29, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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