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. */