From 6d81c45f45762ef3d40f45a716423f225e60ad25 Mon Sep 17 00:00:00 2001 From: Senrokai Date: Tue, 29 Sep 2026 21:20:26 +0200 Subject: [PATCH] Carry the archive's positions back from Gaia DR2's J2015.5, where it publishes them, not J2016 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fetchExoplanets placed each star it adds from the Exoplanet Archive by carrying the archive's position back sixteen years, and 4c8e4a0 said the archive publishes at Gaia's J2016. It does not: its positions are Gaia DR2's at J2015.5 although it names the DR3 source. Barnard's star in the archive, 269.4486144, 4.7379808, equals DR2 4472832130942575872 at J2015.5 to 1e-7°, and sits 5.2″ from DR3's J2016 place; the review found 66 of the 67 archive-placed stars moving over 100 mas a year within 0.21 mas of their DR2 position and none within 1 mas of DR3's. The matcher's comment made the same claim of HD 133131 and TOI-2459, whose positions are DR2's too. host-star-matching.ts now exports CATALOGUE_EPOCH and ARCHIVE_EPOCH = 2015.5, the matcher carries a query back by their difference, and fetchExoplanets uses the same two, so the epoch is written once. From cache: only the 3 277 archive-placed stars move, 2 287 of them by more than a milliarcsecond, 74 by more than 50 and TOI-2406 most, by 203 mas, half a year of its 405 mas/yr; no planet changes host. Invisible at map scale; the point is that the constant and its comments now say what the archive does. Control: ARCHIVE_EPOCH back to 2016.0 fails "carries Barnard's star from the archive's position to where Gaia DR3's goes, to a few milliarcseconds" (1 of 802), which puts the two 5.2″ apart. The GJ 15 A matching fixture is now built at J2015.5 too. fetchExoplanets' use of the constant has no test of its own; the ETL has no test harness. Co-Authored-By: Claude Opus 5.5 (1M context) --- .../shared/astro/host-star-matching.spec.ts | 21 +++++++++++++----- src/app/shared/astro/host-star-matching.ts | 20 +++++++++-------- src/assets/data/stars.bin | Bin 5466768 -> 5466768 bytes tools/etl/fetchExoplanets.ts | 12 +++++----- 4 files changed, 33 insertions(+), 20 deletions(-) diff --git a/src/app/shared/astro/host-star-matching.spec.ts b/src/app/shared/astro/host-star-matching.spec.ts index 6891d15..177d80c 100644 --- a/src/app/shared/astro/host-star-matching.spec.ts +++ b/src/app/shared/astro/host-star-matching.spec.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from 'vitest'; -import { ARCHIVE_ID_BASE, archiveStarId, buildStarNameIndex, normalizeStarName, resolveHostStarId } from './host-star-matching'; +import { ARCHIVE_EPOCH, ARCHIVE_ID_BASE, archiveStarId, buildStarNameIndex, CATALOGUE_EPOCH, normalizeStarName, resolveHostStarId } from './host-star-matching'; import { propagateProperMotion, raDegDecDistanceToXyz } from './coordinates'; import { StarRecord } from '../models/star.model'; @@ -81,13 +81,13 @@ describe('resolveHostStarId', () => { expect(id).toBe(80); }); - // GJ 15 A's archive row sits at J2016, 46″ along its proper motion from Groombridge 34's + // GJ 15 A's archive row sits at J2015.5, 45″ along its proper motion from Groombridge 34's // J2000 place — and only 16″ from an unrelated Gaia entry. Nearest-to-the-published-point - // picks the interloper; carrying the query back the sixteen years must put the planets on - // the star that actually moved there. + // picks the interloper; carrying the query back the fifteen and a half years must put the + // planets on the star that actually moved there. it('picks the star the proper motion says the query is, not the entry nearest the published point', () => { const primary = star(90, 'Groombridge 34', 4.595364, 44.022955, 3.562); - const published = propagateProperMotion(4.595364, 44.022955, 2891.5, 411.9, 16); + const published = propagateProperMotion(4.595364, 44.022955, 2891.5, 411.9, 15.5); const interloper = star(91, 'Gaia DR3 385334196532776576', published.raDeg, published.decDeg + 16 / 3600, 3.563); const id = resolveHostStarId( @@ -215,6 +215,17 @@ describe('resolveHostStarId', () => { }); }); +describe('the archive epoch', () => { + it("carries Barnard's star from the archive's position to where Gaia DR3's goes, to a few milliarcseconds", () => { + // The archive publishes Gaia DR2's J2015.5 position and motion; DR3's is at J2016. + const archive = propagateProperMotion(269.4486144, 4.7379808, -802.803, 10362.5, CATALOGUE_EPOCH - ARCHIVE_EPOCH); + const dr3 = propagateProperMotion(269.44850252543836, 4.739420051112412, -801.5509783684709, 10362.394206546573, CATALOGUE_EPOCH - 2016); + const [a, b] = [archive, dr3].map(({ raDeg, decDeg }) => raDegDecDistanceToXyz(raDeg, decDeg, 1)); + const separationArcsec = (Math.acos(Math.min(1, a.x * b.x + a.y * b.y + a.z * b.z)) * 180 * 3600) / Math.PI; + expect(separationArcsec).toBeLessThan(0.02); + }); +}); + describe('archiveStarId', () => { it('gives a host the same id whatever else the archive holds, inside the range left for it', () => { const kepler186 = archiveStarId('Kepler-186', new Set()); diff --git a/src/app/shared/astro/host-star-matching.ts b/src/app/shared/astro/host-star-matching.ts index 2ffe684..e5283a0 100644 --- a/src/app/shared/astro/host-star-matching.ts +++ b/src/app/shared/astro/host-star-matching.ts @@ -80,15 +80,17 @@ export const HOST_TRANSVERSE_TOLERANCE_PC = 0.01; /** * The archive does not say which epoch a row's position is for, and they are demonstrably * mixed: alf Tau and GJ 273 publish J2000 (the raw position sits under an arcsecond from our - * star, and carrying it back doubles the error), HD 133131 and TOI-2459 publish Gaia's J2016 - * (the carried-back position lands to 0.1″). So every query is tried at both ends — as - * published, and carried back sixteen years with the archive's own proper motion — and a star - * is judged on whichever is closer. Guessing one epoch picks companions: assume J2016 and - * Aldebaran's planet lands on Gl 171.1B, assume J2000 and GJ 15 A's land on a Gaia entry - * 15.9″ out. + * star, and carrying it back doubles the error), HD 133131 and TOI-2459 publish Gaia DR2's J2015.5 + * (the carried-back position lands to 0.1″). DR2's, not DR3's J2016, although the archive names + * the DR3 source: Barnard's star, Teegarden's Star, TRAPPIST-1 and 66 of the 67 archive-placed + * stars moving over 100 mas a year equal their DR2 position to a milliarcsecond and none their + * DR3 one. So every query is tried at both ends — as published, and carried back fifteen and a + * half years with the archive's own proper motion — and a star is judged on whichever is closer. + * Guessing one epoch picks companions: assume the later one and Aldebaran's planet lands on Gl + * 171.1B, assume J2000 and GJ 15 A's land on a Gaia entry 15.9″ out. */ -const CATALOGUE_EPOCH = 2000.0; -const ARCHIVE_LATEST_EPOCH = 2016.0; +export const CATALOGUE_EPOCH = 2000.0; +export const ARCHIVE_EPOCH = 2015.5; function knownMotion(masPerYear: number | undefined): number { return Number.isFinite(masPerYear) ? (masPerYear as number) : 0; @@ -140,7 +142,7 @@ export function resolveHostStarId( // star would pass the direction test and the last one in array order would win. knownMotion(query.pmRaMasPerYear), knownMotion(query.pmDecMasPerYear), - CATALOGUE_EPOCH - ARCHIVE_LATEST_EPOCH + CATALOGUE_EPOCH - ARCHIVE_EPOCH ); const carried = raDegDecDistanceToXyz(carriedBack.raDeg, carriedBack.decDeg, 1); diff --git a/src/assets/data/stars.bin b/src/assets/data/stars.bin index a28de6d7fac9184da73bf3dfaefd4f99c276d6cb..7dad89dc25266450be5e4c8c94725c3cd5efb59e 100644 GIT binary patch delta 30918 zcmWh!c{o*H7tTyV=8!2wA*2k+aQE7XQn|NDrDSNLLUTVEa*?qVj;T}#X_BG2+_U#B zLnS4ps3@9cDvkQ?_s4zidCsu+dd@z3z3+P0T8E$97e6fe#q!1Y;(Q6dBwvaz&6nZJ z^5yvB`SSb;dU<5pCVvuNi?7Ys;ZNr4^7Z)od;`8Ae+u7- zZ_GF0Pvx8P&G^&!)A{Cn3%(_P2H%Qr&9~vtYwK zg=*63S_DFIQ>ZDCrw+cB_*$Af%5CgKc3Oex`mUp7&)pOO?Ej6n)q8`6%}=u5OB*|K zdXeYIUb3Jz170i{K+TdoGWn}7JXcf4Q&$($y~ir>k%D-5i%jVBNmKAfZHklwzmacE zedEEaHj(s59)w#=Tq{@KH(cmLY}Tki>=9k)CRd2q$!ieXG(_Z|zvUdXDki(0T|)~u zA0(EF<*-NjA1J;*P9t6K;-ac}a0vP)*!6A$nY3e_pl;1Fp|$jTs>%$ChKOoBIR z(unoh1)fG}+Q9Wyqt$gvII6RjGw(ze$?r=O(EbVtW-1?is=dy_^ z9>;NFlpk|deM)^b$<8JBP{V{+Qqma+wX*wQ;q^XZHuMiJB_u*n`$X!KrH21a7((Gq zs#JA?F+SYfA{f1ASO4440e!aEgLHLvlcaZRz>$e~%++*Wbn7{?zjT8*{W=Awucv|Y z=>V!WZwG$8-Vo$ZydmB}8o2S~X_UQcHkmkM7U(o~vl6y|j{Gy?%w>d+xwcYEe|M2T z%-_dcQ@NZSp-6o}4B5n3wsGxa7Tqvlw|i`3bDvtH*on7TsV$x8Dfa;StC3DF%}Iv` zO7XC@O`XEJ+1Si(4!RS)f_OA6gtdx&Y_X0E@Gq@Hhmu!v@Ss5uU|eW`)9?-tO- zU+i&4*D6*ypqQQY#fEI2-v)OJA5!7DTliLKANy4(1BxXib!Yn1s6?-@p9S#v`A=I)c z6z{z53_BlCa`t)ydcoU~xYqM(8c3kn6m+Uup1Ab$z$AZyVDJ1w zQ21>?N4<>j^zKdQ;BiOdWfMX?c5}e?u?lUwWR7pXH39R#$4G#a5b*f5a4=hp-s0%t zSC=#(ek_9oHD7|ME|IL`ybrAA0ta?thyrjGHRyl-miT_MF*^GF@Jh7rygKald=5sO zOsbW63_Gdj66ZEqqRBI7`NuTDdQLH!mU|O+y$>X963^JeW~JLrm-eE!cICv;=rkl- zYa*A(e)fKYHi$>}qlV%{vU?yBa+%rfTqCU(>k#x{SPfF{7nAL8lt6KNI*Bbj4N*)) zJ6F|4`_vDpm8xLHj>*!Ek;XJrESxieiDlInoh08JkAqCs5^B5I7Tb9~M|H`=q=Kn! z=bFaoM&}~#s^@~0p=E-`93S%0A^=jj;&3#-Qn2RmT0ug>W#m1_4t9Q*r-t&s;0Jn) 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

