Find and download
List FITS files by UTC date, hour and station, then download observations with retries and parallel workers.
Bring e-CALLISTO observations into your Python workflow. Find, download, read, process and plot solar radio dynamic spectra in scripts and notebooks.
Use the library directly in Python for repeatable analysis, batch processing and notebook exploration.
List FITS files by UTC date, hour and station, then download observations with retries and parallel workers.
Open .fit and .fit.gz files as DynamicSpectrum objects with intensity data, frequency and time axes, and observation metadata.
Subtract backgrounds, reduce noise, crop time and frequency ranges, and mitigate radio frequency interference.
Combine frequency bands or time segments, and group files by station and UTC day while retaining provenance.
Create dynamic spectra and light curves, add official GOES X-ray flux data, and save figures at your chosen DPI.
Search published burst reports by date, station and type. Preview candidate FITS files before selecting what to download.
Use Python 3.10–3.14. Install the download and plotting extras to follow all the examples below.
python -m pip install "ecallistolib[download,plot]"Package details, published releases and distribution files are available on ecallistolib on PyPI.
Read FITS files, process arrays and crop spectra. NumPy and Astropy are included as dependencies.
python -m pip install ecallistolibdownloadplotrfigoespython -m pip install "ecallistolib[all]"Run these examples in your own Python environment. Archive access and catalog searches require an internet connection.
Replace the filename with a downloaded e-CALLISTO observation. This example subtracts the background, clips the intensity range and saves the figure.
Requires theplot extra.import ecallistolib as ecl
import matplotlib.pyplot as plt
spectrum = ecl.read_fits("STATION_20230101_120000_01.fit.gz")
print(spectrum.shape) # (n_freq, n_time)
print(spectrum.freq_range_mhz)
fig, ax, image = ecl.plot_dynamic_spectrum(
spectrum,
process="noise_reduced",
clip_low=-5,
clip_high=20,
title="Solar radio observation",
dpi=180,
save_path="observation.png",
)
plt.show()Choose a UTC day and hour, and replace the station filter with your instrument’s name. Inspect the listing, then download the selected files.
Requires thedownload extra.from datetime import date
import ecallistolib as ecl
remote_files = ecl.list_remote_fits(
day=date(2023, 6, 15),
hour=14,
station_substring="station-name",
)
for remote_file in remote_files:
print(remote_file.name)
paths = ecl.download_files(
remote_files,
out_dir="./data",
workers=4,
retries=2,
overwrite="skip",
)
print(paths)Search published Type III reports for a UTC date and station. Check coverage and parsing diagnostics even when the search returns no events.
Requires thedownload extra.Catalog search finds reported events; it does not detect or classify bursts in FITS data. Missing reports do not imply zero solar activity.
from datetime import date
import ecallistolib as ecl
catalog = ecl.search_bursts(
date(2026, 9, 1),
station="BIR",
burst_type="III",
cache_dir=".cache/bursts",
)
for event in catalog:
print(event.start, event.end, event.type_label)
print(catalog.coverage)
print(catalog.diagnostics)
if catalog:
selection = ecl.list_burst_files(
catalog[0], stations="BIR", padding_s=120,
)
print(selection.by_station)
print(selection.unresolved_stations)Detailed function signatures, complete workflows and runnable notebooks live with the library source.
Explore processing, combining, RFI mitigation, GOES data, plotting and the ecallisto command-line tool.
Read the documentationFollow a notebook covering downloads, multi-band spectra, grouped workflows, light curves and GOES comparisons.
Open the notebookSearch events, resolve station names, select files, check temporal coverage and plot event windows.
Explore burst events