Repository navigation
RELEASE_NOTES_5.2.2
Release date: 2026-07-25
Public upgrade path: 5.2.1 to 5.2.2
Moira 5.2.2 is an astronomy-correction and catalog-provenance patch release. It repairs the coordinate-frame construction of the true lunar node, makes the output equinox of analytical mean points explicit, and publishes the current Proper25-backed asteroid-family catalog with complete overlap visibility.
The true lunar node is the intersection between the Moon's instantaneous geocentric osculating orbital plane and the true ecliptic plane of date. Earlier releases constructed the orbital-plane normal from ICRF/J2000 state vectors but intersected it with an ecliptic pole expressed in the true frame of date. Rotating the resulting intersection afterward could not repair that mixed-frame construction.
true_node(...) now:
- obtains simultaneous Moon and Earth position and velocity states;
- constructs the instantaneous geocentric orbital normal as
r x v; - applies ICRF frame bias, IAU 2006 precession, and IAU 2000A nutation to that normal;
- intersects it with the true ecliptic pole in the same frame; and
- projects the ascending direction into true ecliptic longitude of date.
At independently solved northbound zero-latitude crossings, the corrected node longitude agrees with the Moon's geometric ecliptic longitude to better than 0.001 arcsecond. The shipped Swiss Ephemeris fixture is retained only as secondary corroboration, not as the governing derivation.
mean describes the averaged lunar orbital solution; it does not by itself
select a mean coordinate frame. Moira now keeps those two policies separate:
mean_node(jd_ut, nutation=True)
mean_lilith(jd_ut, nutation=True)With the default nutation=True, both results are expressed in the true
ecliptic and equinox of date, matching Moira's default planetary, chart,
transit, synastry, batch, and draconic longitudes. Callers requiring the raw
mean-equinox product can request nutation=False.
The mean node now reuses Moira's admitted IERS 2003 lunar fundamental
argument. Its raw mean-frame result was validated against ERFA faom03, and
its true-frame result is derived by adding Moira's IAU 2000A nutation in
longitude. The default frame correction varies with epoch and can approach
about 19 arcseconds in magnitude.
Chart reduction responses now report nutation and
frame="true_ecliptic_and_equinox_of_date" for node products. Mean-node and
mean-Lilith stage sequences expose the analytical solution and nutation
conversion rather than hiding the frame policy.
The bundled asteroid-family layer now uses:
- the 2026 Proper25 machine-readable distribution for main-belt families; and
- NASA PDS
ast.nesvorny.familiesV2.0 only for the Hilda and Jupiter Trojan populations explicitly excluded by Proper25.
The normalized catalog contains:
- 342 admitted families;
- 200,726 unique numbered asteroids;
- 221,095 membership rows;
- 18,185 asteroids with multiple memberships; and
- up to four preserved memberships for one asteroid.
Nested and overlapping HCM classifications are no longer flattened into one exclusive family. Compatibility surfaces retain a deterministic display-primary family, while complete memberships remain available to grouping, resonance, and REST consumers.
moira/data/asteroid_families.metadata.json records source URLs, archive and
tree hashes, exclusions, aliases, normalization semantics, counts, and the
final CSV hash. New build and refresh scripts reproduce the catalog and
annotate the unified asteroid catalog without altering BSP kernels.
The release exercises:
- IERS/ERFA mean-node authority comparisons at historical and modern epochs;
- exact mean-to-true equinox conversion through IAU 2000A nutation;
- first-principles true-node crossing and common-frame invariants;
- shipped Swiss mean/true node fixture cases under named tolerances;
- node-dependent chart, transit, synastry, batch, draconic, and REST paths;
- asteroid-family source counts, metadata integrity, aliases, overlaps, primary-display selection, bounded member transport, and annotation refresh; and
- release identity, public doctrine, documentation, packaging, and supported Python-version gates.
No NumPy, SciPy, Swiss Ephemeris, jplephem, or other runtime dependency is introduced. Asteroid-family membership remains catalog evidence, not a claim that every listed body is genetically related, and absent membership means only that a body is absent from the admitted source catalogs.