Skip to content

September (v2023.9.18.4)

Compare
Choose a tag to compare
@Jammy2211 Jammy2211 released this 18 Sep 13:16
· 284 commits to main since this release

This release implements two major changes to PyAutoLens:

Nautilus:

For the past ~3 years, lens model fitting has used the nested sampling algorithm Dynesty.

Recently, a new nested sampler, Nautilus (https://nautilus-sampler.readthedocs.io/en/stable/), was released, which uses machine-learning based techniques to improve sampling.

Extensive testing of lens modeling with Nautilus has revealed that it:

  • Speeds up the fitting of simple lens models by ~x2 - x3.
  • Speeds up the fitting of complex lens models by ~x3 - x5+.
  • Is more robust and reliable (e.g less likely to infer a local maxima, can fit more complex lens models).
  • Controlled predominantly by just one parameter n_live, so is simpler to use than dynesty.
  • Parallelization using Python multiprocessing is more efficient than dynesty and now supports proper error handling.

Nautilus is therefore now the default lens modeler, with all workspace examples updated accordingly.

NOTE: Nautilus does not currently support on-the-fly output and to get the results of a lens model mid-fit a user can instead cancel the run (e.g. via Ctrl + C) and restart it, where the maximum likelihood model will be output.

Results Output

Result metadata was previously output as .pickle files, which were not human readable and depended on project imports, hurting backwards compatibility.

All metadata is now output as human readable .json files and dataset as .fits files, making it a lot more straight forward for a user to interpret how data is stored internally within PyAutoLens:

image

Here is an example of the search.json file:

image

All internal functionality (e.g. the sqlite database) has been updated to use these files.

All workspace documentation has been updated accordingly.

Other:

  • imaging/modeling/features split to make linear light profiles and multi gaussian expansion more visible.
  • Improved HowToLens tutorial 5 on linear light profiles.
  • Power law with multipole parameterization updated, now supports multipoles of any order (Jammy2211/PyAutoGalaxy#115).
  • Update certain requirements (e.g. PyYAML) to mitigate installation issues (rhayes777/PyAutoConf#41).
  • Lots of quality-of-life improvements thoughout the code bases.