Epoch propagation and cross-matching (wcc_sim.astrometry)
Space-motion propagation and cross-matching, for merging sky catalogs.
Catalogs disagree on epoch – Gaia DR3 is at J2016.0, Hipparcos at J1991.25 – and on column names, so both are parameters here. Nothing in this module knows which catalog it is looking at.
- wcc_sim.astrometry.as_time(epoch)[source]
A Julian year as a number (2016.0), or a Time, -> Time.
Not “anything Time accepts”: a non-Time goes through Time(f”J{…}”), so it has to be numeric – an ISO date string raises ValueError.
- wcc_sim.astrometry.propagate(cat, from_epoch, to_epoch, ra='ra', dec='dec', pmra='pmra', pmdec='pmdec', parallax=None, rv=None)[source]
Copy of cat with positions moved from one epoch to another.
pmra is dRA/dt * cos(dec) in mas/yr, as Gaia and Hipparcos both tabulate it. Rows without proper motion stay where they are. When parallax and rv name columns, they add perspective acceleration – 75 mas, 4.5 px, for alpha Cen over 35 years – and are ignored where the parallax is not positive.
- wcc_sim.astrometry.crossmatch(a, b, radius_arcsec, ra='ra', dec='dec')[source]
One-to-one nearest matches between two catalogs.
Returns (idx_a, idx_b) such that row idx_a[k] of a and row idx_b[k] of b are the same star. Where several rows of a fall on one row of b, the closest keeps it and the rest come back unmatched – a merge then adds them instead of silently dropping them.
Rows without a usable position are held out and come back unmatched: a position is read through _column, so a masked RA is not matched at the value under its mask, and match_to_catalog_sky raises on a NaN rather than skipping it.