Skip to content

Add Multi-Wavelength Spectroscopy Tutorial with End-to-End Cross-Package Data Pipeline (Spectra.jl + FITSFiles.jl + SpectralFitting.jl + DustExtinction.jl) #202

@aditya-pandey-dev

Description

@aditya-pandey-dev

I propose adding a comprehensive, end-to-end Multi-Wavelength Spectroscopy Tutorial that demonstrates loading, transforming, analyzing, and visualizing spectra across different wavelength regimes (optical, UV, X-ray, infrared) — showcasing the interoperability of multiple JuliaAstro packages in a single realistic scientific workflow.
This directly addresses a major documentation gap and aligns with the ongoing development of Spectra.jl ( JuliaAstro/Spectra.jl#41 -Towards SpectraBase.jl, Spectra.jl#3 - Roadmap, and Spectra.jl PR#24).

The current Tutorials page has only 3 tutorials - JWST imaging, tabular data, and curve fitting. There is nothing demonstrating spectral data handling, which is the most common data type astronomers work with. This is a significant gap given that 3 packages (Spectra.jl, SpectralFitting.jl, Korg.jl) exist under the "Spectroscopy" section of the Ecosystem page.

Each JuliaAstro package has its own docs, but there is no centralized guide showing how they compose together in a real workflow. New users (especially those migrating from Python/Astropy's specutils) don't have a reference showing:

How FITSIO.jl / FITSFiles.jl feeds spectral data into Spectra.jl
How UnitfulAstro.jl handles wavelength/frequency/energy unit conversions across the electromagnetic spectrum
How DustExtinction.jl integrates for dereddening observed spectra
How SpectralFitting.jl's OGIP parser connects to Spectra.jl for X-ray data

Modern astronomy is inherently multi-wavelength. Surveys like optical, X-ray, infrared, and radio produce spectra in vastly different formats (FITS binary tables, OGIP PHA files, ASCII tables, VOTable). A tutorial demonstrating how JuliaAstro handles this heterogeneity would be a significant value-add and a strong differentiator vs. Astropy's specutils.

Spectra.jl is undergoing a major refactor (see issues #41, #42, #43, #36) to establish a uniform interface. A tutorial that exercises the real API serves as both documentation and integration test, catching interface gaps early.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions