Skip to content

v2026.5.14.2

Choose a tag to compare

@Jammy2211 Jammy2211 released this 14 May 15:08
· 438 commits to main since this release

PyAutoGalaxy v2026.5.14.2

What's New

Breaking Changes

  • feat: replace Ludlow16 colossus pure_callback with JAX-native impl (#403) (#406)
    • The colossus pure_callback chain is replaced by a JAX-native port. Production no longer imports colossus. The internal mcr_util helpers (_ludlow16_cosmology_callback, ludlow16_cosmology_jax) are removed; new public entry points live in autogalaxy/profiles/mass/dark/ludlow16.py. The xp branches in the two callers (kappa_s_and_scale_radius_for_ludlow, kappa_s_scale_radius_and_core_radius_for_ludlow) collapse to single xp-aware calls. colossus moves from required to test/dev extras. See full details below.
  • fix: register DatasetModel pytree in _register_fit_quantity_pytrees (#405)
  • feat: wire ag.VisualizerQuantity through fit_for_visualization (#404)
      • Added: ag.AnalysisQuantity.fit_from(instance) — thin alias for the existing fit_quantity_for_instance(instance). Required so the autofit base Analysis.fit_for_visualization dispatcher can find a fit_from method on this analysis class (mirrors the imaging/interferometer pattern).
    • Strictly additive — no existing call site is affected. fit_quantity_for_instance retained for backwards compatibility.
  • feat: pytree registration for FitEllipse + FitQuantity (Phase 0c) (#401)
      • ag.AnalysisEllipse.__init__ and ag.AnalysisQuantity.__init__ gain **kwargs passthrough — strictly additive. Callers can now pass use_jax_for_visualization=True (and any other autofit-base Analysis kwarg) without TypeError.
      • New _register_fit_ellipse_pytrees and _register_fit_quantity_pytrees static methods on the respective analysis classes, invoked under if use_jax:. They register Ellipse, EllipseMultipole, FitEllipse, FitQuantity, and reuse register_galaxies_pytree() for the Galaxies aggregate inside FitQuantity.light_mass_obj.
  • fix: ag.AnalysisInterferometer.init kwargs passthrough (#399)
    • ag.AnalysisInterferometer.__init__ gains a **kwargs passthrough — strictly additive. Any caller that previously worked is unaffected. New: callers can now pass use_jax_for_visualization=True (or any other kwarg accepted by the autofit base Analysis) without TypeError.
  • refactor: DatasetInterp delegates to aa.interp_2d; expose xp (#398)
  • feat: add galaxy_table CSV reader/writer for galaxy populations (#393)

New Features

  • docs: add nufftax + FINUFFT citation guidance (#396)
  • test: pin FitEllipse masked-points-loop behaviour (#395)

Internal

  • docs(research): Ludlow16 JAX concentration feasibility study (#397) (#402)
  • feat: re-export TransformerNUFFTPyNUFFT (legacy pynufft NUFFT) (#391)
  • feat: dispatch autogalaxy visualizers via fit_for_visualization (#390)

Upstream Changes

PyAutoFit

  • fix: populate NUTS samples_info keys under test-mode bypass (#1260)
  • fix: stop passing dataset=None to fit_cls when sensitivity Job is complete (#1259)

PyAutoArray

  • feat: add aa.interp_2d (NumPy + JAX bilinear interpolation) (#308)
  • perf: batched transform_mapping_matrix in TransformerNUFFT (single nufft2d2 call) (#305)
  • fix(inversion): regularization_weights_mapper_dict uses correct linear_obj_list index (#304)
  • feat: nufftax-backed TransformerNUFFT as default; rename pynufft variant to TransformerNUFFTPyNUFFT (#303)
  • Make use_mixed_precision actually emit fp32 FFT for light profiles (#302)
  • feat: honor PYAUTO_SMALL_DATASETS in Imaging.from_fits (#301)

Full changelog: 2026.5.8.2...2026.5.14.2