Summary
_build_sequence splits observations into segments on observation-time gaps alone
(orbitfit.py:677, sep_dt=90.0) and takes the longest-span chunk as seq[0]. gauss_iod
then uses that chunk's first, middle and last observation (iod.py:102-104). Nothing in the
selection knows any dynamics.
Gauss's method assumes Keplerian heliocentric motion across the triplet. If the span contains a
close planetary encounter that assumption fails outright: the pre- and post-encounter
heliocentric orbits are different orbits, so no root satisfies all three observations. The
method returns nothing, or returns a spurious root which is then integrated through the
encounter — which is the grind apply_ias15_min_dt's comment describes.
The selection makes this likely rather than rare. Observing around a close approach is
continuous — inbound, closest approach, outbound — so those observations contain no 90-day
gap and form a single chunk, and being densely sampled they are a good candidate for seq[0].
Where
src/layup/orbitfit.py:677 — _build_sequence, splits on gaps > sep_dt, picks longest span
src/layup/iod.py:102-104 — gauss_iod, first/middle/last of seq[0]
Observed
(367943) Duende passes 34,053 km from Earth on 2013-02-15 (0.09 lunar distances) and its
optical arc runs 2012-02-23 to 2013-02-21, so any triplet drawn from that span straddles the
encounter. It is one of two numbered objects the full-catalogue re-fit could not fit; the
other, (308635) 2005 YU55 at 0.85 LD, now converges.
Suggested
Exclude a segment containing a close approach from seq[0], or draw the triplet from one side
of it. Layup already loads the ephemeris needed to know where close approaches are.
Related: #465, #486.
Summary
_build_sequencesplits observations into segments on observation-time gaps alone(
orbitfit.py:677,sep_dt=90.0) and takes the longest-span chunk asseq[0].gauss_iodthen uses that chunk's first, middle and last observation (
iod.py:102-104). Nothing in theselection knows any dynamics.
Gauss's method assumes Keplerian heliocentric motion across the triplet. If the span contains a
close planetary encounter that assumption fails outright: the pre- and post-encounter
heliocentric orbits are different orbits, so no root satisfies all three observations. The
method returns nothing, or returns a spurious root which is then integrated through the
encounter — which is the grind
apply_ias15_min_dt's comment describes.The selection makes this likely rather than rare. Observing around a close approach is
continuous — inbound, closest approach, outbound — so those observations contain no 90-day
gap and form a single chunk, and being densely sampled they are a good candidate for
seq[0].Where
src/layup/orbitfit.py:677—_build_sequence, splits on gaps >sep_dt, picks longest spansrc/layup/iod.py:102-104—gauss_iod, first/middle/last ofseq[0]Observed
(367943) Duende passes 34,053 km from Earth on 2013-02-15 (0.09 lunar distances) and its
optical arc runs 2012-02-23 to 2013-02-21, so any triplet drawn from that span straddles the
encounter. It is one of two numbered objects the full-catalogue re-fit could not fit; the
other, (308635) 2005 YU55 at 0.85 LD, now converges.
Suggested
Exclude a segment containing a close approach from
seq[0], or draw the triplet from one sideof it. Layup already loads the ephemeris needed to know where close approaches are.
Related: #465, #486.