Skip to content

feat(telescope): export scientific products, body maps and sphere views - #423

Draft
alowpoly wants to merge 8 commits into
mainfrom
feat/product-science-qualification
Draft

alowpoly wants to merge 8 commits into
mainfrom
feat/product-science-qualification

Conversation

@alowpoly

@alowpoly alowpoly commented Sep 20, 2026

Copy link
Copy Markdown
Contributor

The telescope CLI can now turn a delivered scientific product into figures and reusable data, project a supported measurement onto its target, and export that map as one self-contained HTML sphere.

telescope outputs DELIVERY/result.json
telescope export DELIVERY/result.json --output band-image --hdu 1 --band 4.2,4.3 --uncertainty independent --out MEASUREMENT
telescope project MEASUREMENT/output.product.json --geometry navigation.json --out MAP
telescope export MAP/map.fits.product.json --output sphere --out SPHERE

What ships

  • Five native exports: image, pixel spectrum, band image, aperture spectrum and continuum-subtracted feature map. Outputs include FITS/ECSV, PNG/SVG, CSV and hash-pinned processing records. PNGs have transparent backgrounds; figures are cropped to their chart, labels and legend with a small gutter.
  • Surface projection: explicit navigation, pinned SPICE kernels and registration evidence; nearest sampling preserves measured value/error pairs and masks unseen cells.
  • Portable sphere: the target's existing standard css.earth sphere—the same rendering lane as Mercury—with its prepared geometry, physical scale, camera and shared controls. CSS, JavaScript and images are embedded; no network requests or startup flight. Measurement colours are unlit.
  • Shared metadata qualification: source and reducer paths read units, wavelength axes, uncertainty/masks and applicable beam evidence. Exact CRDS/ISIS reference retrieval and PDS metadata fixes support that path; missing facts remain unresolved.

Astropy owns scientific array/WCS/unit handling and serialization; Matplotlib owns figures; PlanetMapper/SpiceyPy own navigation and mapping; the existing PolyCSS runtime owns the sphere. css.earth owns selection, measurement meaning, qualification and provenance. No Cubeviz UI or parallel renderer.

Examples

Europa: surface map → actual HTML sphere. JWST programme 1250, 4.2–4.3 µm mean brightness (MJy/sr), pinned disc fit, emission angles ≤65°. The GIF shows the exported HTML rotating through its shared drag controls (61 captured frames, 12.5 fps playback). Grey means unobserved. Projection uses the navigation ellipsoid; display uses Europa's prepared reference sphere.

Europa projected brightness

Europa standalone HTML sphere rotating

Eris: five exports from one pinned JWST NIRSpec IFU cube. These numerical outputs are unchanged by the sphere work. Source, selections and reproduction commands.

Image: plane 95, 2.2997 µm, MJy/sr. The diamond is the sampled sky field.

Eris native image

Pixel spectrum: pixel (25, 27), with supplied ±1σ uncertainty.

Eris pixel spectrum

Band image: wavelength-weighted mean, 2.2–2.4 µm, MJy/sr.

Eris band image

Aperture spectrum: rectangular-region mean minus background mean; surface brightness, without aperture correction.

Eris aperture spectrum

Feature map: signed 2.30–2.34 µm continuum-subtracted integral, MJy µm/sr. This does not establish chemical identity or detection significance.

Eris feature map

Evidence and limits

Independent numerical comparisons check native samples, band/aperture/feature arithmetic, masks and units. The Europa report records map/error preservation, emission masking, identity with the existing prepared scene, embedded assets and real control binding. Browser checks cover rendering, rotation, wheel zoom and unchanged camera distance on the first drag. The GIF illustrates interaction; it is not a frame-rate measurement or a pixel-parity claim.

  • Native export checks: 17 focused tests passed; Eris exports regenerated at 68ff98cebe match the earlier oracle-checked CSVs. Projection checks: 9 passed. The current presentation update regenerates all six examples: all five Eris CSVs and all Europa map/error/emission values remain identical.
  • Sphere runtime (f1fe02866a): scoped TypeScript and renderer build passed; renderer validation 10 passed, 2 failed due to missing local Tuttle/Haumea runtime fixtures. The zero-duration transition regression passed. Scoped TypeScript also passes for the current transparency/cropping update; PNG alpha and approximately 19-pixel gutters were checked, and the figures were inspected in the browser.
  • Earlier local survey (63ba233956): 16 targets exercised, 15 delivered; Haumea correctly refused the requested optical product. This was not fresh all-archive discovery.

Missing samples stay missing. Aggregate uncertainty requires an explicit independence assumption; covariance, navigation/beam uncertainty and temporal smearing are not propagated. Request satisfaction remains separate from artifact verification: projection does not qualify surface publication or establish measured PSF resolution.

Still unavailable: PDS/ISIS figure exports and nebula point/volume handoffs. Sphere export requires a complete embeddable standard body package; Mercury's interior asset closure is a known refusal. Native images have a one-million-spatial-pixel limit.

CLI usage · Scientific contract, independent references and limitations

@alowpoly alowpoly changed the title feat(telescope): qualify product science and export images and spectra feat(telescope): qualify product science and export cube measurements Sep 20, 2026
@alowpoly alowpoly changed the title feat(telescope): qualify product science and export cube measurements feat(telescope): qualify native products and export portable scientific outputs Sep 20, 2026
@alowpoly alowpoly changed the title feat(telescope): qualify native products and export portable scientific outputs feat(telescope): export scientific products, body maps and sphere views Sep 20, 2026
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