-HH|hhKiBcq7K|MA<=yJ>g}fv`;?>auX6ngwqx^Q9wRRi(acLs?{wf)A ztc)OZ@jtT3Ulywo7U7g4q$w*XF6xP+od= zDcG3Y7HAAj75q1lg2W7SNYp12++h8bWT~_{Fj+T+;d@<$8!xtyyoHWzi1}Qe_f#WT zuiHr`GCjc@T=Kk3mwM)e;El3I9Pcj`!Z+dVsCdJ{j_sfpmx1h3E<(p(8``@u8|DP4 z(t4daxL=UN+UGffZ~1Zdn5;6K^D84OlI}p@aT_$@t~M7Jx+8=e^{bhJ5Kb3gmF0;4 zad|Xe21#U>_Em_BG=%HJwP^584?A1OnsnDCL+|<{NbE!?bTBVMI9fN%iseN&bB97r z-9+M=7$I5Mr;K7~HuSAx45y}PA1bqrem#jDQ zux|%%c6U5m`Y9UO9=r-4r&-Xlws3sVD2rY6E*!RUN6kqX9tV}vOQ_5PV?3hArH>xt zoRlvEKwy0jEtSnB--|D>-Hc-xw{3U(UBo@(cA{&EU)iB8;;_FX2i0dd5iiaM8ao&V z&-S|GUC#3KWmTm0U+CLnb#z|E~lE@dGy>K_6m6bdElc(`k zlb1W1fSh{WNM-9{P#*ceI)f!QBrifm;8A$>(uTU^8(=0dBmwz-@g0&EU?y^h7QJ$+Q564*d|GvPS$}u$ReTs;rro;WCs)8N=4hWwVPZP$E z3ju=#)2NP{6z=cjBygMmlAU8JIN2~2EM{=W2CkOHA_JmW^i?hm%G-_M@efoP#RW7T z*Jywxa_gXE`b@gVlFNVyP9mx2qT&05b~GaCgFZ3Y;T)z{l@SCga;XsR3NUo!GU>K@ z4xSvg`gDp7EzIX*_Yn)aZ-_hYjcE?&tA#%L2WZ{bwQ1`|g z)Jh~N{1d~++hxFhYzqCNZisJwodSK5lW1}LM7-tVDQMs5NiBaN{Ea&lZ|2s0u-jMz znMh2b+FA>Ns+IF(u8HDYzu%mb*DHdrt)4G?kc?Xy0?QmH(Kj7(SX$i#z>% delta 30918 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 KFmP^chyMX_hf$gU diff --git a/tools/etl/fetchExoplanets.ts b/tools/etl/fetchExoplanets.ts index 7b91288..7d1f1c0 100644 --- a/tools/etl/fetchExoplanets.ts +++ b/tools/etl/fetchExoplanets.ts @@ -2,7 +2,7 @@ import { createHash } from 'node:crypto'; import { writeFileSync } from 'node:fs'; import { propagateProperMotion, raDegDecDistanceToXyz } from '../../src/app/shared/astro/coordinates'; -import { archiveStarId, buildStarNameIndex, resolveHostStarId } from '../../src/app/shared/astro/host-star-matching'; +import { ARCHIVE_EPOCH, archiveStarId, buildStarNameIndex, CATALOGUE_EPOCH, resolveHostStarId } from '../../src/app/shared/astro/host-star-matching'; import { temperatureToColorIndex } from '../../src/app/shared/astro/spectral'; import { ExoplanetRecord } from '../../src/app/shared/models/exoplanet.model'; import { isDesignation } from '../../src/app/shared/models/star-catalog'; @@ -87,12 +87,12 @@ const DISTANCE_ERRORS_CACHE_FILE = `exoplanet-archive-disterr-${createHash('sha1 const ARCHIVE_SOURCE = 'exoplanet-archive'; /** - * The archive's positions are at Gaia's epoch, J2016, not the catalogue's J2000: of the 746 - * matched hosts moving over 100 mas a year, 741 sit nearer their star once carried back sixteen - * years (a median 0.11″ from it, against 3.47″ as published). The matcher tries both epochs; a - * star placed from the archive has to pick one. + * The archive's positions are at Gaia DR2's epoch, J2015.5, not the catalogue's J2000 (see + * `ARCHIVE_EPOCH`): of the 746 matched hosts moving over 100 mas a year, 741 sit nearer their star + * once carried back (a median 0.11″ from it, against 3.47″ as published). The matcher tries both + * epochs; a star placed from the archive has to pick one. */ -const ARCHIVE_TO_CATALOGUE_YEARS = 2000 - 2016; +const ARCHIVE_TO_CATALOGUE_YEARS = CATALOGUE_EPOCH - ARCHIVE_EPOCH; /** As in `fetchStars`: faint, for a host the archive gives neither a V nor a G magnitude. */ const UNKNOWN_MAGNITUDE = 15;