1. Overview

Even in the largest ground-based telescopes, distant asteroids are unresolved point sources smaller than a single pixel. The only direct observable is how that pixel's brightness $I(t)$ varies over time as the body rotates in sunlight—a 1D photometric time-series known as a lightcurve:

  • When the asteroid's broad side faces the observer, its projected sunlit cross-section is maximized and the pixel brightens.
  • When its narrow end faces the observer, its projected area is minimized and the pixel dims.
  • Across multiple apparitions, as the asteroid and Earth move along their orbits, the spinning body is observed across varying solar phase and aspect angles.

AstroMorph solves two coupled inverse problems directly from archival telescope lightcurves (DAMIT and ALCDEF .txt files):

  1. 3D Shape Reconstruction (Tab 1): Reconstructs the 3D polyhedral geometry of the rotating asteroid from its 1D brightness time-series.
  2. Residual Companion Detection (Tab 2): Subtracts the reconstructed 3D shape's rotational reflection from raw telescope photometry to isolate mutual-eclipse transits caused by orbiting companion moonlets.
┌──────────────────────────────────────────────────────────────────────────────┐
│                   1. Archival Telescope Photometry (Input)                   │
│       DAMIT & Minor Planet Center ALCDEF Multi-Night Lightcurves I(t)        │
│             Unresolved 1-Pixel Brightness Time-Series + Ephemeris            │
└──────────────────────────────────────┬───────────────────────────────────────┘
                                       │
                                       ▼
┌──────────────────────────────────────────────────────────────────────────────┐
│              2. Stage I — Evolutionary 3D Shape Inversion (Tab 1)            │
│                                                                              │
│   • Geodesic Icosphere (162 Vertices, 320 Facets, 24 Spherical Harmonics)    │
│   • Vectorized Lommel-Seeliger + Lambert Disk-Integrated Radiative Transfer  │
│   • Dual-Manifold Memetic Evolution (N = 56 Population + LM Local Polish)    │
│   • Converges from Uniform Sphere (Gen 0) to 3D Polyhedron (86–92% Match)    │
└──────────────────────────────────────┬───────────────────────────────────────┘
                                       │
                                       ▼
┌──────────────────────────────────────────────────────────────────────────────┐
│            3. Stage II — Two-Stage 3D Shape Subtraction (Tab 2)              │
│                                                                              │
│     Row 1: Observed Telescope Lightcurve            I_obs(t)                 │
│   − Row 2: Reconstructed 3D Primary Reflection      I_3D(t)                  │
│   ──────────────────────────────────────────────────────────────────────     │
│   = Row 3: Residual Photometric Time-Series         ΔI(t) = I_obs − I_3D     │
│                                                                              │
│   • Single Monoliths (Eros, Kleopatra, Apophis)  ──▶  Flat Baseline (< 2σ)   │
│   • Eclipsing Binaries (Tama, Lundia, 1999 DJ4)  ──▶  Mutual-Eclipse Dip     │
└──────────────────────────────────────────────────────────────────────────────┘

2. System Architecture & Methodology

Stage 1: Evolutionary 3D Shape Reconstruction (Tab 1)

Because disk-integrated sunlight is reflected simultaneously by hundreds of tilted surface facets, a 1D lightcurve cannot be inverted analytically in closed form. AstroMorph solves the inverse problem using a Memetic Evolutionary Strategy that pairs population-based search with gradient-based local refinement:

  1. Geodesic Mesh Initialization (Generation 0): Each candidate asteroid is initialized as a 162-vertex, 320-facet geodesic icosphere. Its genome encodes 24 low-frequency Spherical Harmonic coefficients ($\ell \le 4$) alongside 162 local vertex radial displacements, allowing the mesh to deform smoothly into triaxial ellipsoids, contact binaries, curved monoliths, or oblate rubble piles.
  2. Population Evaluation (N = 56 Candidates): In every generation, all 56 candidate meshes are illuminated and rotated under the exact solar and geocentric viewing vectors recorded in the archival telescope files. Disk-integrated brightness is computed across all visible facets and compared against the observed multi-night photometry.
    • The objective function enforces two physical constraints: Laplacian surface smoothness (preventing unphysical high-frequency spikes) and principal-axis rotational stability (requiring maximum moment of inertia about the spin axis so the body does not precess or tumble).
  3. Selection, Differential Crossover & Memetic Polish:
    • The top 14 elites survive each generation and recombine via Differential Evolution crossover.
    • To accelerate convergence, elite trajectories also execute a damped Levenberg-Marquardt step along the numerical Jacobian of the forward scattering model.
    • Within ~30 generations, the population converges onto the asteroid's 3D geometry—achieving 86%–92% volumetric match against radar and spacecraft reference scans without accessing the 3D scan during optimization.

Stage 2: Two-Stage Subtraction for Companion Discovery (Tab 2)

Approximately 15% of near-Earth asteroids are binary systems hosting a smaller orbiting moonlet. Detecting these companions in optical photometry is difficult because the primary asteroid's irregular 3D shape induces 20%–60% rotational brightness variations that mask the 15%–25% attenuation dips produced when a companion transits or occults the primary.

