Skip to content

Restore full Vetstar feature set to VetStar Pi (minus multi-sector + … - #38

Merged
eagnespuerto merged 1 commit into
mainfrom
feature/vetstar-pi
Aug 18, 2026
Merged

eagnespuerto merged 1 commit into
mainfrom
feature/vetstar-pi

Conversation

@eagnespuerto

Copy link
Copy Markdown
Owner

…joint fit)

Vendors the complete backend/app package into pios/vetstar_pi so the Pi port now drives the same code paths as the cloud studio, dropping only the two features that don't belong on a Pi:

  • Multi-sector representative-picker: two-pass "fetch every sector, score, re-run the winner" loop keeps too much per-sector state live to fit the 1 GB budget. The multi-sector orchestration in pipeline.py and the multi-sector PDF builder in report.py are excised.
  • Joint TESS + Gaia PSPL fit: research-tier online-only workflow from Harris+2026 that only makes sense when the joint pipeline is running continuously. fit_pspl_joint and analyze_event_joint stripped from microlensing.py. The Gaia Alerts fetcher stays — the GUI's Classifier tab loads Gaia-band curves directly for the single-band fit.

Everything else in the cloud studio is now here and drives the same functions:

  • MAST SPOC light-curve fetch by (TIC, sector) + sector listing
  • SPOC DVT phase-fold + fitted a/R★ + impact parameter ingestion
  • Adaptive event detection + gap handling
  • Optional sinusoidal pre-BLS detrend (spotted rotators)
  • Odd/even, secondary, centroid, shape, physics, verdict
  • Constrained BLS (known-period ± 2%) with P/2 and 2P harmonics
  • Gaia DR3 + SIMBAD + NASA Exoplanet Archive cross-match
  • HCI habitability engine (STEHM) + subscore breakdown
  • Predicted Observables (POE) + ExoFOP TOI parameter table
  • TLCM transit geometry + absolute masses
  • ExoMiner feature/view extraction (matplotlib, no TF)
  • TESScut FFI cutouts (transit) and TESScut + Gaia overlay (microlens)
  • Microlensing coverage via tess-point sector lookup
  • Gaia Alerts G-band fetcher + cone search
  • Stage-by-stage progress reporter wired to a Tk progress bar
  • Full transit + microlensing PDF reports with DejaVu Sans

GUI (Tkinter) now exposes:

  • Transit tab: Open FITS / Fetch from MAST… / List sectors…, six sensitivity knobs (threshold, min SNR, secondary σ, odd/even σ, rotation period, known period) plus high-variability detrend, four PDF-extras toggles (HCI, ExoMiner, FFI, DVT), stage/percent progress bar, embedded matplotlib canvas (LC + zoom of deepest event), verdict text pane, Save PNG / PDF / JSON. Known-object cross-match hit + HCI headline surface in the text pane.
  • Microlensing tab: two sub-tabs.
    • Classifier: Open CSV/JSON + Fetch Gaia Alert…, window entry, 3-way BIC fit, embedded plot with model overlays + BIC bar chart, full param + observable pane, PNG + PDF export.
    • Coverage: Load events CSV → tess-point per row → sortable Treeview with observability flag + ecliptic latitude + bulge blind-zone flag, observability summary bar chart, Save JSON.

CLI adds sub-commands mirroring the cloud API's non-multi-sector, non-joint-fit endpoints: mast, sectors, coverage, habitability, exominer, ffi, alerts. Everything fails soft when offline; the local transit pipeline still runs.

Requirements pull astroquery (Gaia/SIMBAD/MAST/TESScut/Vizier) and tess-point (coverage). Both ship as piwheels-prebuilt ARM wheels; install stays under 5 min on a 1 GB Pi. Peak RSS with the full PDF (HCI + ExoMiner + FFI) is ~420 MB — under half the budget. The README's feature comparison table and pios/README.md are rewritten to match the new scope.

…joint fit)

Vendors the complete backend/app package into pios/vetstar_pi so the Pi
port now drives the same code paths as the cloud studio, dropping only
the two features that don't belong on a Pi:

- Multi-sector representative-picker: two-pass "fetch every sector,
  score, re-run the winner" loop keeps too much per-sector state live
  to fit the 1 GB budget. The multi-sector orchestration in
  pipeline.py and the multi-sector PDF builder in report.py are excised.
- Joint TESS + Gaia PSPL fit: research-tier online-only workflow from
  Harris+2026 that only makes sense when the joint pipeline is running
  continuously. fit_pspl_joint and analyze_event_joint stripped from
  microlensing.py. The Gaia Alerts fetcher stays — the GUI's Classifier
  tab loads Gaia-band curves directly for the single-band fit.

Everything else in the cloud studio is now here and drives the same
functions:

  * MAST SPOC light-curve fetch by (TIC, sector) + sector listing
  * SPOC DVT phase-fold + fitted a/R★ + impact parameter ingestion
  * Adaptive event detection + gap handling
  * Optional sinusoidal pre-BLS detrend (spotted rotators)
  * Odd/even, secondary, centroid, shape, physics, verdict
  * Constrained BLS (known-period ± 2%) with P/2 and 2P harmonics
  * Gaia DR3 + SIMBAD + NASA Exoplanet Archive cross-match
  * HCI habitability engine (STEHM) + subscore breakdown
  * Predicted Observables (POE) + ExoFOP TOI parameter table
  * TLCM transit geometry + absolute masses
  * ExoMiner feature/view extraction (matplotlib, no TF)
  * TESScut FFI cutouts (transit) and TESScut + Gaia overlay (microlens)
  * Microlensing coverage via tess-point sector lookup
  * Gaia Alerts G-band fetcher + cone search
  * Stage-by-stage progress reporter wired to a Tk progress bar
  * Full transit + microlensing PDF reports with DejaVu Sans

GUI (Tkinter) now exposes:

  * Transit tab: Open FITS / Fetch from MAST… / List sectors…, six
    sensitivity knobs (threshold, min SNR, secondary σ, odd/even σ,
    rotation period, known period) plus high-variability detrend, four
    PDF-extras toggles (HCI, ExoMiner, FFI, DVT), stage/percent progress
    bar, embedded matplotlib canvas (LC + zoom of deepest event),
    verdict text pane, Save PNG / PDF / JSON. Known-object cross-match
    hit + HCI headline surface in the text pane.
  * Microlensing tab: two sub-tabs.
      - Classifier: Open CSV/JSON + Fetch Gaia Alert…, window entry,
        3-way BIC fit, embedded plot with model overlays + BIC bar
        chart, full param + observable pane, PNG + PDF export.
      - Coverage: Load events CSV → tess-point per row → sortable
        Treeview with observability flag + ecliptic latitude + bulge
        blind-zone flag, observability summary bar chart, Save JSON.

CLI adds sub-commands mirroring the cloud API's non-multi-sector,
non-joint-fit endpoints: mast, sectors, coverage, habitability, exominer,
ffi, alerts. Everything fails soft when offline; the local transit
pipeline still runs.

Requirements pull astroquery (Gaia/SIMBAD/MAST/TESScut/Vizier) and
tess-point (coverage). Both ship as piwheels-prebuilt ARM wheels;
install stays under 5 min on a 1 GB Pi. Peak RSS with the full PDF
(HCI + ExoMiner + FFI) is ~420 MB — under half the budget. The
README's feature comparison table and pios/README.md are rewritten to
match the new scope.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@eagnespuerto
eagnespuerto merged commit f452545 into main Aug 18, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant