Smithsonian / Smithsonian/layup

On a failed warm-start fit, retry with a moved seed and a cold start, and keep the better one

Open
#550 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
10
Forks
2
Avg merge
1d 43m
Merged PRs (30d)
58

Description

Warm-starting from MPCORB puts the seed at a modern epoch. For an object whose observations are old, that seed has a decade or more to drift before it reaches the data, and LM is handed a starting point a long way from the answer. Across 47 residue objects the seed production hands LM is a median 4.0e6 km from the converged orbit at the epoch it is used -- 9.9e6 km for a main-belt asteroid. It correlates with the seed-to-data gap (r = +0.43) and with observation count (-0.41), not with arc length (-0.05).

Two mechanisms. For weakly determined short arcs the error accumulates along-track over the propagation; for (367943) Duende, a well determined orbit, a single 33,740 km encounter amplifies a small error 31x instead.

Proposal: on failure, retry twice and keep the better fit

Both retries work, on different populations, and neither dominates:

  • moved seed -- MPCORB propagated to the observation nearest its own epoch. Converges 19 of the 20 catalogue gap objects, and 610 of a 640-object residue, rejecting fewer observations (median reduced chi-squared 182 -> 0.38). On Duende: a failure completing in 143.6 s becomes flag 0 in one iteration, 9 s.
  • cold start -- layup's own Gauss IOD, no MPCORB at all. Converges 13 of 13 main-belt gap objects; iod="auto" was identical to iod="gauss" on every row, so the BK fallback never fired.

Head to head where both fit: equivalent on the main belt (6 and 6 within 1% of MPCORB), but the moved seed converges 6 of 6 NEOs against the cold start's 3 of 6, Gauss's three-point geometry being worst there. The cold start's distinct value is that it removes the seed from the failure path entirely.

The selection criterion cannot be flag == 0

2006 SV421 converges cold at flag 0 and lands 105% from MPCORB. It has three observations, so ndof = 2N - 6 = 0 -- a flag of 0 at zero degrees of freedom is not information, and a retry that selects on flag alone will prefer it over a real fit. Require ndof > 0, and prefer on reduced chi-squared.

Caveats

Convergence is not correctness: only half the 610 land within 1% of MPCORB's semimajor axis. Accuracy splits on arc, not on the retry -- every gap object with an arc longer than two days lands within 2.4%, while five of seven one-nighters miss by more than 10%. A clean initial orbit does not manufacture information the arc does not contain.

Any kilometre seed tolerance is object specific, a property of how well the arc constrains the orbit rather than of the method: Duende converges from 741 km and fails at 1.9e6, while short-arc objects converge from seeds still 1.4e6 km out.

Measured by the USDF session on layup b6d7edd; per-object rows available.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No file or test path is named. Start at the warm-start MPCORB and LM fitting path in layup, then trace how failed fits are retried and compared; done means trying the moved-seed and cold-start alternatives on failure and selecting only candidates with ndof > 0 by reduced chi-squared.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.