open source astrometry · v0.2.1

Find what moves.

Piazzi finds asteroids and comets in your images, measures them against Gaia DR3 and writes reports for the Minor Planet Center — on any computer, phone or browser.

0.09″ median error, blind test≈ ZTF professional pipeline0 false detectionsMIT license
Fig. 1Field of (5157) Hindemith in the built-in ZTF example. Three epochs t₁…t₃ over 58 min; the fitted motion is 0.35″/min at PA 276.5° (JPL Horizons: 0.353″/min, 276.6°). Stars sized by magnitude.
method

From raw frames to an MPC report, with every step on the record.

An independent implementation built from the published literature. Each stage is cited in the code and documented in DESIGN.md.

01 / calibrateRead the plates

FITS or SBIG, darks and flats, mid-exposure time from the headers. Sizes are validated before any allocation.

Howell 2006
02 / detectFind the sources

Mesh background, k·σ threshold, deblending and PSF fits; uncertainties from the Cramér–Rao bound.

Bertin & Arnouts 1996 · Stetson 1987
03 / solveAnchor to Gaia

Triangle matching, then a weighted polynomial plate with a colour term and an order chosen by cross-validation.

Groth 1986 · Valdes 1995 · Lindegren 2021
04 / linkFind the wanderer

Constant-velocity linking with a chance-alignment test, plus synthetic tracking below the single-frame limit.

Kubica 2007 · Shao 2014 · Whidden 2019
Fig. 2Plate solution. Triangles of detected stars (left) are matched to triangles of Gaia DR3 stars (right) by their scale-free side ratios; the consensus transform anchors the plate.
Fig. 3Linking. Sources present at the same sky position in most frames are stars (grey). The rest are tested for a straight, constant-velocity path; the line is the fit, ellipses are 3σ.
accuracy

Measured against JPL Horizons, on public survey images.

Each reported position is compared with the JPL Horizons ephemeris. The final check was run blind, on fields no part of the development ever saw.

Fig. 4Residuals O−C (observed − JPL Horizons) for every measured target: SDSS, ZTF development, ZTF blind test. Circles mark 0.1″ and 0.3″. Points beyond ±0.6″ are drawn on the frame edge.
0.09″
median error · blind test · well-known orbits
0.03″
median error · SDSS 0.4″/px
0
false tracks · blind test
0.82
median |O−C|/σ within field · ideal 0.83
data setfieldsfoundmedian O−Cfalse
SDSS · 5-min arcs3291 %0.030″0.03
ZTF · development2075 %0.059″0.05
ZTF · blind test2176 %0.087″*0.00
Built-in example · (5157) Hindemith11/10.016″ rms0

* targets with ephemeris error under 0.05″. Fast near-Earth objects (1–20″/min) are the hardest case: 7 of 10 found in the blind test; trail fitting brought their 95th-percentile error down from 0.90″ to 0.32″. Uncertainties are calibrated — |O−C|/σ matches the Gaussian expectation on both surveys.

vs a professional pipeline

Same images, same answer as the survey itself.

ZTF and SDSS send their own measurements of these exposures to the Minor Planet Center. Piazzi's positions agree with them to 0.05–0.07″ (median) — less than the survey's own stated uncertainty — and lie as close or closer to the JPL Horizons ephemeris.

ZTF: 16 matched measurements in 7 sequences (main belt and near-Earth objects); SDSS: 44 in 22. ZTF positions compared at mid-exposure. Small sample for ZTF; SDSS is the stronger evidence.

Fig. 5Median distance to JPL Horizons on identical exposures: Piazzi and the survey's own measurements in the MPC.
what's new in 0.2

Fast movers, honest errors, and a gentler start.

detectionTrailed near-Earth objects

Matched-filter search for streaks and trail-model fits: the 95th-percentile error on fast NEAs in the blind test fell from 0.90″ to 0.32″.

uncertaintyCalibrated σ, also along trails

ADES uncertainties come from the fit covariance projected through the plate; |O−C|/σ matches the Gaussian expectation.

reportsChecked before you send

Every ADES and 80-column MPC report is validated against the format rules; each track gets its own trkSub and temporary designation.

appsSettings, languages, an example

All parameters with hints and safe defaults, English and Portuguese, and a built-in ZTF example that runs end to end — and can't be sent to the MPC.

Piazzi desktop app running the built-in example: asteroid (5157) Hindemith identified in three ZTF frames
Fig. 6The built-in example: three public ZTF frames, (5157) Hindemith found at 0.35″/min, three plates rated excellent. Example data is locked out of MPC submission.
Piazzi settings generated from the core's parameter schema, with groups, hints and defaults
Fig. 7Settings are generated from one schema in the core, so the desktop, iPhone and web apps show the same parameters, hints and defaults.
get it

One dependency-free core, every platform.

C++17 with a stable C API, shared by every app. Works offline with local catalogs; the network is only used for Gaia stars and object identification.

macOS · arm64 + x86_64Windows 10+Linux · AppImage iOS / iPadOS 17browser · WebAssemblyCLI

v0.2.1 · SHA-256 checksums · release notes. The Windows build has not been tested on real Windows hardware yet; please open an issue if you try it.

  1. Try the example first. Open Piazzi and choose Open example — no telescope or setup needed.
  2. Describe your equipment. Focal length, pixel size and your MPC code, saved as a profile.
  3. Open your frames. Three or more FITS or SBIG images of the same field; Piazzi does the rest.
  4. Review, then report. Check each measurement, send to the MPC in test mode first.
On 1 January 1801, a faint star in Taurus had moved by the next night. It was Ceres — the first asteroid.Giuseppe Piazzi · Palermo Observatory