AstroMorph separates the two signals on Tab 2:

  1. Row 1 (Observed Lightcurve): The brightness time-series recorded at the telescope.
  2. Row 2 (3D Shape Reflection): The rotational brightness curve generated by the 3D primary shape reconstructed on Tab 1, aligned to the out-of-eclipse rotational baseline.
  3. Row 3 (Residual Difference): Point-by-point subtraction ($\text{Row 1} - \text{Row 2}$):
    • Single Monolithic Bodies (433 Eros, 216 Kleopatra, 99942 Apophis): The primary rotation wave cancels out, leaving a flat baseline (1%–3% residual scatter).
    • Eclipsing Binary Systems (1089 Tama, 809 Lundia, 1999 DJ4): The primary rotation wave cancels on the baseline, isolating a distinct mutual-eclipse dip (−15.7% to −26.3%).
    • Companion Sizing: Because the fractional flux drop during an occultation scales with the secondary-to-system cross-sectional area ratio, the eclipse depth directly yields the companion's diameter. On unvisited near-Earth asteroid 1999 DJ4, AstroMorph measures a −15.71% dip (8.7σ) and derives a 170.5 m companion—matching the published value of 170 ± 18 m (Pravec et al. 2006).

3. Ruling Out 3D Shape Artifacts

Three physical constraints distinguish a genuine orbiting companion from an unmodeled feature on a single rotating body:

  1. Rotational Periodicity: Any unmodeled crater, ridge, or 3D shape error is fixed to the asteroid's surface and must repeat on every rotation cycle. On 1999 DJ4 ($P_{\text{rot}} = 2.514\text{ hr}$), the 8-hour telescope session spans more than three full rotations. A surface artifact would appear three times across the session; instead, the residual remains flat across the first two rotations (Hours 0–5) and attenuates only during the third rotation when the companion transits.
  2. Hemispheric Cosine Integration: Disk-integrated photometry integrates reflected light over an entire visible hemisphere. Even a sharp topographic step remains in view across $180^\circ$ of rotation, producing a broad sinusoidal modulation rather than a localized boxcar drop on a flat baseline.
  3. Null-Control Benchmarks on Extreme Geometries: On highly elongated, non-convex asteroids—216 Kleopatra (2.7 : 1 metallic dog-bone) and 433 Eros (curved banana)—two-stage 3D subtraction yields a flat 1%–3% residual (1.1σ–1.7σ) with zero false detections.

4. Archival Benchmark & Discovery Results

All targets in data/ load archival multi-night telescope photometry (.lc.txt from DAMIT and .alcdef.txt from the Minor Planet Center ALCDEF archive).

  • Cataloged Benchmarks (Green Tabs 1–4): Evaluated against published .obj reference polyhedra.
  • Unvisited Predictions (Gold Tabs 5–6): Unvisited near-Earth objects (ground_truth_mesh = null), evaluated by Pareto ensemble convergence.
Asteroid Category Archival Telescope Dataset 3D Match / Convergence Lightcurve Fit Residual Dip Detection SNR Derived Companion $D_2$ Published Literature $D_2$
1089 Tama Cataloged Benchmark tama_1089_damit_lc.txt (92 nights, 6,412 pts) 89.9% 96.4% −22.88% 12.7σ 6,173 m ~6,500 m (Behrend et al. 2006)
809 Lundia Cataloged Benchmark lundia_809_damit_lc.txt (9 campaigns, 3,077 pts) 91.5% 92.3% −26.28% 8.6σ 4,665 m ~6,100 m (Kryszczyńska et al. 2009)
216 Kleopatra Cataloged Benchmark kleopatra_216_damit_lc.txt (55 nights, 2,638 pts) 87.8% 95.0% −1.93% 1.1σ (Flat) None Optical file pre-filtered by DAMIT
433 Eros Cataloged Benchmark eros_433_damit_lc.txt (118 nights, 6,473 pts) 86.2% 86.4% −3.04% 1.7σ (Flat) None None (Single Monolith)
99942 Apophis Unvisited (Gold) apophis_99942_damit_lc.txt (22 nights, 976 pts) 94.6% 93.8% −1.14% 0.6σ (Flat) None None (Single Body)
1999 DJ4 Unvisited (Gold) dj4_85938_alcdef.txt (2004-03-21, 108 CCD pts) 99.7% 99.4% −15.71% 8.7σ 170.5 m 170 ± 18 m (Pravec et al. 2006)

Note on 216 Kleopatra: Kleopatra possesses two small outer moons resolved via VLT adaptive optics, but their orbital plane rarely eclipses and DAMIT pre-filtered transits out of kleopatra_216_damit_lc.txt. AstroMorph reports the flat 1.1σ optical residual directly from the file.


5. Quickstart

chmod +x run.sh
./run.sh

Open http://127.0.0.1:8002 in your browser.

Run Automated Test Suite

.venv/bin/pytest -v

6. Infrastructure & Integrations

  • Tiger Data Cloud (backend/db.py): Persists asteroid_catalog, lightcurve_observations, evolution_generations, prediction_ledger, and moonlet_discoveries into TimescaleDB / PostgreSQL hypertables with automatic local SQLite fallback.
  • Snowflake Cortex REST API (backend/ai_voice_clients.py): Live llama3.1-70b inference analyzing 3D moment-of-inertia ratios, YORP thermal spin-up drift, and interactive astrophysics Q&A.
  • ElevenLabs Audio (backend/ai_voice_clients.py): Studio-grade eleven_multilingual_v2 British science narration and scribe_v1 speech-to-text microphone queries.
  • HRT Quantitative Forecasting Engine (backend/quant_predictor.py): Evaluates out-of-sample lightcurve predictions across the top-12 Pareto shape ensemble using 90% credible intervals, Brier Score, Continuous Ranked Probability Score (CRPS), and a 10-bin Reliability Diagram.
  • NASA JPL Horizons DE441 Live Ephemeris (backend/catalog.py): Queries ssd.jpl.nasa.gov/api/horizons.api for live geocentric distance (AU), apparent magnitude, and light-time delay.

Built With

Share this project:

Updates

Submission history