Skip to content

getframes 2.1.0

Choose a tag to compare

@jacotay7 jacotay7 released this 20 Jul 00:56
· 39 commits to main since this release

[2.1.0] - 2026-07-19

Added

  • Five scientific-camera presets used by the Keck tip/tilt and low-bandwidth WFS
    detector trade example: KURO 1200B, Prime 95B, Marana 4.2B-11, QHY530 Pro II,
    and Aries 6504 Pro. All five now include a wavelength-resolved qe_curve:
    Marana and Aries from Andor's/Gpixel's published data (the Aries
    QE x fill factor trace is digitized from Gpixel's graph); KURO 1200B,
    Prime 95B, and QHY530 Pro II are digitized from published manufacturer QE
    plots.
  • A quantum_efficiency override on Camera.expose_series, matching
    Camera.expose and supporting pre-integrated spectral electron-rate series.
  • A Keck/SciMeasure Little Joe CCD39 preset with the manufacturer CCD39-01
    standard-AR/no-window spectral-response curve.
  • getframes.analysis.matched_filter_centroid, a background-insensitive
    cross-correlation centroid with sub-pixel peak refinement.
  • Frame.binned(factor, method=...), post-read digital binning of a frame into
    factor x factor super-pixels (sum or mean).
  • CameraConfig.supported_binnings and CameraConfig.binning_method — binning is
    now a first-class config parameter. The Keck-trade presets set these directly and
    drop the extra.detector_modes per-binning tables; cameras with more than one
    read-noise operating point keep a slim extra.read_modes list instead.
  • Native pixel binning in the signal chain: Camera.expose, Camera.expose_series,
    and noise.simulate_frame accept binning and binning_mode. "digital"
    (post-read, the default) reads each native pixel with its own read noise then sums,
    so binned read noise grows as binning; "on_chip" (pre-read charge-domain /
    hardware binning) sums the charge before the amplifier, so a single read noise is
    applied per super-pixel. Exposed noise.block_sum for the super-pixel summation.
  • getframes.analysis.centroid now accepts a per-pixel array background (e.g. a
    master sky+dark frame) and an optional threshold (scalar or per-pixel noise
    map), making it a calibrated thresholded centre-of-gravity estimator suitable
    for a real-time controller. Both additions are backwards compatible.
  • A Keck LGS tip/tilt and low-bandwidth wavefront-sensor detector trade-study
    example, including physically sampled AO/sub-aperture PSFs, complete detector
    Monte Carlo simulations, blackbody NGS weighting of each camera's QE curve
    (--ngs-teff), the 600–950 nm TTS/LBWFS arm bandpass folded into the zero-point
    bands, Monte Carlo standard errors on every point, a per-camera closed-loop
    cadence optimisation (a physical a·f + b·f² noise model fitted to the Monte
    Carlo data, saturation-aware, against a Tyler tilt-lag disturbance model), and
    a best/worst-performer frame gallery figure beside the trade curves.

Fixed

  • Type-checking compatibility with newer NumPy (2.2): tightened stub types for
    _stamp_bounds/_radial_grid shape arguments, pinned float64 on a few
    np.linspace constructions, and dropped now-unused type: ignore comments
    around the trapz/trapezoid shim. No behavioural change.

Full Changelog: 2.0.0...2.1.0