From 280159dcd2853017eeaf145fde6a7933e913fb9e Mon Sep 17 00:00:00 2001 From: Senrokai Date: Wed, 30 Sep 2026 17:46:00 +0200 Subject: [PATCH] Bring the figures the comments quote back to what the catalogue now holds Later commits on this branch (0e9ab6f, ff744a0, 8c3a860, and this round's fold, positional lookup and parallax fallback) changed counts that comments in build.ts, star-readouts.ts, star-catalog.ts and fetchExoplanets.ts still quoted as "measured" or "today". Each is now the value measured on the published catalogue after an ETL run from cache (decoded with decodeStarCatalog, or from the validator log where it prints them): - distances without a published error 439 -> 346, the Gliese ones 357 -> 264 (82 archive); - parallax distances ranged 1 109 -> 1 116; HYG stars at Gaia's distance 8 129 -> 8 105, and the Gaia-placed stars HYG describes 62 002 -> 61 713 at Gaia's distance, 62 097 in all; - HYG rows without a Gaia counterpart 11 554 -> 11 478: past 250 pc 8 307 (1 660 naked-eye), inside it 3 170 (1 204 brighter than V 8, 1 804 from 8 to 12, 162 fainter, 112 of them Gliese stars within 50 pc); the sentence also said those were every star past 250 pc, which the archive's hosts no longer let it be; - planets with a host 6 327 -> 6 328, the 26 left having neither a distance nor a parallax; - renamed hosts 575 -> 574; the composite table fills 100 of the 127 blank distances, not "the 100". No ceiling or floor changes; comments only. Co-Authored-By: Claude Opus 5.5 (1M context) --- .../features/galaxy-system/star-readouts.ts | 7 +++-- src/app/shared/models/star-catalog.ts | 2 +- tools/etl/build.ts | 31 ++++++++++--------- tools/etl/fetchExoplanets.ts | 2 +- 4 files changed, 22 insertions(+), 20 deletions(-) diff --git a/src/app/features/galaxy-system/star-readouts.ts b/src/app/features/galaxy-system/star-readouts.ts index a5725e5..ddd638a 100644 --- a/src/app/features/galaxy-system/star-readouts.ts +++ b/src/app/features/galaxy-system/star-readouts.ts @@ -7,7 +7,7 @@ import { HudReadout } from '../hud/hud-dock.component'; /** * The catalogue that describes a star — its name, type and photometry — as the readout names it. * - * Not the same as `source`, which records whose *position* the star has: 62 002 stars HYG + * Not the same as `source`, which records whose *position* the star has: 62 097 stars HYG * describes sit where Gaia places them, and carry `gaia`. What gives them away is their V * magnitude, which only HYG and the archive measure and the archive's stars have their own source. */ @@ -77,8 +77,9 @@ function radiusReadout(radiusSolar: number, derived: boolean): HudReadout { * Exoplanet Archive places, which sit at its own distances — a lensing model's for the * microlensing hosts among them, OGLE-2005-BLG-390L's 6.6 kpc for one, with no parallax behind it — * and the HYG stars neither Hipparcos nor Gaia measured, which sit at the Gliese catalogue's. Those - * have no published error, and of the 313 on the map about 154 have a photometric or spectroscopic - * parallax in CNS3 (Gliese & Jahreiss 1991), none measured: GJ 3522 at 4.46 pc is 1000/224 mas. + * have no published error, and of the 313 on the map before 49 were folded into the Gaia source SIMBAD names + * them as (264 now), about 154 had a photometric or spectroscopic parallax in CNS3 (Gliese & + * Jahreiss 1991), none measured: GJ 3522 at 4.46 pc is 1000/224 mas. */ export function positionsNote(stars: readonly StarRecord[]): string { const archive = stars.filter((star) => star.source === 'exoplanet-archive').length; diff --git a/src/app/shared/models/star-catalog.ts b/src/app/shared/models/star-catalog.ts index 7d23d1a..3dd5bdd 100644 --- a/src/app/shared/models/star-catalog.ts +++ b/src/app/shared/models/star-catalog.ts @@ -42,7 +42,7 @@ export const BYTES_PER_STAR_META = /** * Bits of the photometry column. The band takes two: none (a stand-in magnitude), V or G. None - * of it follows from the source, which records where the *position* came from: 62 002 stars + * of it follows from the source, which records where the *position* came from: 62 097 stars * Gaia places keep HYG's V and B−V, and the archive's stars in G have a B−V from their * temperature. The next bit says whose parallax the distance is, which for a HYG star Gaia did * not place can still be Gaia's, and the last whether the colour was read off a temperature. diff --git a/tools/etl/build.ts b/tools/etl/build.ts index 2dae57d..e667bf2 100644 --- a/tools/etl/build.ts +++ b/tools/etl/build.ts @@ -24,7 +24,7 @@ function assertCondition(condition: boolean, message: string): void { /** * Stars whose magnitude is a stand-in, and distances published without an error. Measured 309 and - * 439: the 44 Gaia sources with no G and the 265 archive hosts with neither V nor G; the 357 Gliese + * 346: the 44 Gaia sources with no G and the 265 archive hosts with neither V nor G; the 264 Gliese * distances (no Hipparcos parallax behind them) and 82 archive hosts the archive gives no error * for. Losing either field loses it for hundreds of thousands of stars. */ @@ -33,7 +33,7 @@ const MAX_STARS_WITHOUT_DISTANCE_ERROR = 1_000; /** * What the errors themselves come to, which the two counts above cannot see: Gaia's parallax_error * stored in milliarcseconds rather than over the parallax still encodes, decodes and passes both. - * Measured: the median relative error of the stars at Gaia's distance is 0.33 %, and 1 109 parallax + * Measured: the median relative error of the stars at Gaia's distance is 0.33 %, and 1 116 parallax * distances (0.24 % of the stars) have one of a fifth or more, which the card prints as a range. * The mistake above gives 1.92 % and 17 689. */ @@ -41,8 +41,8 @@ const MAX_MEDIAN_GAIA_DISTANCE_ERROR = 0.01; const MAX_RANGED_DISTANCE_SHARE = 0.01; /** * HYG stars that keep their own row but sit at Gaia's distance, which fetchStars flags for the card - * to say "HYG, Gaia DR3 distance". Measured 8 129; the flag dropped leaves none, and nothing else - * notices — the other 62 002 carry it from their Gaia row. + * to say "HYG, Gaia DR3 distance". Measured 8 105; the flag dropped leaves none, and nothing else + * notices — the other 61 713 carry it from their Gaia row. */ const MIN_HYG_STARS_AT_GAIA_DISTANCE = 6_000; /** @@ -225,19 +225,19 @@ function validateStars(stars: StarRecord[]): void { * The other failure leaves no close pair at all, because proper motion had already carried the * two entries tens of arcseconds apart — the 2026-08-24 refresh, where HYG sat at epoch 2000.0 * and Gaia at J2016.0. What it does leave is HYG rows that found no counterpart: 36 056 of them - * against the 11 554 today, and no counterpart was possible for most of those. 8 301 of them are - * every star in the published catalogue beyond 250 pc, which the main query never downloads: 6 835 - * that Gaia's parallax puts past `ETL_GAIA_DISTANCE_PC` while Hipparcos put them inside - * `ETL_STAR_DISTANCE_PC`, and 1 466 naked-eye stars kept at any distance. The other 3 252 are what - * Gaia genuinely lacks: 1 194 brighter than V 8, which it saturates on or measures poorly, 1 832 - * between 8 and 12, and 226 fainter, 184 of them Gliese stars within 50 pc that neither of its - * queries holds. So the headroom left to the ceiling tracks the gap between those two cutoffs as + * against the 11 478 today, and no counterpart was possible for most of those. 8 307 of them are + * every star beyond 250 pc but the archive's planet hosts, which the main query never downloads: 1 660 + * naked-eye stars kept at any distance, and 6 647 fainter ones that Hipparcos put inside + * `ETL_STAR_DISTANCE_PC` while Gaia's parallax puts them past `ETL_GAIA_DISTANCE_PC`. The other + * 3 170 are what Gaia genuinely lacks: 1 204 brighter than V 8, which it saturates on or measures + * poorly, 1 804 between 8 and 12, and 162 fainter, 112 of them Gliese stars within 50 pc that + * neither of its queries holds. So the headroom left to the ceiling tracks the gap between those two cutoffs as * much as Gaia's completeness. * * This bounds a merge that went wrong, and — loosely — a Gaia download that came back short: a * truncated answer leaves the HYG rows whose counterpart it dropped without one, so survivors go * *up*, not down. Measured on the main query when it was the only one, with 10 886 survivors - * against today's 11 554: 11 004 at nine tenths of its rows, 12 711 at half, 16 258 at a third. So + * against today's 11 478: 11 004 at nine tenths of its rows, 12 711 at half, 16 258 at a third. So * this ceiling only catches a deep truncation, and `fetchGaiaStars` catches the shallower ones * with a row floor on each query. */ @@ -326,8 +326,9 @@ function validateBodies(bodies: BodyRecord[]): void { /** * The share of planets that must have a star on the map: 6 327 of 6 354 did when the ETL began - * adding the hosts the catalogue lacks from the archive's own figures, up from 2 071. The other - * 27 have no distance in either archive table, so nothing can place them; the floor leaves room + * adding the hosts the catalogue lacks from the archive's own figures, up from 2 071, and 6 328 + * once a blank sy_dist gave way to the parallax (mu2 Sco b). The other 26 have neither a distance + * nor a parallax in either archive table, so nothing can place them; the floor leaves room * for a few more of those, not for the matching or the additions to stop working. */ const MIN_HOSTED_SHARE = 0.995; @@ -357,7 +358,7 @@ function validateExoplanets(exoplanets: ExoplanetRecord[], stars: StarRecord[]): const host = starsById.get(exoplanet.hostStarId); assertCondition(host !== undefined, `Exoplanet ${exoplanet.id} references unknown star id ${exoplanet.hostStarId}.`); // A host known only as "Gaia DR3 2635476908753563008" cannot be found by searching for - // TRAPPIST-1; fetchExoplanets names it after its host, and 575 were renamed. + // TRAPPIST-1; fetchExoplanets names it after its host, and 574 were renamed. assertCondition(!isDesignation(host!), `Exoplanet ${exoplanet.id}'s host is only a designation, ${host!.name}, not named after ${exoplanet.hostStarName}.`); // The Sun has no exoplanets, so any match to it is a matching failure — historically a // blank distance column parsing as 0, which puts the host at the origin and matches Sol diff --git a/tools/etl/fetchExoplanets.ts b/tools/etl/fetchExoplanets.ts index 58102fc..e9b36a0 100644 --- a/tools/etl/fetchExoplanets.ts +++ b/tools/etl/fetchExoplanets.ts @@ -53,7 +53,7 @@ const CACHE_FILE = `exoplanet-archive-ps-${createHash('sha1').update(TAP_URL).di * each column from wherever it is best measured, so an orbit read from it could pair one paper's * eccentricity with another's argument of periastron; none of its orbital columns are asked for. * Its system columns equal the default rows' wherever both are given (6 225 distances, 6 352 - * positions, none different). What it adds is the 100 distances the default rows leave blank, + * positions, none different). What it adds is 100 of the 127 distances the default rows leave blank, * TRAPPIST-1's seven among them, 870 host masses, and the parallax, photometry and stellar * parameters below — each of which may come from a different reference. */