Smithsonian / Smithsonian/layup
On a failed warm-start fit, retry with a moved seed and a cold start, and keep the better one
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 toiod="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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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