Skip to content

Add Gaia DR3 catalog support with typed models and error handling - #85

Merged
VPRamon merged 6 commits into
mainfrom
gaia
Jul 4, 2026
Merged

Add Gaia DR3 catalog support with typed models and error handling#85
VPRamon merged 6 commits into
mainfrom
gaia

Conversation

@VPRamon

@VPRamon VPRamon commented Jul 3, 2026

Copy link
Copy Markdown
Member

Summary

This PR adds first-class Gaia DR3 catalogue support to Siderust, focused on a typed ingestion boundary and starlight-ready photometry primitives.

What changed

  • Added a new catalogs::gaia module with a strict raw/domain split:
    • GaiaDr3RawSourceRow for CSV/ADQL boundary data.
    • GaiaDr3Source for validated domain records.
    • typed source identifiers, Julian-year epochs, proper motion, astrometry, broad-band photometry, and quality flags.
  • Added structured Gaia DR3 error handling for missing columns, invalid numbers, non-finite values, invalid astrometric ranges, malformed spectra, and insufficient passband coverage.
  • Added lightweight local CSV chunk parsing for documented Gaia DR3 columns.
  • Added passband-aware Gaia XP photometry primitives:
    • wavelength and spectral-flux-density typed wrappers;
    • sampled-spectrum validation with strictly increasing wavelengths;
    • photon-flux integration over spectral bands;
    • the 330–650 nm Gaia XP starlight production band;
    • passband-integrated stellar source records for downstream starlight products.
  • Exposed Gaia DR3 types through catalogs::gaia and catalogs.
  • Updated README and CHANGELOG to mark Gaia DR3 ingestion as supported and document the new starlight/photometry capability.
  • Updated quick-xml from 0.40 to 0.41.
  • Cleaned up a few rustdoc links and symbols that could break or degrade documentation output.

Validation covered by tests

The PR adds unit coverage for:

  • raw Gaia rows converting into typed validated sources;
  • RA/Dec range validation;
  • typed ICRS direction construction;
  • reference epoch preservation;
  • optional Gaia photometry handling;
  • XP sampled-spectrum validation;
  • malformed spectral values and non-monotonic spectra;
  • photon-flux integration against a synthetic linear spectrum;
  • CSV parsing for the documented Gaia DR3 columns;
  • photometry model metadata naming.

Scope note

This introduces the typed Gaia DR3 ingestion and photometry foundation needed by starlight products. Network retrieval, large-scale catalogue download orchestration, and production map generation remain separate pipeline/tooling concerns.

@VPRamon VPRamon self-assigned this Jul 3, 2026
@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown

Code Coverage

Package Line Rate Complexity Health
src.astro.dynamics.forces 86% 0
src.bodies.aircraft 98% 0
src.event.altitude 89% 0
src.event.stellar 93% 0
src.event.lunar 94% 0
src.astro.sgp4 88% 0
src.coordinates.transform.centers.position 77% 0
src.coordinates.transform.providers 93% 0
src.pod.spice 88% 0
src.pod.qc 93% 0
src.formats.spice 82% 0
src.formats.iers 86% 0
src.astro 89% 0
src.event.azimuth 94% 0
src.pod 100% 0
src.coordinates.transform.frames 94% 0
src.formats.rinex 79% 0
src.healpix 83% 0
src.formats.ilrs 95% 0
src.pod.propagation 94% 0
src.pod.product 99% 0
src.astro.nutation 94% 0
src.catalogs.gaia 91% 0
src.ephemeris.jpl 94% 0
src.pod.process 93% 0
src.bodies 94% 0
src.pod.observation 87% 0
src.mission.geometry 91% 0
src.coordinates.transform 94% 0
src.formats.tle 94% 0
src.pod.estimation 90% 0
src.mission 89% 0
src.ephemeris 88% 0
src.targets 99% 0
src.ephemeris.lagrange 85% 0
src 91% 0
src.formats.vlbi 100% 0
src.spice 82% 0
src.coordinates.observation 97% 0
src.pod.problem 95% 0
src.formats.igs 90% 0
src.catalogs 92% 0
src.formats.adsb 85% 0
src.pod.force 94% 0
src.event 93% 0
src.coordinates.transform.centers 100% 0
src.event.solar 94% 0
src.formats.tle.omm 96% 0
src.coordinates 96% 0
src.astro.dynamics.propagation 75% 0
src.photometry.passbands 99% 0
src.starlight 44% 0
src.formats.ccsds 90% 0
src.pod.run 100% 0
src.event.search 95% 0
src.astro.dynamics.gravity 72% 0
src.ephemeris.vsop87 100% 0
src.astro.dynamics 95% 0
src.formats 94% 0
src.atmosphere 97% 0
src.ephemeris.elp2000 99% 0
Summary 91% (31702 / 34969) 0

VPRamon added 3 commits July 3, 2026 23:02
Replace Gaia-local unit wrappers with qtty JulianYears, angular rates, and astro::ProperMotion, and align proper-motion propagation with Julian-year catalogue conventions. Use qtty velocity::C for photon-flux integration instead of a local speed-of-light constant.
Replace the Gaia-specific Nanometers newtype with crate::qtty::Nanometers while keeping catalogue validation in a small helper.
Promote the unreleased changelog and align workspace crate versions in Cargo.toml and Cargo.lock.
@VPRamon
VPRamon merged commit b943a4a into main Jul 4, 2026
10 checks passed
@VPRamon
VPRamon deleted the gaia branch July 4, 2026 09:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant