Skip to content

arcsec v0.3.0

Choose a tag to compare

@github-actions github-actions released this 02 Oct 00:07
· 78 commits to main since this release

Added

  • Using arcsec with Siril: a README section and a website page,
    Use with Siril. Siril 1.4 has no setting
    for an external ASTAP solver, so the page covers solving with --update and letting
    Siril read the solution from the header, for single images and for sequences; tested
    with Siril 1.4.4 on Linux.
  • Distortion handling in the catalogue solve. Once a position verifies, the solver
    re-reads the catalogue about the image centre and fits a polynomial plate (up to
    cubic, order chosen by F-tests and frame coverage) by re-matching every catalogue
    star as the model improves, astrometry.net tweak style. When the field is
    measurably distorted (F ≥ 30 over a linear fit, a pixel or more of difference, the
    pairs covering the frame) the reported plate is the linear plate closest to the model
    over the whole frame instead of the one the centre's stars give, and the model's star
    pairs, which reach the corners, become WcsSolution::matched_stars. The written WCS
    stays linear and ASTAP-compatible; --sip now fits its SIP terms to those pairs. On
    the 635-image corpus: TESS 9 → 23 of 42 correct (the 12° frames' corners from
    2000–2800″ off to the ~1000″ linear floor; with --sip 15–41″), WISE with the offset
    hint 1 → 20 of 25, the synthetic lens set 3 → 10 of 10. Undistorted fields are
    unchanged.
  • A position whose quads agree strongly (≥ 50 pairs) but whose linear plate fails
    verification is retried with the distortion model before the search moves on.
  • Blind index built from the installed star database. arcsec catalog index build
    writes <db>.arcsecix (fields 0.3°–30° by default, --min-fov/--max-fov to
    choose; about 2 minutes and 290 MB from D80, nothing downloaded), and
    arcsec catalog index info describes it; catalog list and catalog verify include
    it. -i accepts it (a file, or a directory holding one) and solves blind: on the
    benchmark corpus it finds 473 of the 558 fields the hinted solver finds with the true
    centre (399 with the default 0.3° index, which drops the narrowest tier), typically
    in half a second; on fields of 0.6° and wider the Astrometry.net 4100 series finds
    70 of 254 to the index's 216, at 26 s against 0.8 s. Every position it reports passes the ordinary solver's star-level
    verification. Without --fov or FOCALLEN/XPIXSZ it searches pixel scales of
    0.3–60″/px instead of assuming 1″/px.
  • With an index installed, a search of -r 10° or more reaching more than five fields
    from the hint (such as N.I.N.A.'s blind mode, -r 180) tries the index once the first
    five fields have failed, and falls back to the full search if it finds nothing; below
    10°, and within five fields, the result is unchanged. No new flags; the ASTAP-compatible command line is unchanged.
  • Library: arcsec_core::index (format, builder, BlindIndex) and
    pipeline::index_solve; catalog::for_each_star_in_dec_band.
  • Benchmark tooling: scripts/benchmark.py --blind (hint at the antipode, so only a
    blind index can find the field), --blind-index, --no-fov, and
    seiza as a third solver (--seiza) alongside
    ASTAP, with timing options (--order, --taskset). The comparison is in
    docs/test-images.md §9.

Changed

  • A strongly distorted field that the model cannot follow over the whole frame (a
    significant cubic 3 px or more from the verified plate where there are stars, but
    too little of the frame covered to fit it there) is now refused (exit 1, no
    solution) rather than reported with a linear plate fitted to part of it. No corpus
    image is affected.

  • The catalogue solve uses at most as many image stars as the database can hold in the
    field, its density times the field's area (ASTAP's "database limit"): the brightest
    min(-s, density × area) detections. Small, crowded fields with d80 (below ~0.25°)
    no longer build their quads from stars the catalogue does not have. Library:
    catalog::database_density.

  • Sparse images solve. When the image yields fewer stars than it may use, the catalogue
    read is denser than the image; when it is at least 2.5 times denser, the catalogue
    spiral now also builds quads from the catalogue's brightest stars at the image's
    density and adds them to the full-depth ones. And an image with fewer than 194 detections needs fewer than 30 matched stars,
    15 % of its detections but at least 10; below 30 the solution must also have the
    pixel scale the hint implies (within 10 %) and a star-level rms of at most 0.5 px.
    Narrow SkyMapper frames and LCO frames with few stars gain most.
    SolveParams::fov is documented as the long side, which is what the CLI passes; the
    scale check relies on it.

  • The Astrometry.net blind path ranks its vote cells by (RA, Dec, ln scale) with the RA
    bin widened by 1/cos δ, smooths each over its neighbours and verifies the medoid of
    the strongest bucket rather than the first hypothesis of each cell.

Fixed

  • The plate fit's similarity check compared the lengths of the matrix rows, which a
    sheared plate passes: a tier-D control solved to a plate stretching the image three
    times more one way than the other. solve_plate_constants now requires the ratio of
    the plate's two singular values to be at most 1.08 (math::lsq::plate_anisotropy,
    MAX_PLATE_ANISOTROPY); the largest on any correct corpus solve is 1.027.
    ArcsecError::BadSolution::ratio now carries that singular-value ratio rather than
    the squared row-norm ratio, and its message changes accordingly.
  • A few wrong quads in the winning vote could drag the plate fit off a similarity, and
    the search abandoned the right position. The quad path now sigma-clips the matched
    quad centroids before fitting, as the triangle path already did. Nebulous and crowded fields (Coalsack, B68, M16), coarse DSS and SHASSA fields
    and TESS frames gain most.
  • --update now removes the PC matrix and SIP terms of an earlier solution before
    writing its own. Left in place, a PC matrix takes precedence over the new CD matrix
    in wcslib, astropy and most other readers, and combined with arcsec's CDELT it
    described a mirrored field: re-solving an image Siril had already solved (Siril writes
    PC + CDELT with SIP) put the corners of a 1° frame about a degree out for every
    reader except Siril. astap_cli -update leaves these keywords behind too.