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](https://github.com/Jammy2211/PyAutoLens/assets/23455639/ffd454dc-47e1-42fb-8e2a-fa807c221247)
Here is an example of the `search.json` file:
![image](https://github.com/Jammy2211/PyAutoLens/assets/23455639/96015619-22fc-47a9-af3f-c050a7d5e267)
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 (https://github.com/Jammy2211/PyAutoGalaxy/pull/115).
- Update certain requirements (e.g. PyYAML) to mitigate installation issues (https://github.com/rhayes777/PyAutoConf/pull/41).
- Lots of quality-of-life improvements thoughout the code bases.