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

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.4
File Size Uploaded Provenance Actions
helio_foxes-1.0.4.tar.gz 144.9 kB With provenance Details for helio_foxes-1.0.4.tar.gz

Built distribution (wheel)

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

Total release size: 270.2 kB

Release files / helio_foxes-1.0.4.tar.gz

Download URL helio_foxes-1.0.4.tar.gz
Size 144.9 kB
Tags Source
SHA-256 checksum
How to use checksums
783227bc467ec97c862fcc7f483acc2e4284c6c25ab684c559049dc4851f7f5a
BLAKE2b-256 checksum
How to use checksums
7f5b27d5cc0d76dd945599ee249844179be6330c907dea91ef68077f8eb334c9
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.4-py3-none-any.whl

Download URL helio_foxes-1.0.4-py3-none-any.whl
Size 125.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
77cfebb284642fde13615bb400908fe1fa0fe4642bd2c914b0ab259f5e90fa51
BLAKE2b-256 checksum
How to use checksums
48eb5edaf91fc8d537156be394617ee28bbec86d9123cf7ce5e67c4ef224f61c
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.4

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